搞定 Google 等名企 Offer?北大学霸为你支招

Posted 拉勾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搞定 Google 等名企 Offer?北大学霸为你支招相关的知识,希望对你有一定的参考价值。

来源:技艺丛谈(ID:jiyicongtan)


范非凡同学是不折不扣的北大学霸,人如其名,面试表现非同凡响。优秀的人才当然是中国互联网公司争夺的对象,最后他加入谷歌,也算是得其所愿。这次有幸邀请到他,给我们分享下他的求职经验,尤其是如何拿到 Google 的 Offer 的。


Google 的面试经验,不仅对面试微软、Facebook、Hulu等外企有很高参考价值,对面试国内大小厂也同样如此。此外,虽然本文是校园招聘的经验分享,对社招同学的求职同样具有参考意义。希望非凡同学的这次分享,能够帮到大家。



01 个人情况



本人为 2017 级毕业的硕士研究生,本科就读于南大计算机系,硕士就读北大信科,找工作前有过四家大公司和三家创业公司的实习经历,无 ACM 竞赛背景,在去年找工作季幸运地拿到了 Google 的 offer ,应平哥邀请,分享一下面试 Google 的体会。



02 面试背景



1、面试流程


搞定 Google 等名企 Offer?北大学霸为你支招


去年 Google 的校园招聘共有 5 次 APAC Online Test ,通过任意一次都可以进入下一环节,今年对应的有 Kickstart Test ,可以在 Google Kickstart 官网上查看练习过去几年的考题。



接下来一般在一个月内 HR 会邀请候选人来 Google office 参加 4-5 轮 onsite 面试,每轮面试 45 分钟,去年的形式为 2+3 ,前两轮面试通过后会安排后面的三轮面试,一般会在一周内完成 onsite 面试流程。onsite 面试主要考察算法和数据结构,也会考察一些计算机科学基础知识,以我去年情况为例,5 轮面试中有 4 轮考察算法,1 轮考察系统设计。


面试通过后,HR 会收集候选人的面试表现,成绩单 GPA,简历等提交给 Hiring Committee,来审核候选人是否最终通过了 Hiring Bar。通过后,会进入部门匹配环节,匹配成功后则发放 offer。


 2、校招名额


根据往届面试者收集的信息,Google 近三年的招收指标整体呈下降趋势,海外的 offer 集中在美国 Moutain View 总部,但由于工作签证 H1b 抽签的随机性,导致很多 candidates 拿到了 offer 却不能去工作,需要 park 在其他国家的 office 。


但 remote office 的招收名额相对较少,并以招当地人为主,所以给安排这些拿到美国总部 offer 却没抽中工作签证员工的工作地点存在比较大的麻烦,所以海外名额的数量越来越少。


以 Facebook 为例,2015 年还在大陆招收员工,有 1/3 的员工抽中了工作签证,1/3 的员工 park 在伦敦,1/3 的员工直接 Gap 一年不管了,下一年继续抽签,抽不中就友尽,同时 2016 年开始就没有专门在中国区招聘了。


Google 这两年都是招聘小年,名额整体比较少,不过随着 AlphaGo 掀起的 AI 浪潮,Google 今年可能开始在中国招收 AI 领域的员工。


3、划重点


  • 面试语言为英语。

  • Google 在校招季会有 batch interview week ,面试官会在一周内只参与面试任务,所以不同轮次的候选人会遇到相同的面试官,多和其它应聘者沟通!



03、前期准备


1、干货


  • LeetCode (在线刷题)


搞定 Google 等名企 Offer?北大学霸为你支招

刷题必备网站,包含了各种经典算法问题,新颖面经问题等,而且有按算法专题,公 司专题,热题排行榜等,非常全面。部分题型和功能需要付费,前期可以先把免费题型训练完,面前一个月充个会员把带锁的题目以及公司专题看一下。


