Monday, January 26, 2015

长年潜水,回馈FLG面经

发信人: ynlmk (oh~我拿什么来拯救你啊~我的黑眼圈~!), 信区: JobHunting
标  题: 长年潜水,回馈FLG面经
发信站: BBS 未名空间站 (Sun Jan 25 08:03:43 2015, 美东)

概略:从本科到PhD一直念的EE。PhD毕业后没怎么找工作就直接到一个小型research
lab做networking research待了2年多。2014年初第一次Google试水,挂在onsite上了
。到了下半年这几家的recruiter开始陆续contact我,想想也差不多是时候换一下环境
了,就安排了感恩节前一周三个电面。电面除了G都非常顺利。G的电面我自己作死,面
完觉得必须挂的。谁知道过完感恩节那周竟然三家都收到onsite通知了。当时的想法是
避免战线拖太长,所以把三个onsite都安排在元旦后第一周。计划利用圣诞/新年长假
养精蓄锐好好复习,然后一鼓作气搞定。现在回头看,这个策略这次发挥的非常出色。
三家onsite都发挥的非常好,据说feedback都不错,最后都拿到了offer,包裹也都挺
不错的(G > L > F)。

准备:我一直不认为临急抱佛脚似的突击能有多大用处。所以准备时间比较长,可以算
从2013下半年就开始了。因为不是CS科班出身,以前在学校做的也是EE里面偏数学和CS
分布式算法里面非常理论的东西,coding一直是自己的弱项。工作之后就尽可能争取跟
system implementation相关的project。做过一个cloud storage project。发了几篇
不错的paper,然后在AWS上搭了个prototype system。基本上整个project从算法设计
,系统架构,到编程实现大部分靠自己一个人做出来。这个过程中coding和system
design的水平提高了不少。之前没怎么接触过的multithread programming也好好研究
了一番。除此以外就是看CLRS,上leetcode刷题,上买买提潜水看面经和各大牛的讨论
,上infoQ之类的网站看system design的article和tech talk。Leetcode是2014年初大
致刷完第一遍,然后每周都会起码上去随机重刷3-5道题。不看之前写的code,力求每
次新写的code和算法都比之前的更精炼。Onsite前两周放假把所有能找到的Facebook的
system design的tech talk重新过了一遍。这阶段感觉算法已经很难再有提高了。所以
每天就随机做几道leetcode,纯粹为了保持手感。

另外因为LinkedIn面的是Machine Learning相关的职位,所以就结合Coursera上Andrew
Ng那门课和一本书“Pattern Recognition and Machine Learning”把ML给自学了。
Coursera上的课可以很迅速的对这个领域有一个big picture,同时对基本的算法/工
具大致了解。然后fundamental的东西就靠看书和近几年发表的牛paper来深入学习了。
这个上面断断续续花了半年时间左右。因为之前research里面optimization做的不少,
所以感觉自学起来没有原来想象中的难度大。当然也一点都不轻松就是了。

面经和感受(按照onsite顺序):

Facebook
面试前最没有好感的公司。但onsite之后好感度远超Google。所有的面试官(包括店面
的)还有recruiters都非常nice。整个公司给我很年轻很有活力的感觉。

电面:leetcode经典的all permutation和search in rotated array。一遍无bug。有
点搞笑的是我用的是java,然后面试的小白哥们就说他java不熟,让我随便写,不用太
在意grammar。我好像两道题都没有confirm是否有duplicate就直接按照没有duplicate
的case写了。到面完才突然醒悟过来。还好过了。

Onsite:
第一轮system design是一位很客气很nice的国人大哥:有很多台机器,设计一个类似
web crawler的一个系统。然后让我把每台机器上面跑的software的module diagram画
出来。然后还给了上下行带宽,让估算时间。

第二轮ninja是一位文质彬彬的很humble很nice的印度大哥:decode ways和LRU cache
。decode ways直接上了linear space的array的DP solution。LRU cache用hash map和
doubly linked list做了。出现了一下小bug在写的过程中都fix了。最后闲聊阶段想起
来decode ways的DP可以改进成用constant space,就跟他说了下。没让我写。

