《数据科学面试40+真题讲解》,K神本年度最后一次开课


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 3737|回复: 15
收起左侧

Snapchat电面

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

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

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

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

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没有搞出来,挂了。感觉他们非常看重最后跑出来的结果,只要跑过了就一定会过,大家加油!
. 鍥磋鎴戜滑@1point 3 acres


本帖被以下淘专辑推荐:

johnjavabean 发表于 2016-11-23 08:26:53 | 显示全部楼层
这个题原来还在出...
回复 支持 反对

使用道具 举报

 楼主| zhuchenchen 发表于 2016-11-23 08:29:18 | 显示全部楼层
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就好了。. visit 1point3acres.com for more.

补充内容 (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

假如没有入度为零的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) {
. more info on 1point3acres.com
            //Number of managers
            if(managers.containsKey(l.employee)) {
                managers.put(l.employee, managers.get(l.employee) + 1);
            } else {. visit 1point3acres.com for more.
                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);.鏈枃鍘熷垱鑷1point3acres璁哄潧
            graph.put(l.manager, tset);. visit 1point3acres.com for more.
            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) {

        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < level; i++) {
            sb.append("-");
        }. 1point3acres.com/bbs
        System.out.println(sb.append(key));

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

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-11-25 04:18

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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