关于刷题的策略:


  • 首先按算法专题过一遍(如二分查找,DFS,BFS,动态规划等),熟悉每种算法的套路(如遇到新问题往哪个算法上靠,即每种经典算法的特征?什么类型问题用二分查找?二分查找写法有多个变种,每个变种解决什么类型问题?常见算法复杂度分析,动态规划常用的优化空间时间的方法?);


  • 然后分析每种系列题型(如 Best Time to Buy and Sell Stock 有 n 个变种,分析每个变种的差异,如何扩展的,再例如 DFS 经典问题排列和组合,排列和组合都可以用 DFS 解决,写法有什么差异;排列组合问题的各个变种中 DFS 的写法怎么变化的;动态规划中每种题型的变种条件的改变怎么引起动归方程的改变等);


  • 然后按照公司专题来做题,还有时间的可以再看看 Top Hits。


Leetcode 前年还稳定在经典的 151 道题,从去年开始题量增长很快,截止到去年我面试 Google 时(见下图)接近 400 道题目,现在再看已经接近 700 道题了,包括很多最新的面。我去年大约把 leetcode 做了 2-3 遍(第一遍比较慢,后面几遍主要是查漏补缺,同时加强对之前解题思路的理解,速度会快很多)。


但很难保证每道题都能很快写出 bug-free 的代码,所以我会用一种策略,确保能快速地将问题映射到使用某种算法上打印出 leetcode 题目列表,挨个看题目标题,迅速脑海构思应该用哪种算法解决(动归?DFS?二分查找?堆栈数据结构?),里面有什么坑(正负数?异常输入及溢出?空指针?),但不思考代码细节怎么写,从而筛选出不太熟练的题目,再次加强复习,查漏补缺。


搞定 Google 等名企 Offer?北大学霸为你支招

  • LintCode(在线刷题)

    China 版 Leetcode,题目和 leetcode 有很多重合之处,与 leetcode 可以配合补充使用,比如 Leetcode 上有 Permutations I 和 II,lintcode 还有额外的一些变种,两者配合可以增加了解题型变种的差异。


  • Elements of Programming Interviews ( EPI,好书!)

    该书涉及了面试的方方面面,除了算法外,还有很多计算机基础知识,如信号量,互斥锁等,很多 leetcode 的题目都来源于该书的习题,刷完 leetcode 后适合每个章节都快速过一下(很多题目在 leetcode 已经做过了,可以跳过),同时通过该书复习计算机科学基础知识。


搞定 Google 等名企 Offer?北大学霸为你支招

  • GeeksforGeeks(solution library)

    除了在线刷题外,还会遇到各种面经中没有提供 solution 的问题,经常可以在 GeeksforGeeks 上找到解答,以及很多经典算法的写法,该网站也常有一些合集。比如二叉树序列化到多叉树序列化问题(来自面经)都可以在上面找到解答。


  • 一亩三分地(面经专版)


搞定 Google 等名企 Offer?北大学霸为你支招


面试前两周就要开始刷面经了,面经的题目列表针对性更强,中奖率更高。一亩  三分地是一个好平台,可以看到很多近期的真题面经,我一般选择热心网友整理 的面经集合(整理了近几个月来该平台上某司的面经帖子)


  • CareerCup(面经)


    搞定 Google 等名企 Offer?北大学霸为你支招


    该网站面经更新速度比较快,感觉更多是老外在上面贴面经,一亩三分地都是华人发贴,富有余力的可以再看看这上面近期的面经。


  • 其他(编程之美,程序员面试金典)

    前面的刷完,应该就差不多了,还有兴趣的可以看微软的《编程之美》以及《程序员面试金典》(Cracking the Coding Interview 中文翻译版)


搞定 Google 等名企 Offer?北大学霸为你支招


2、个人简历


  • 实习/项目经历

    前几年 Google 比较看中实习经历,对微软、hulu 等外企实习经历比较认可。但从去年开始,Google 对所有候选人一视同仁,都要参加 APAC Online Test,根据成绩决定是否进入面试环节。实习经历可能在 Hiring Committee Review 和 Team match 的时候有一定影响,比如有同学在网易有道实习过,匹配部门时匹配到了 Google 输入法团队。


    国内的企业比较重视实习和项目经历,很多公司可能只根据其过去的经历决定是否录用,面试走个形式。大公司的实习较偏向于具体岗位,依托较大的平台和资源可供学习;小公司实习的灵活性更高,能涉猎的技术领域和踩的坑都比较多。个人觉得实习期间算法研究、工程开发都可以搞一搞,将来总会有用得着的时刻。然后找工作的话,最好还是至少有一项大厂实习经历。


  • ACM 竞赛经历

    有 ACM 竞赛经历还是有一定优势的,比如你辛辛苦苦刷 leetcode 600 道题,别人很早之前都做过 3000 道题了,这次只是复习一下。不过面试官可能 ACM 候选人要求更严格一点,会出 hard 题目。另外, Google 面试出原题概率较低,所以题目是做不完的,刷题还是要注重多思考和总结。


  • 简历修改

    写好的简历找身边小伙伴看看,给些修改意见。


3、简历内推


不仅是 Google,面试各家公司最好都先找往届的师兄师姐内推一下,会有一定的帮助。另外,尽可能地找和自己关系比较熟、对自己了解的人内推,这样在写内推意见时就比较靠谱和贴合实际。


4、划重点


  • 刷题!刷题!刷题!重要的事情讲三遍

  • 整理手刷代码清单,经典算法迅速能给出 bug free code

  • 不求刷题快,但求刷题精,每道题可以多看一些高分解答,多去思考总结规律,避免陷入刷过忘,忘过刷的循环

  • 面前看面经,刷公司专题

  • 认真改简历,简历要内推



04、模拟面试



面试中解决算法题和平时刷题的差别挺大,在有一定刷题积累后,可以和身边的小伙伴组织一些模型面试,前期可以中文面试,后期增加一些英文模拟面试。题型可以选择难度适中且相对比较新颖一点的题目,以锻炼在面试中遇到新问题如何快速反应的能力。


