|
New grad一共四轮面试, 三轮coding一轮more of behavior. 四轮大概是这样的:
1. 胖乎乎的白人小哥。一道会写代码就会写的数组题 + 一道LeetCode原题,follow up是优化和分析算法复杂度。 第二题写的过程中稍微struggle了一下,正要在之前举的例子上圈圈画画时,面试官直接指着一行说你把这行擦掉就好了,然后我灵光乍现顺利地写完了~他说嗯 it works. 分析复杂度时发现我写的那个递归实在很难分析,正要列递推式时面试官两笔改成了一个简单的做法,说你分析这个吧~ 然后问还能怎么优化,我说可以用dp然后iterative,正要写递推式他说其实你一边递归一边存结果就好……然后就结束了面试…… 面试官小哥你是有多爱抢答!这一轮事后搞得我超忐忑,因为我一直觉得第二题是小哥自己抢答出来的……
2. 目测三四十岁的大叔,带了一个看上去比他还老的人来shadow... 又一道会写代码就会写的数组题 + 又一道LeetCode原题 + 给一堆SFO-ORD, ORD-SEA, SEA-JFK之类的航班,写一个程序把能连起来的航班串成一个trip,比如这里就是SFO-ORD-SEA-JFK。 前两题秒杀,第三题我先口头列举了一堆情况,有环无环啊,是全联通还是有好几个trip啊,面试官说时间不够了你先写没有环只有一个trip的吧… 于是我开始讨论如何表示航班和找起点,写了一点他说嗯you are completely on the right track你说一下后边怎么写就好了…… 我说了一种,他说其实有一种更简单暴力的啊,我说嗯简单暴力的我刚才想到了但是这种不好generalize到有环和多个trip的情况,他表示我说得对,然后结束了面试…… 至此我感觉FB的面试官都是急脾气……因为有一个代码没写完我又一次感觉有点忐忑……
3. 印度人,上来要求换到能看到钟表的一边以控制时间,然后问了十几分钟简历,我白板画图讲了一下我分布式系统的project,他简单问了几个问题后说嗯我也不知道问啥了还是做题吧。 又是一道LeetCode原题,直接写了最优解,举个例子过了一遍,代码的方法还是比较巧的不是特别简单粗暴,他让我仔细解释了原理,然后似乎还是不很确定地用手机拍了张照… 然后只剩十分钟了,出了一道面经上有过的题目,说我们只讨论做法,不用写code。感觉这种和现实有些关系的题目,最大的障碍在于理解要求,因为看过面经所以省去了理解题目的时间,直接开始说我对这个问题的分析,因为input的特点决定了我们应该用怎样的数据结构和算法,数据结构里应该存什么,算法应该怎么实现。面试官表示基本没问题。 这轮下来也很忐忑,因为只写了一个代码…… . Waral dи,
4. 又一个印度人,这轮是behavior为主。 先是问为什么要来FB,你喜欢FB的什么,我脱口而出I am so impressed by its performance in such a large scale,想要了解这是怎么做到的。然后随便说了些smart people啊,fast moving culture啊,bootcamp啊之类的套话。其实之前想了很多点,但是不知道为什么当场脑海浮现出的第一个词就是scale,不想这反倒成为了后边的一个伏笔。
然后详细地问了我的research,因为我的research实在太冷了,如果直接讲内容估计面试官会疯掉……只好从信息论发展史讲起,从香农解决的数字通信两大基本问题,到目前network information theory和过去point to point information theory的不同,为什么不能把network看成simple point to point的组合,说到这里想起当年令我对这个问题产生兴趣的一个经典例子,突然有点激动起来到白板上画了这个例子,事实证明这个例子真的很好,面试官也一下子若有所思,觉得这个cooperative的思想很厉害。举完这个例子,终于可以回到我的研究,说就是在这个背景下,我们研究的就是实践这个思想的一种方式,怎样从简单的point to point开始,构造出很长的高效率的network codes. 说到这里我再次灵!光!一!现!我说虽然这个东西现在还只在学术界有研究,但它本质上解决的也是如何scale up的问题,点题了有没有!我之前有没有说我感兴趣的就是scale问题!
然后……我就嘚瑟了起来……我说你看我简历第二个项目是个P2P问题,这也是large scale传输中的cooperate,你再看第三个分布式系统的项目是如假包换的scale consideration,你再看第四个项目这是large scale下的资源分配问题……虽然他们研究的层面和背景不同,但我们的目的都是build scalable network! 我选择FB就是因为我对这个问题有着持续的兴趣!(画外音:泥垢了……真能编……)这时候我觉得面试官似乎露出了满意的表情,于是又谦虚了起来,说这些问题都还比较学院派,肯定是无法和工业界真正的复杂问题相提并论的,这就是我想要加入FB学习的地方。面试官说不不你这些问题都很有意义。这时我觉得嗯嘚瑟得差不多了,在说多露馅之前见好就收~然后愉快地结束了这个话题~
然后面试官问了一个令我@#%^&*的问题:如果你和人合作一个项目,对方在presentation时说这些都是他自己做的,你怎么办?本着中国人和为贵的思想,我说既然我们是一个team,完成工作是第一位的,在会议上也不想把气氛搞得很尴尬,所以我肯定不会马上揭穿他。但是我也不会纵容他的行为,既然东西是我做的,他不会比我更了解这个工作,我会告诉大家,我们这个项目上进行了合作,然后对他讲的东西进行细节的补充,并且巧妙地问他一些问题,让大家看到他并不真正了解这个项目。面试官说,如果这样大家还是觉得这是他做的,你只是起到了协助作用,然后这些会影响你的promotion,你怎么办?我说那我在事后会跟经理讲清楚这件事,然后把我做的部分写一份详细的报告证明我的工作。面试官又问,那你不打算和这个人正面说一下这件事么?我这时才意识到我之前漏掉了这个点,赶紧说嗯,首先在presentation之前我们就应该商量好这些以避免这种情况,如果真的发生了,我也会跟他严肃地指出。THE END 总结就是这种问题没有什么标准答案,重要的是说清楚自己做事的思路和态度,另外面试官会层层递进追问你,这时候不要吓到,继续顺着他的引导往下讲就是。 . .и
聊了这么多之后,他突然说我们做道题吧,你喜欢什么数据结构?我顿时又@#$^&*了,这是什么问题……随口说了个hashmap,于是他写了个很简单的找相同字符串的题让我做,我说用hashmap很好写啊,他说不能用hashmap,这时我内心在咆哮:我喜欢什么你不让用什么是嘛!冷静了一会儿,思考了一下他的话外之音,然后写了另一个不用hashmap的方法,分析了复杂度。
因为这是最后一轮,面完后就拿包跟着面试官走人,全程几乎始终一张冷脸的面试官看了我一眼突然笑了出来,我问你笑啥,他指了指我的亮粉色小包说your bag is so cute -_-#….
之后各种午饭讲座参观等略下不表,只表一表他家的抹茶珍珠奶茶好好喝~ . 1point3acres
因为Oracle的deadline将至,面完后马上给HR follow up了一封邮件请求加速处理,之后几天经过了check reference等步骤,周五下午下班前终于拿到了想要的结果(之前紧张得要哭了有没有)
全程没有面到什么难题,我自己的代码能力我很有自知之明,要是问我个trie啊什么的我肯定写不出来。感觉仅有的亮点一是bug free,二是话非常非常多……每道题一定要先说思路,为什么用这个不用那个,各有什么优缺点,对各种edge case是如何兼容的,更不用提behavior关的极限扯淡……
——————————————————我是分割线————————————————————
这个帖子终于写到了最后,梳理了整个求职历程后,唯一的感觉就是自己很幸运。幸运地遇到了地里各种朋友帮我内推改简历教做题(@那谁那谁那谁那谁那谁那谁那谁),幸运地遇到好的老板没有因为我的quit对我痛下杀手,幸运地没费很大力气就拿到了很多心仪的公司的面试,最后又幸运地赶上FB这一波招人多bar低于是得以鱼目混珠。太多幸运无以为报,只好在以后的人生路途中更加努力也更多地帮助别人,实现自己说过的话:be a better person to deserve what I have got.
补充内容 (2014-11-9 21:05):
说到最后忘了最重要的一句话,面FB一定要刷面经刷面经刷面经!掘地三尺找面经!绝对有用! |