悲催的hulu onsite

原帖地址:米群网

周一去面的,面完感觉没什么问题,还是收到了拒信,说system design need more experience and practice。。

第一轮,欧洲小哥,上来聊了聊简历。然后开始做题,给我一个tree,写一个算法clone这个tree。。想了一下说可以bfs或者dfs,先说了bfs加hashmap的解法。。他问可以省掉hashmap的空间嘛,我说dfs可以,但是需要递归栈空间,他说ok。。一遍写对,他有让我按照他的要求改了一下函数。。改完表示满意。。第二题是树中的节点有random pointer,如何clone这棵树。。给出了bfs加hashmap,一遍秒杀。然后给他跑了几个test case,表示信服。。。第三题是设计shorten url的high level 分布式架构。。想了一下,给出了问题的bottleneck,然后设计了 load balancer,分布式集群,如何做横向扩展,redis做cache(HULU 家是redis脑残粉,用我的经验还有一些文档介绍好好的说了这块),failover之后一致性hash,datacenter做shutdown rollback以及每天的数据更新。。然后时间到了,只是说没有时间继续聊下去了。。给我画图讲了hulu家的整个architecture,讨论了中间一部分。结束了

第二轮中国小哥,上来讲team做什么,然后看我用过不少语言,讲做项目时候如何选择语言。。讲了几分钟表示满意。。然后开始做题,,给我inorder以及preorder,如何reconstruct这棵树。。想了一下直接给了递归的解法。。一遍code秒杀。。然后他问中间寻找inorder root index那块可不可以优化,想了一下,给出了hashmap存index就可以直接O(1) 的解法,表示同意。。然后又问我给我preorder还有postorder能不能完全表示一棵树。。我举了反例,表示满意。。然后开始做system design,题目是给你一个server类,里面有几个函数,如何实现多客户端的调用模型。。。上来先问函数是读还是写,他说都有,然后以为有共享变量,给出了多线程+读写锁控制函数。。。他说没有共享变量,然后我就直接拆掉了锁。。说cpu可以和io做一个异步的模型,cpu handle多线程调用,中间用一个generic的接口封装request,解析。。io做C/S通信,中间可以blockingqueue做数据缓冲池。。然后讲完他说他就是想问这块知识。。然后问了几个问题结束。。

第三轮韩国小哥,上来带我去吃饭,吃饭期间我各种跟他很开心的扯淡。。。吃完饭之后开始面试。。是一轮coding,给我一堆string,中间包含了字母的依赖规则(不同于英文语法),让我找出其中的依赖规则并且用string输出,刚吃完饭真心脑子转的慢=。= 上来想了一下给了解法,一遍写完。。然后面试官开始挑错。。这才恍然大悟,想了一下。。。然后改点,后来又发现做backtracking的时候其实是拓扑排序。。又改了一下代码,给面试官讲了一下。。。他说是对的。。最后问我如果还有外星人的语言该用什么存储。。我一开始脑残答了ASCII,他说应该用utf-8。。想想确实,真是智商短路了。。题目还是挺trick的,但是还是自己这轮发挥水掉了。。。最后问了几个问题就结束了。。

第四轮三哥,跟第一轮的那个人一起工作,所以继续讨论shorten url,这里面让我设计更加细节的东西,上来给出了类似base64的hash算法,讲hash可以不用针对url,数据库存index可以获得更好的压缩效果。。。表示同意。。然后关于数据库,我提到了mysql,redis,mongodb,cassandra,让我深入讲一下这个数据库选择的tradeoff,cassandra不是很熟,所以讲的不是很好。。问我什么是database partition,讲了shards的概念。关于mysql问我内部更好的检索机制。。。忘了索引的东西了,所以直接跳过这块。。然后数据备份,一开始说data center,但是他说这个其实效率很低。。想了一下表示同意,然后让我想一下分布式数据库的机制。。表示经验确实不够,他说mongodb可以做分布式容错。。ok,又涨了姿势了。。最后问failover如何分配机器。。我讲了一致性hash的原理。。表示满意。。然后又给了一个coding题目,说给了一个迷宫类,随机初始点以及目的点,中间有障碍,让我写一个函数实现这个游戏,想了一下对比了dfs和bfs,说bfs会有很多duplicate,dfs更好,表示同意,由于中间没有坐标概念,问我如何存走过的点,我答可以把随机初始点设为0,0,然其他的就相应加减就好了,存到hashset里面,表示满意。。一遍code秒杀。。最后问了几个问题就结束了。。

面完hr让我等结果,这周sf有一个redis大会,很多人都是开会了就顾不上我了。。听说他家有面的超级好当场给offer的习惯,没拿到就知道自己有瑕疵。。但是在hulu的朋友还说bar没那么高,当时开挺高兴的觉得有戏。。昨天给了拒信,告知system design need more practice and experience,遂写邮件aruge说new grad这么高要求不合理blabla的。。估计没有周旋余地。

真心觉得作为new grad,这种hands on的经验肯定不会像senior那么多。。这么要求表示不理解以及无语。。anyway,move on吧。。