首页 · 海外生活 · 人在美国 海外生活

【毕业季】一个CS 硕士FB、谷歌、LinkedIn和摩根斯坦利的面试总结

发布时间:2015-03-02     来源:美国留学

     

 先报下本人背景,国内中山大学软件工程本科 GPA3.2,美国NYU CS master GPA3.85,大四一年实验室经历,暑假Amazon SDE Intern。无ACM和数学竞赛经历。之前发过Amazon intern面经,很遗憾的是没拿到return offer。重新申请要等6个月的冻结期(这个相当恶心),但是我不可能等那么久了。准备情况大概是careercup 5th edition 80%的题刷过一遍,leetcode刷过95%的题(新题一出就刷,保持状态),加上glassdoor的面筋。总共面了10多家公司,挑选了几家映象比较深刻的写在这里,一共7个onsite,两个offer,分别是Linkedin和Goldman Sachs。最后从了Linkedin。

由于NYU的地理位置和校友分布,我们CS系绝大部分人的出路是NYC的金融公司。各大金融公司来校招基本无一缺席,但是西海岸的IT公司却一个没有来on-campusinterview。当然careerfair还是有来,不过多数是说些废话然后叫你网申,不太可能拿到面试。相比之下,同城的哥大机会就比我们要多很多。虽然学校没有给我们很多的机会,但是我还是凭着Amazon的intern经历拿到了不少的面试。Linkedin的profile要好好做,当成简历来写,你会发现写好后会有大量的recruiter来骚扰你。我从这里拿到了Facebook和storm8的面试。完整的Linkedinprofile是拿到Linkedin面试的必要条件。

进入正题前先来点题外话,关于我为什么没拿到return offer。我认识的一些同学和这个版上大牛都有拿到returnoffer的,但是我认为失败的教训比成功的经验更有教育意义,因此我很乐意在这里分享。Amazon的returnoffer在你实习结束的最后一天就能见分晓。Manager会找你单独谈话,告诉你的performancereview,还有offer结果。我的review是technicalskill很好,project成功地完成,但是communicationskill不行。后来我反省了一下,确实在communication上做得不够好。平时上班都是埋头干活,跟同事交流不够多。对于mentor给的codereview,我写的feedback不够详细。还有就是不会提问,有问题总是自己单干。确实,想拿到大公司的returnoffer,各方面都要做得足够好,因为3个月的时间既能让你充分地表现优点,也能让你的缺点暴露无遗。


下面重点挑选了几个大公司的面试经历,按照面试的时间顺序排列:

1. Morgan Stanley

On-campus:申请Intern的时候面过他家,当时是纯behaviorquestion。不过这次风格完全不同了,老美面试官上来寒暄两句后,就问了几道Java概念题,比如static,synchronized,interface的定义。然后拿出纸笔让coding,binarytree的遍历,还有道应用题,大概是给一个map,和一个数字t,找出map里最接近t的value对应的key。题目无比简单,唰唰地写完,面试官也给予了肯定。但是这一面还是挂了,我觉得莫名其妙。问了问同学,他们没答对题的拿到了onsite。事后想想可能是因为我后面问的问题不太妥当,令面试官难堪了。唉,那时还是面试经验不足啊,果断转化为经验值。

 

2. Linkedin

Linkedin官网投的简历,两个月了才被鸟。
Phone interview:电面前recruiter会打电话来做最基本的phone screen,然后会发给你面试官的linkedin链接,让你做好迎接老印的准备。. from: 1point3acres.com/bbs
1. 电话对面两个面试官,老中+毛子,collabedit上写题。第一题,验证一个string是不是valid number,需要考虑正负和小数,不用考虑指数。第二题也是被问烂的,print a binary tree in levelorder。感觉发挥得不好,虽然写出来了但是被指出了几个bug。当时脑袋犯糊涂了做过的题竟然都写得不顺。
2. 本来以为上一面跪了,结果一天之后HR又约了第二个电面。老印+毛子。第一题,求pow(n, x),要求O(logn)解法。第二题,maximumsubarray。第三题,实现singleton并让其thread-safe,还问到了lazyinitialiation的和volatile关键字的意义。这一面相当顺畅,没有任何差错。
Onsite:Mountainview总部,一共五轮,除了第一轮,每轮两位面试官,时长一小时,看来2v1是他们的特色。虽然每轮有两位面试官,但是其中一个是shadow,全程基本不发言,也就是来学习面试流程的,所以不用慌张。从这些shadow的脸色来看,他们其实比你更紧张。当我问他们问题的时候,他们的回答都是都结结巴巴的。当然主面试官还是相当老练的。因为签了NDA,而且拿到offer了,为了以防万一,下面的题目故意写得模糊些。

  • 老印,主要问简历,每一项都被问到,而且非常细节。要求画出实习project的架构图。

  • 老印+老印,依然是问简历,基本同上,并且要求你从algorithm和design的角度说出怎么improve你的project。面完以后被其中一个老印带去lunch interview

  • 老美+老中,两个coding题,一题简单10分钟,一题复杂30-35分钟,题目就不说了,leetcode上有类似的。

  • 老美+老中,也是两个coding题,难度基本同上。
    老美+老印,design题,如何设计一个web的多人在线游戏。写出所需的类和data member,还要画出系统架构图。

    从电面到onsite,见过的coding题都是leetcode上的类似题,所以各位应该知道我的意思。我比较惊讶的是linkedin竟然这么重视design,甚至重于coding。虽然前两轮都是问简历,但是都讨论到了很多design方面的问题。所以整个面试应该是三轮design和两轮coding。Onsite结束后一星期,recruiter打电话来follow-up,说feedback没齐。第二个星期来了口头offer,说是还要跟hiring manager电话聊一聊。聊完之后给了正式offer。我被分到的组是Core team里面的presentation team,做profile page的,也就是个人主页。感觉这个team相当不错,离用户最近,impact大,也符合我的兴趣。版上好像有个帖求证Linkedin的package,这里报一下fresh master的,以作参考:105k base + 1500RSU/4yr (worth 170k) + 10% target bonus + 10k relocation。除此之外,公司三餐免费(不过很难吃),还有免费饮料和零食,报销公共交通,入职发macbook,假期很多。公司里面的文化相对于大多数tech公司比较formal,办公室非常整洁,没有那么多geek元素。老印很多,但是我遇到的都很好。

 

