近期论坛无法登录的解决方案


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

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

Snapchat电面

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

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

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

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,测试数据是怎样的?应该是严格的树吧。
回复 支持 反对

使用道具 举报

头像被屏蔽
幻灭天神 发表于 2016-12-16 02:05:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽
幻灭天神 发表于 2016-12-18 11:44:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 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就好了。.鏈枃鍘熷垱鑷1point3acres璁哄潧

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

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:12:03 | 显示全部楼层
amethlex 发表于 2016-12-10 08:03
请问lz,测试数据是怎样的?应该是严格的树吧。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
是的 紫薯紫薯紫薯
回复 支持 反对

使用道具 举报

 楼主| 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;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
        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
            if(managers.containsKey(l.employee)) {
                managers.put(l.employee, managers.get(l.employee) + 1);
            } else {
                managers.put(l.employee, 1);
            }. From 1point 3acres bbs

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

            //Add all employees of managers
            TreeSet<Integer> tset = graph.get(l.manager);
            if(tset == null) {
                tset = new TreeSet<>();
            }
            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);
        }
    }.1point3acres缃

    static void printLevelsHelper(int key, Map<Integer, TreeSet<Integer>> graph, int level) {
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
        StringBuilder sb = new StringBuilder();
        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);
        }
    }
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-6-26 12:01

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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