模拟面试的形式以 4 人为例(见下图),每次开展两轮面试,每个人分别做一次面试官和一次面试者。写代码方式可选纸笔,白板,在线编辑(google doc 或者 http://collabedit.com/),推荐刚开始和面试官交流时用纸笔,实际写代码在电脑 doc 上写(速度快,方便更改)。去年面试时,HR 会给面试双方发个共享 doc 链接,面试时在上面写 code。



搞定 Google 等名企 Offer?北大学霸为你支招



05、临阵磨枪


进入 onsite 面试前一周,就可以开始临阵磨枪,此时主要以刷面经为主,来源如一亩三分地,careerCup 等。考前还有一招前文提到的锻炼快速分析题型的技巧,即打印 leetcode 题目列表,迅速构思每一道题应该用哪种算法解决,进而查漏补缺。


面试前调整心态,默念十遍:You are ready!

题目永远刷不完,相信之前的积累,心态放平和。



06、面场发挥


每一轮面试时间为 45 min,其中有前面 1-2 分钟自我介绍和后面提问面试官问题 1-2  分钟。一般会考察两道算法题,第一道简单点,第二道复杂些,或者第二道是第一道的 follow-up。


开始做题后,先思考有哪些 edge case,并向面试官提问(如空指针输入,负数,无效输入等),大约花个 3-10 分钟思考 solution,然后和面试官沟通解法及算法复杂度,面试官觉得思路 ok,就可以开始写 code。开始写 code 后一般就专心写,如果思考到有需要确认的 case,也可以及时和面试官沟通。写完 code 后,告诉面试官自己先 check 一下 code,然后自己思考一个测试用例,人肉检查一遍代码运行情况,然后思考一下 edge case 是否没问题,然后告诉面试官 ok 了。面试官边检查 code 时,可以在解释自己的 solution 时,先整体介绍用了什么算法,再分开介绍第 X 行到第 Y 行的功能。


面试语言主要为英文,去年我参加 5 轮面试,只有 1 轮系统设计面是中文。因为当时面试时间是在 batch interview week ,面试官主要是由美国总部过来的员工。不过一般面试官会将题目写出来,所以不用担心听不懂题目。面试官可能提出一些 follow-up,如果没有听明白,可以礼貌地让其重复,这个没啥影响。


自我介绍准备好,一般 1 分钟左右就行,主要介绍教育背景,做过的项目(举一个例子即可)及拿过的奖项等。


要咨询面试官的问题准备好,比如他们组主要做什么?跨部门之间的合作?避免问一些很专业的问题,如 Google XX 技术怎么实现的?

划重点


  • Speak Out。在思考 solution 过程中,及时和面试官沟通你的思路变化,避免陷入长时间单方面的思考,特别是遇到不会的题目,及时和面试官沟通你当前的思路,面试官也可能根据你的思路提供一些 hints ,也能了解你解决问题的分析思路。



  • 避免思维定势。遇到似曾相识的题目,却记不起解决方案时,就当做一道新题来处理,一方面节省时间,另一方面避免陷入挖掘模糊的记忆,特别很有可能这道题目是一个变种题,和之前的题目不一样。



07、乘胜追击


通过 Hiring Committee 后,现在都会先进行部门匹配,匹配成功后才发放 offer。越早开展匹配,成功的概率越高。拿 Google offer 是个长期战线,面试通过以后也要经常催促一下。前两年通过面试后基本都给匹配了某个 office,时间周期跨度 3 到 7 个月不等。不过去年有不少候选人最后没有匹配 office,因为坑太少了,不过未来有开放的职位后还会联系这些候选人,据说有一些是候选人都入职了才匹配的。


此外,对于选择国内 Google 还是国外 Google,因人而异,国外名额集中在美国总部,不过 h1b 的中签率也比较感人,往届有不少抽不中,然后再等匹配其他 office, 经历更长的时间等待。选择国内的话有一定的缓冲时间,一方面可以逐步适应英语的工作环境,另一方面将来也有 transfer 的机会。国外的待遇相对比较好,过得相对比较安逸,世界这么大,我想去看看。



08、总结


相对于国内的面试,Google 整体的招聘流程一般考察候选人的基本功,而对候选人的过往经验不太看重,Google 想选拔优秀的员工,安排到任意的岗位中都能够胜任,所以内部部门间的流动性也比较大。国内的公司相对更多看中候选人过去的项目实习经历,希望能够到匹配的部门快速开展工作。


相对于微软、 hulu 等外企,Google 的坑比较少,不过面试的风格比较类似,都是偏向算法考察。


对于选择算法研究岗还是工程开发岗的问题,Google 目前主要招聘的是 Software Development Engineer,今年也开始招聘 Research Scientist 和 Machine Learning Engineer 职位,具体选择哪种道路可以参见之前平哥的系列文章。个人感觉两个方向都可以学习一下,将来总会有用得着之处,也许还会切换了职位。


最后想说的一点是,心态要好,面试具有运气成分,是否通过 Google 的面试不能说明什么,将来的道路还很长,总会找到适合自己的一条道路!













啦啦啦啦~我们的口号是是是

专注于为互联网从业者提供更好的职业机会


搞定 Google 等名企 Offer?北大学霸为你支招 拉勾网丨招聘求职找工作 2017更新更全互联网职位



以上是关于搞定 Google 等名企 Offer?北大学霸为你支招的主要内容,如果未能解决你的问题,请参考以下文章

GitHub疯传!北大学霸的LeetCode刷题笔记火了

GitHub疯传!北大学霸的LeetCode刷题笔记火了

火了!北大学霸爆肝3个月的算法小抄完整笔记,GitHub疯狂转发

北大学霸LeetCode刷题笔记!(建议收藏,熟读并背诵)

你面试稳了!通关LeetCode刷题完整攻略,省时又高效

Java求职 | 面试通过率近100%多个名企offer,他是怎么做到的?