3. Google

找学校的professor内推的,他是GoogleNYC的一个engineer,而且我上过他的课。内推的效果真不是盖的,不到2小时就被recruiter联系上。面的是NYCoffice的一个组,由于飓风Sandy的原因推迟了一周。

Phone interview:一下约了两轮

  • 老美,求一个数n的所有prime factor。比如输入96输出2 2 2 2 2 3。google doc写代码真心不如collabedit好用,本来15分钟可以做完的题硬是写了30多分钟。

  • 老美,先写大数加1,然后写两个大数相加,面试完发现有个小bug,但是来不及改了。

Onsite:电面后等了整整两个星期,还以为挂掉的时候,来了NYC office的onsite通知。看来对google而言,不像网上传说的那么恐怖要bug free,至少电面是这样。虽然签了NDA,但是既然挂了就无视之。

  • 老美,第一题,写一个PeekIterator,包装一个普通的Iterator,要实现peek()方法,返回当前iterator指向的元素,但是不能移动它。除此之外也要实现hasNext()和next()方法。第二题,给一个BST的Node,有父节点的指针,求该Node的下一个Node。这一面感觉不错。

  • 老美,写一个EvenIterator(汗,这年头这么流行考iterator么?),包装一个普通的Iterator,只返回evennumber。要求实现next()和hasNext()方法。这一面感觉不太好,没想到先写个简单的方法。最后时间到了还是有bug没有修改完。

  • 老中,被带去吃午饭,期间都说的中文。然后参观了下NYC office

  • 老黑,求一个逆波兰表达式的运算结果,用stack就可以。follow up是怎么处理invalid input。这一面感觉也还行。

  • 老美,一个比较复杂的题,不太方便说。大概是有一个游戏,游戏的每一步都是一个state,从这个state可以有很多种走法,从而走到下一个state,要求输出游戏结束时所有的states。我刚开始给了个暴力递归搜索加回溯的算法,然后经面试官提示加了剪枝的优化。但是即使这样我也不确定是不是最优解。

google的recruiter和interviewer都一再强调,结果不是最重要的,重要的是你的想法和交流能力。我觉得确实如此,从面试官引导你的方向就能看出他们确实想知道你的思路。即使你想不出最优解,他们也会给你很多的提示。当然了,我觉得自己面的不好,有一面相当糟,不出所料一周之后recruiter打电话来告知被拒。

4. Facebook

Recruiter从Linkedin骚扰。Facebook开始大肆扩张了,据说他们今年要达到5000人的规模(from 3000)。虽然知道自己的水平是被虐的份,但是抱着让人生完整的精神去尝试了下。
Phone interview:老印,判断一个string是否回文,要求ignore cases, spaces and punctuation,O(1) space。题目虽然简单但是edge case有点多,写出了好多bug。虽然最后写出了个正确的版本,但是跟老印交流有问题,浪费了好多时间,只做了一道题。2天后被告知挂了。

总结一下,金融公司,大型IT公司(包括hedge fund)和小型IT公司(包括一些startup)的面试风格是截然不同的。金融公司更关注你的背景,对公司的了解和兴趣,personality以及communication skill,技术要求并不是很高,而且不会问金融问题。大型IT公司大家都很了解,就是做题。但是最近design题非常流行。刷题的人越来越多,只靠算法题拉不开差距,靠design题可以秒人,因为它比较难准备。小型IT公司和startup没有资源给新员工培训,所以他们希望你能熟练掌握他们使用的技术,进去就能干活。除了刷题之外,要好好利用glassdoor了解公司的面试流程和风格,才能做到onsite时不慌不忙。虽然没拿到Amazon的return offer很懊悔,但是现在想想完全不是一件坏事。如果Amazon给我return offer估计我就从了,也不会去找更好的offer。经过了一个学期10家公司7个onsite面试的磨练,从西装革履的华尔街到阳光沙滩的硅谷,我了解了业界的发展动向,也感受了各个公司给我带来的文化冲击。这些都是我人生宝贵的经历。

本文来源一亩三分地论坛

相关文章: