1. 如果你要问我最简单最轻松的拿到offer的方法是什么?我会告诉你,在summer的时候找到一份大公司的internship,之后你会拿到returning offer,剩下要做的就是潇洒的high完剩下的学期。据我所知道,Amazon和facebook好像不大发returning offer。
2. internship的面试会比fulltime的难度要低,当然有些大公司的难度是持平的,一方面你有可能不费多少力气拿到一个offer,另一方面你也比别人更早的进入找工作的模式,只有好处。我的观点就是,只要你想找工作,你都是需要苦逼一段时间的,早苦逼早超生。
3. 如果你没拿到offer或者不满意你实习的公司,那么你需要接着面fulltime。我可以负责任的告诉你,你大部分拿到面试的position都是和你暑假实习相关的,老外貌似不care你在大天朝做过些什么。我自己因为实习做的大部分是frontend的东西,结果一大堆公司让我面frontend,我只想说*,最后拿到onsite当中有三家都是前端。我室友summer做了mobile的开发,结果很多职位都是这方面的。
当然,没有找到summer intern不代表你比别人落后多少,只要你有实力和机遇,拿到offer是迟早的事。
投简历,可能很多帖子都没有提到的一件事,个人认为非常的重要。
如果你投十份简历,可能拿到2次面试机会。但是你投100份呢?每一家公司你投5个职位而不是一个职位?每一家公司你投5次而不是一次呢?是的,这样你拿到面试的机会就会大大增加。还有记住,校招也是投简历的黄金时刻,潜在的机会往往比你看到的还要多。Tip:如果你被某家公司拒了,换个first name,邮箱和号码,接着投!
同时,要提到的就是,如果你有学长和学姐帮你做内推,拿到面试机会就更大了,他们也会给你很多建设性意见。没有学长学姐?那就勾搭出来吧。想说的就是network巨笔重要!人脉这玩意在美帝照样畅通无阻,本人不擅长这方面,但是什么校内啊,facebook,平日的聚会啊都是你获取资源的途径。还有linkedin和indeed,都会有很多recruiter还有很多校友,没准哪一个就是你的伯乐!!
最后就是刷题了。
当然你若是好学生,题海战术型选手,么有意见,好好刷就是了,量变肯定会带来质变的。如果你不是,懒人一个,基本不去library,和我一样,平日不到due不到考试是不会看书的,剩下的玩玩dota打打球什么的(虽然现在残了),照样是有路可走的。
原则上就是效率,用最少的时间解决最多的事情。分门别类逐一击破,放弃过于简单的和过于难的,首先攻克自己擅长的和面试中出现概率大的类别,再普及到自己的弱项以及方方面面。每个类别,经典的题目也不过就那么多,大多数都有共同的数据结构和算法,每做一题希望有举一反三的效果,先看懂代码和题意,再尝试自己写。你面哪家公司,就多看哪家公司的面经和他们家要面的范围之类的题,绝不做无用功。对于cc150,每个人一开始都刷的书,我其实是只看了几中的几个章节,对于dp和math还有一些其他章节,根本么看。与其花一两个小时搞那些自己不一定能懂的东西,还不如多花时间在自己有可能提高或者补全的方面。还有,我为了节省看书时间,主动去思考一道题的时间很少,一旦想一会没有什么好的方法,我都回去看现成的代码,甚至一个答案看不懂,再看别的版本,直到自己能写出自己认为最简洁的版本。对于那些答案就长篇大论,代码量100行以上的,我很多都自动忽略了。因为在面试中,一道题的代码量也不过30来行。我水平其实很菜,平日写个代码多是copy+paste,连个api的方法名都不记得的,对于和我水平一样的同学,需要先多练一些各个分类的基础题,这个阶段是让你能写出代码,能在之后的白板当中不会写出低级的code。
一些总结:
1. time and space complexity: 不用怀疑,必问,好好理解透彻。
2. String/Array/List/Hashtable/Tree/Heap: 熟练度和难度逐级递增,同时,minheap和maxheap被问到很多次。
3. searching和sorting:最常见的算法问题,要非常熟练。
4. recursion和dynamic programming:前者必问,需熟练,后着有时间有能力就看吧,很多公司不一定问。
5. 对于编程语言和cs的basic consept:非常重要!我知道很多cs同学和我一样学过的东西也不一定能记得多少,那就好好补一下吧,不然可能第一轮电面就跪掉,切身体验!
6. Leetcode:我用的比较多的网站,上面有很多不错的题目,以及online judge,你可以选择java或者c++在上面直接写,它有已经生成好的test case,非常方便。类似的网站应该很多,找一个适合自己的就可以。还有一些网站,例如interviewstreet,会组织定期的coding比赛,想自虐的可以参加,成绩好了可以写在简历上。
7. 面经:Glassdoor和Mitbbs
8. 无论国内国外,很多人都有自己的技术博客,个人感觉非常有帮助,都是过来人的解题思路和经验。有事没事,去注册个github或者stackflow,很多面试官会在意这些。
9. 对于你的resume和做过的项目一定要滚瓜烂熟!!因为你会一次又一次的重复这些内容在每一次的面试中。