注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
地里汗牛充栋,LZ本人从申请到找工也是一路看着地里的文章过来的,从中得到了非常多有价值的信息和指导。现在基本上搞定了工作,也来写一点自己的体会,分享一点资料,希望能对计划在美国找SDE工作的人有所帮助。
// 由于有cracking coding interview,glassdoor等资料的存在,which LZ觉得已经有足够多的参考样本。所以本文不会包含具体的面试题。
// 出于对个人兴趣,职业规划,Compensation等的考虑,LZ投的全部都是High tech公司的SDE职位,没有投任何的类似银行IT或者公司IT support这样的职位。 . 1point3acres.com
个人背景:大陆985本科,美国东部学校cs master。从12年Fall学期开始找工作,大小公司Offer若干,最后接受了一Internet公司的Offer。
11年Fall LZ刚来美国的时候,由于本科学的不是纯cs,coding基础严重不合格,所以一来只好逼迫自己选了几门比较重的系统课,用大工作量训练自己的coding skill,也好让简历看上去不至于空空荡荡连一页都填满。第一个学期后LZ的coding确实大有提高,CS knowledge也有长进,付出的代价就是完全没有准备过任何找工作的事情(including 投简历,做题)等等。
从12年Spring开始LZ开始研究怎样找工作的问题。在这里LZ先推荐一本书:Algorithms by Robert Sedgewick & Kevin Wayne,LZ觉得不管是做review还是对于没有Data structure和Algorithm基础的人上手自学,这本书都非常不错,讲解清晰,例子也很充分,而且基本上覆盖的topic就是面试会考的topic。LZ的算法基础不算差,但是花了不到一个月review也感觉收益良多。LZ看完这本书就开始着手投面试了,找Intern的面试难度不如full time高但是肯给Interview的公司不如full time那么多,所以Intern和Full TIme哪个好找是个见仁见智的问题。LZ最后找到湾区一个Internet Company的Intern。关于找Intern LZ认为应该尽量早投,最晚Spring那个学期的开始也要投了,LZ那时候就是投得太晚吃了不少亏。
从12年Fall开始LZ开始了漫长的找工之路。这次LZ的运气不错,投的所有公司基本都给了Interview,LZ前前后后大概面了10个onsite,还推掉了几个兴趣不大的。面试最重要的就是做coding/算法题了。由于开始的早,而且前期的phone interview几乎是每天一个,LZ几乎没有时间系统的准备,那本著名的cracking the code interview只看了大概1/3,能动手写的题目更是屈指可数。但是大量的interview也给LZ积累了非常多的经验,以至于到了phone interview的后期我pick up起电话就觉得自己肯定能过。
所以在这里,我的经验就是多参加interview,实战就是最好的准备,45/90 mins fully concentrated 的实战所能带来的提高远大于线下刷题。我们不如这么想:那些面试官1个小时的salary大概有近100刀了吧,面试一次的成本怎么着也有几十刀,公司出几十刀让你涨经验升级,如此好事岂有错过之理呐! . 1point 3 acres
Interview多的另一个好处是锻炼communication skill,楼主的英语不能算好,但是到了phone interview的后期和onsite的时候可以非常顺畅并且条理清晰地和面试官交流,这一方面得益于intern的时候要一直交流还要做talk和prez,另一方面就是因为不断在interview不停地训练。 . 1point3acres
LZ本人作风比较懒散,不喜欢刷题,面试的时候基本上靠instinct idea,一边想一边和面试官讨论,figure out出一个算法再optimize。从LZ的经验来看,Interview的coding题并不会变态地难,LZ本人几乎没有碰到过完全没有思路的题目,基本上最后都能做个七七八八。倒是有一次碰到一道以前看到过的题目,怎么也想不起当时怎么做,就做得非常差。LZ觉得碰到做过的题目容易有一种依赖性,有时候反而不是好事。当然个人有个人的习惯,每个人遵照自己的习惯做好就行了。
注意LZ并不是说不要做题,一定的训练绝对是必要的,但是训练的目的更多是加强理解,举一反三,并且不至于有想法写不出implementation,而不是在面试碰到一模一样的。LZ见过有人指望面试全部碰到熟题,这就显得本末倒置了。
在Coding/算法以外最好能掌握一点cs的domain knowledge,可以是任何方向的比如database/computer vision/cloud computing/machine learning等等,可以是通过做过的project也可以是自己的兴趣,面试的时候一般在coding以外也会问一些你的兴趣在哪里这些问题,如果恰好和面试官能聊得起来的话会加分不少。
最后是一些tips:
(1) 面试的时候碰到不会做的题目,不要着急,想一想用什么data structure,需不需要用多个data structure,这些data structure怎么配合怎么相互index。有一道例题是实现一个LRU的cache。再想一下有了这些data structure怎么操作,怎样优化(比如用DP reduce 重复运算,用binary search优化search)。
(2) 注意edge case,写完code后手动地跑两个test case再finish。
(3) 多展现自己对技术的热情,可以从技术讨论中体现或者从做过的project中体现。在这里我也建议有时间的话可以参与open source project,这是展现热情的最好途径。
|