Google · Amazon
几度面试失败后, 我是如何拿到Google和Amazon offer的?
大家好我是Jialong,找工作大约有半年的时间,到目前为止拿到了Google和Amazon的offer。
和班里其它转专业的同学不同,我本科、研究生都是学CS的。虽然本科和研究生都还是不错的学校,但自认为自己并不是对计算机有很高天赋的那种。能拿到这些offer,真的是有点幸运。
几度面试碰壁后,遇见来Offer
和来Offer结缘是通过Jinhui学姐的介绍。
可能是由于自己找实习的方法不对,去年找实习的时候几度碰壁,找到最后也只拿到了两个面试,fitbit和hulu。面试时,也因为问的题目都特别怪异,结果都挂掉了。
Jinhui学姐是一个十分热心十分善良的学姐,她在来Offer拿到Google offer后,为我推荐了来Offer,并真诚地阐述了在来Offer中学到的各种知识。
我听完十分心动就报名试听了一节,感觉果然好。于是在暑期的时候,我抓住机会报名参加了夏季二班的学习。
我努力的方法
在来Offer的收获是很大的。
首先我从来Offer的课堂上听到了很多CS科班出身所听不到的技巧。比如用recursion tree分析时间空间复杂度以及binary search的两种使用方法,heap在best first search中的妙用等等。
尤其是DFS那节课,我觉得如果能吃透孙老师讲的那些个例题,基本所有的DFS题目都能bug free地做出来,也能给面试官讲得头头是道。这些真的都非常感谢孙老师,因为这些技巧如果只靠看书来获取是远远不够的。
其次我的java能力得到了极大的提高,之前上大学的时候,讲java的教授是属于照本宣科、一节课讲一百多页书的那种,每堂课下来都觉得知识琐碎而凌乱。但经过了来Offer的学习,在吕老师的有条理地归纳总结的帮助下,java成为了我的小无相功,面各种公司,都能达到提笔写java,语法错误为零的水平。
最后,赵老师的系统设计课我觉得受益也良多。赵老师的系统设计课可以说是博文广识,用于对付面试完闲得蛋疼的followup绰绰有余,倘若能有机地运用好,你还可以给面试官留下一个能力很强的好印象。虽然OOD我在面试中并没有遇到,但是我觉得在以后的设计之中绝对能帮得到我。
整个大班课的课程我听了1遍,但大班的教程doc我看了大概4遍左右。老师讲过的例题我基本可以做到烂熟于心。
由于我一直觉得自己计算机方面的脑洞并不够大,我就把老师讲过的例题,算法里比较完美优雅的部分都摘抄下来并背诵了下来。当然不是背模板的那种背,是记住算法的整个轮廓和流水线。
我觉得这个过程是必要的,一方面它让你把机械语言和自然思维相链接,另一方面这个过程帮助你能写出更优雅的代码。
我是在看第四遍之后面的Bloomberg,当时就觉得自己的任督二脉有点打通了。
面Google的几点小建议
另外,想提供给大家几点小经验:
1. 帮别人做mock interview
不要只让别人帮你做mock interview,一定也要帮别的同学做mock interview。
这样你才会从面试官的角度去思考,去衡量别人的代码是不是够好,也才会发现自己面试的时候是不是犯了什么大忌(比如没讲清楚就落笔,代码风格不好,没介绍清楚数据结构,这些都可能会让面试官听得一愣一愣的)。
2. 多做算法
第二个是多做算法开阔思路,在准备Google面试的过程中,我感觉很多同学都栽在这个地方了。
听面试官说,Google的面试题简直囊括了方方面面。
我们在准备面试的时候可以广泛涉猎,比如
- 可以看A*算法、Kmeans等人工智能算法;
- 也应该参阅Binary index tree、Dynamic tree等ACM竞赛的数据结构;
- 还应复习找强连通片、找Hamilton回路、拓扑排序、并查集这种比较学术化的算法碎片。
通过观摩这些算法与数据结构,我们能学到很多的东西并有效地复习自己的知识,做到滴水不漏。
3. 尽可能多做难题
第三个是对基础比较好的同学,要多做难题。Google面试题还是挺有水平的。
4. 对面试官好一点
第四个是be nice to everyone,尤其是你的面试官。
感觉周围有很多同学智力还是够的,可是最后却没面过,我想可能是面试官以“和这样的人一起工作会造成不爽”为理由挂掉了。
我是属于不是很有自信的那种人,由于上学期就挺想毕业的,我就拜托Jinhui学姐帮忙内推了Google,没想到误打误撞,一直面到最后都特别顺利。终于有一天,Jinhui学姐告诉我offer officially approved。
那天天气特别晴朗,我感觉一切努力都得到了回报。
感谢Jinhui学姐,感谢来Offer的各位老师,感谢一起备战的小伙伴们!最后,祝愿各位小伙伴们都能拿到理想的offer,祝愿来Offer越办越好!