2011Fall: Software Engineer求职总结

avatar 831
simonjin
19012
35
自从2010申请出国以来,从地里获得了许许多多帮助,最近我终于马上硕士毕业,也拿到了不错的offer,在此献上求职总结一篇,希望对大家有所帮助。

背景:
复旦大学CS本科毕业。Brown CS Master, GPA 4.0/4.0。研究方向:Distributed Computing。

求职结果:
Offer: Microsoft, Amazon, Twosigma, Bloomberg,Startup若干
Rejected: Google, Facebook, Yelp

过程:
我的求职过程比较漫长,前后加起来有2个月。十月上旬主要海投,争取拿到尽可能多小公司的phone interview,同时花大量的时间练习算法,几乎一天一个phone interview,下旬开始安排dream companies的phone interview。十一月开始onsite之旅,同样先安排小公司的,我在去Seattle之前先飞了加州,在Bay Area待了1周,面了4家onsite,然后去Seattle面了M/A,最后回到东部面了Google和Twosigma。Facebook根本没理我。
这样安排的好处是减低风险,再面dream companies之前得到了足够多的练习,我没有做过mock interview,都是拿小公司练习,其实小公司的面试也一点也不简单,有些甚至根本就没想让你做出来。也因为如此,最后我面几家dream companies的时候也丝毫不紧张,有种什么题都能做的出来的感觉。坏处是战线过长,需要大量时间精力,导致我寒假需要留在学校里干活...

面试心得:
(1)算法:这个没什么好说的了,拿两本书好好练吧。我用的书有:
cracking code interview。这本书的题相对简单,比较符合面试的真实难度,覆盖面也比较广,建议至少做一遍。
programming pearl。好书,有趣,我个人非常喜欢。
ihas1337code。一个网站,上面有不少coding的题目,特点是高频,遇到不少熟题。

算法给我的总体感觉是大部分公司不会问你特别变态的算法题(F可能除外),通常都是有迹可循,而且循序渐进。我个人觉得最典型和有趣的一道题是:
给你一个整数数组
(1)找到其中两个数字使得其和为k。
(2)找到其中三个数字使得其和为k。
(3)找到其中四个数字使得其和为k。
20分钟

还有一个问题是如果给你一道题你见过怎么办?我的做法是直接告诉面试官我见过或者我知道答案。原因:(1)如果他换一道题你还能做出,不是大赚了个诚实分吗? (2)演技太差。 对演技有自信的同学可以试试看装一下啦..不过小心给自己额外心理压力哦。还有就是心态很重要,我(特别到了面试后期)都很享受算法面试,如果能让面试官感觉到你这种兴奋的状态,肯定是可以加分的。

(2) 课程知识。非常重要,我觉得我被问到的1/4的问题都是课程相关的,这些东西现想通常比较困难,所以大家不要觉得面试就是准备3个月,平时的积累也是非常非常重要的。

(3) 项目。面试必不可少的部分是问你做过的项目,有一个拿得出手的项目是很重要的,我完全是靠一个research项目撑着的,写了一个分布式计算的框架,虽然主要是实现别人的paper,代码量比较足。其实我觉得只要你做的东西make sense,是不是原创的其实不是那么重要,毕竟大家不是找research的活嘛。当然,能有点自己的东西当然最好。

最后想说一点,心态很重要,享受面试,我印象最深的一次面试是我写完算法后面试官让我分析复杂度,结果那个算法比较难分析,我们两个就一起想,想了20分钟,我在白板上算他在纸上算,最后终于算出来了,结果本来45分钟的面试我们搞了1个多小时,最后还聊了一会,这我觉得才是最成功的面试。

大概就是这样吧,恩。
  • 24
35条回复