一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

一亩三分地官方iOS手机应用下载
查看: 1855|回复: 15
收起左侧

Snapchat电面

[复制链接] |试试Instant~ |关注本帖
zhuchenchen 发表于 2016-11-23 08:07:45 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 硕士 全职@Snapchat - 内推 - 技术电面 |Failfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
上周的电面,打印级别列表。input是一个json list, 比如[ {employee: 1, manager: 2}, {employee: 0, manager: 0}, {employee: 2, manager: 0}, {employee: 3, manager: 0}], 每个element第一项是某个员工的employee id,第二项是他要report to的manager的employee id。比如上述input就是employee id为1的员工汇报给employee id为2的员工(该员工是一个manager)。给出这样一个list, 打印出如下列表:
0
I_2
  I_1
I_3

楼主写了dfs + hashmap,但是最后有个bug没有搞出来,挂了。感觉他们非常看重最后跑出来的结果,只要跑过了就一定会过,大家加油!



本帖被以下淘专辑推荐:

johnjavabean 发表于 2016-11-23 08:26:53 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
这个题原来还在出...
回复 支持 反对

使用道具 举报

 楼主| zhuchenchen 发表于 2016-11-23 08:29:18 | 显示全部楼层
关注一亩三分地微博:
Warald
johnjavabean 发表于 2016-11-23 08:26
这个题原来还在出...

晕,难道是个面经题?
回复 支持 反对

使用道具 举报

zjiang42 发表于 2016-11-24 01:11:50 | 显示全部楼层
麻烦楼主能解释一下要输出的格式吗 那个I_2是啥意思,最后是要建个tree吗 还是用tab表示等级打印出来。谢啦。要是能再稍微详细说下你的思路就更好了。同样没见过这个题的飘过
回复 支持 反对

使用道具 举报

amethlex 发表于 2016-12-10 08:03:14 | 显示全部楼层
请问lz,测试数据是怎样的?应该是严格的树吧。
求职神器indeed - 在全球最大的求职网站找找适合你的工作?
回复 支持 反对

使用道具 举报

幻灭天神 发表于 2016-12-16 02:05:16 | 显示全部楼层
楼主请问有behavior question嘛
回复 支持 反对

使用道具 举报

幻灭天神 发表于 2016-12-18 11:44:52 | 显示全部楼层
json文件的处理需要自己写嘛
回复 支持 反对

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:11:37 | 显示全部楼层
zjiang42 发表于 2016-11-24 01:11
麻烦楼主能解释一下要输出的格式吗 那个I_2是啥意思,最后是要建个tree吗 还是用tab表示等级打印出来。谢啦 ...

I_就是个打印的要求 打印employee id时的一个前缀而已

我的思路是建一个map, key 是manager id(这里等同于employee id), value是report给key的employee id,纪录一下ceo的id, 然后对map做一次dfs就好了。

补充内容 (2016-12-18 12:13):
value 是一个 id list
回复 支持 反对

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:12:03 | 显示全部楼层
amethlex 发表于 2016-12-10 08:03
请问lz,测试数据是怎样的?应该是严格的树吧。
.1point3acres缃
是的 紫薯紫薯紫薯
回复 支持 反对

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:12:25 | 显示全部楼层
幻灭天神 发表于 2016-12-16 02:05
楼主请问有behavior question嘛

有点忘记了 大噶就说了下简历上的project吧
回复 支持 反对

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:12:42 | 显示全部楼层
幻灭天神 发表于 2016-12-18 11:44
json文件的处理需要自己写嘛

要的 紫薯紫薯紫薯
回复 支持 反对

使用道具 举报

jyty 发表于 2016-12-30 02:11:13 | 显示全部楼层
感觉像是先建一个图,然后拓扑排序遍历
回复 支持 反对

使用道具 举报

jyty 发表于 2016-12-30 02:15:35 | 显示全部楼层
这个输入input还需要自己parse吗?输入的格式是list<string>?
回复 支持 反对

使用道具 举报

Cats881119 发表于 2017-1-6 12:13:10 | 显示全部楼层
这个我oracle面试也碰到过 还有follow up. 1point 3acres 璁哄潧

假如没有入度为零的node怎么办
回复 支持 反对

使用道具 举报

freemail165 发表于 2017-1-13 07:56:13 | 显示全部楼层
jyty 发表于 2016-12-30 02:11
感觉像是先建一个图,然后拓扑排序遍历

哪有你说的那么复杂
回复 支持 反对

使用道具 举报

averillzheng 发表于 2017-1-23 15:21:12 | 显示全部楼层
写了下。大家给点意见。
    static class Level{
        int employee;.鏈枃鍘熷垱鑷1point3acres璁哄潧
        int manager;
        Level(int employee, int manager) {
            this.employee = employee;
            this.manager = manager;
        }
    }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
    public static void printLevels(List<Level> levels) {
        if(levels == null) return;
        Map<Integer, Integer> managers = new HashMap<>();
        Map<Integer, TreeSet<Integer>> graph  = new TreeMap<>();
        for(Level l : levels) {

            //Number of managers. 1point 3acres 璁哄潧
            if(managers.containsKey(l.employee)) {
                managers.put(l.employee, managers.get(l.employee) + 1);
            } else {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                managers.put(l.employee, 1);
            } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

            if(!managers.containsKey(l.manager)) {
                managers.put(l.manager, 0);
            }

. From 1point 3acres bbs            //Add all employees of managers
            TreeSet<Integer> tset = graph.get(l.manager);
            if(tset == null) {. more info on 1point3acres.com
                tset = new TreeSet<>();. 鍥磋鎴戜滑@1point 3 acres
            }
            tset.add(l.employee);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
            graph.put(l.manager, tset);
            if(!graph.containsKey(l.employee))
                graph.put(l.employee, new TreeSet<>());. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
        }

        for(int key : managers.keySet()) {
            if(managers.get(key) == 0)
                printLevelsHelper(key, graph, 0);
        }
    }

    static void printLevelsHelper(int key, Map<Integer, TreeSet<Integer>> graph, int level) {. From 1point 3acres bbs
. 1point 3acres 璁哄潧
        StringBuilder sb = new StringBuilder();. from: 1point3acres.com/bbs
        for(int i = 0; i < level; i++) {
            sb.append("-");
        }
        System.out.println(sb.append(key));

        for(int e : graph.get(key)) {
            printLevelsHelper(e, graph, level + 1);
        }
    }
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-2-26 15:51

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表