一亩三分地论坛

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

一亩三分地官方iOS手机应用下载
查看: 2764|回复: 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, 打印出如下列表:. Waral 鍗氬鏈夋洿澶氭枃绔,
0
I_2-google 1point3acres
  I_1.1point3acres缃
I_3
-google 1point3acres
楼主写了dfs + hashmap,但是最后有个bug没有搞出来,挂了。感觉他们非常看重最后跑出来的结果,只要跑过了就一定会过,大家加油!. From 1point 3acres bbs



本帖被以下淘专辑推荐:

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 | 显示全部楼层
楼主请问有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时的一个前缀而已 . 鍥磋鎴戜滑@1point 3 acres

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

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

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:12:03 | 显示全部楼层
amethlex 发表于 2016-12-10 08:03. 1point 3acres 璁哄潧
请问lz,测试数据是怎样的?应该是严格的树吧。
.鏈枃鍘熷垱鑷1point3acres璁哄潧
是的 紫薯紫薯紫薯
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

 楼主| zhuchenchen 发表于 2016-12-18 12:12:42 | 显示全部楼层
幻灭天神 发表于 2016-12-18 11:44. Waral 鍗氬鏈夋洿澶氭枃绔,
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. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

假如没有入度为零的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<>();. more info on 1point3acres.com
        for(Level l : levels) {.1point3acres缃

            //Number of managers. visit 1point3acres.com for more.
            if(managers.containsKey(l.employee)) {
                managers.put(l.employee, managers.get(l.employee) + 1);.1point3acres缃
            } else {
                managers.put(l.employee, 1);
            }

            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) {. 1point3acres.com/bbs
                tset = new TreeSet<>();
            }
            tset.add(l.employee);
            graph.put(l.manager, tset);. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
            if(!graph.containsKey(l.employee)). From 1point 3acres bbs
                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) {

        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)) {. 鍥磋鎴戜滑@1point 3 acres
            printLevelsHelper(e, graph, level + 1);
        }
    }
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2017-4-26 18:31

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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