第三轮ninja是一个国人大哥。出了道k stat类似的题。于是就写了个quickselect的变
种。然后开始聊天,谈了些F以后打算开展什么new service之类的。聊的挺投契。

第四轮jedi是个感觉很年轻的印度小哥。人很nice很easy going。就让我介绍了我最近
做的一些project,然后就是标准的一些culture fit和behavior问题。没有其他
technical的问题。聊的挺愉快。

Facebook的onsite自己整体感觉非常顺。如果再来一次就算是同样的题目估计也很难发
挥的一样好。这给了我很大的自信,导致接下来在Google和LinkedIn的onsite中也有不
错的发挥。


Google
最大的感受就是他家的题库真大!onsite两次了,只有一道题是见过的。

电面:一位国人大哥。只做了一道题:给我一个string of nested ternary
operations例如a?b?c:d:e,让我build a tree:root是a,左子树是b?c:d对应的tree
,右子树是e。保证input都是valid的。这题用recursion的话非常容易写。但我当时不
知道发什么神经,坚持iterative更好写。结果花了半个小时死活写不出来。最后眼看
时间不多了,赶紧把recursion写了。当时以为一定挂了。可后来还是拿到了onsite。
真的非常感谢这位大哥。

Onsite:
第一轮是个刚PhD毕业半年很书卷气的白人小哥,先问了到类似text justification的
题。没啥难度,就是比较烦。做完这个问了个binary search的变种。只说了idea,没
让我写。

第二轮是个感觉挺smart挺干练的白人小伙,让我implement BigInt class和add
method。算法上也是没有难度的题目。可明显考点在于implementation上的
engineering issue,例如两个很接近INT_MAX的数相加时overflow该怎么处理。

第三轮是个挺活泼的东南亚女生。第一题是判断两个string是否anagram。轻松搞定。
然后第二题是write a class for Quadtrees,and a method to compute
intersection of two Quadtrees。因为之前完全不知道Quadtree是啥东西。花了点时
间讲解,还举了两个算intersection的例子。因为实在不熟,在写intersection的时候
想岔了一下浪费了点时间。在提示下改回来了。刚刚好赶在时间到前写完。

第四轮是个经验很丰富的白人大叔。没考算法。先让我介绍自己做过的project,然后
让我设计一个类似netflix的online movie streaming的system。最后让我挑一个
google product来improve。

第五轮是个很好玩的白人胖小哥。还没讲题目就告诉我说他要考engineering details
。第一道题目很简单就是求moving window average,但很抠细节。写完第一遍之后反
复improve了不少地方。然后第二道感觉是偏数值计算的问题:让我对很多个(say 10
trillion)个大小相近的double求和。不需要写code。因为实在没做过这方面的东西,
跟他讨论了好久才明白有普通的直接一个一个加有什么问题:当加到一定数目之后,比
如加完前1 trillion个数,再加下一个的时候,因为前面的sum的量级比新加这个数大
很多。结果新加的数就会被rounding掉,导致sum不再改变。明白了问题所在之后就简
单了,先两两相加,再把结果两两相加。。。repeat到完成。这样就能保证每次都是相
同量级的两个数相加。


LinkedIn
作为一个完全没有machine learning背景的人面一个machine learning的位置,我的经
历是绝对非典型且没有一点参考价值的,所以就不累赘了。Onsite一天下来一共六轮。
一轮coding,一轮跟hiring manager介绍自己和behavior question。其余四轮问了很
多偏数学的问题,印象最深刻是其中一轮被某位超级大牛grill得超级外香内嫩。还有
mapreduce和large scale machine learning infrastructure architecture也问到了





--
※ 修改:·ynlmk 於 Jan 25 08:11:52 2015 修改本文·[FROM: 98.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 98.]

http://www.mitbbs.com/article_t/JobHunting/32874781.html

No comments:

Post a Comment