关注微信公众号“小争哥”,回复PDF获取Google工程师的算法学习和面试经验
很多人觉得Google很重视算法,为了应聘Google,疯狂刷题,以为只要把题刷到位,算法好,就能进Google,实际上,光刷题、算法好并不能让你进Google。进Google是一个综合实力的体现,本文我就复盘一下,我觉得我能应聘进Google的几个重要原因。
01 算法刷题
尽管光是算法掌握的好并不一定能进Google,但能进Google的同学算法肯定都不差。首先,要熟练掌握经典数据结构和算法,但这显然还不够,刷题是必须的。我至今还没听说有谁没有刷题就进Google的。唯一的区别顶多就是有的人刷的多,有的人刷的少而已。
至于刷多少题才能应付Google面试,这跟问做多少道数学题才能进清华一样,没有绝对的答案,因人而异。不过,如果你从未刷过题,起码LeetCode上每个分类都要刷个10道,那加起来,起码要刷2、3百道。
我自己从大四就开始刷题,零零总总刷题1000道,而且每道题目我都写了详细的解题报告,并且对解法进行了归类整理,反复训练。即便单纯看切题量,我也足够应付Google面试了。
实际上,Google的面试题并没有想象中的难,并不是只有ACM竞赛获奖者才能搞定。当年我们组新招的3个应届生,没有一个是参加过ACM竞赛的。除此之外,我们学校当年也只有我一个面试上了Google,而其他参加过ACM竞赛的很多人都没有面试上。这也应征了我开头讲的,进Google并非只靠算法就能搞得定。
实际上,我在其他文章中也有分享,算法面试考察的绝对不只是候选人能否想得到解决算法。算法面试关注的不是算法本身,而是通过解答算法问题,考察候选人的逻辑思维能力、知识迁移能力、编码能力、沟通能力等等,所以,即便你能一眼看出问题的最优解,但是代码实现不够规范(比如函数、变量命名不规范,结构不清晰等)、bug很多,那也照样拿不到Offer。
02 履历亮点
整体上来说,任何大厂都喜欢履历中有亮点的候选人,而Google尤其为甚。从我个人对周边的同事的了解来看,Google不招平常人,绝大部分Googler都有或多或少的光环,比如ACM竞赛获奖者、知名期刊发表过论文、专利、出版过书籍、著名开源项目作者等等。
不只是技术方面,在生活方面,很多Googler也都很有特点。比如,有的人是参加马拉松跑进多少时间的,有的人是徒步穿越西藏的,有的人是某某游泳冠军等等。我这里的例子可不是杜撰的,都是真实的身边同事。
候选人在其他方面可以做到极致,在技术上应该也可以。还是那句话,Google要的是有特点的人,而不是一个平庸的人。尽管这些非技术的东西并不能“决定”你是否能拿到Offer,但有的时候,它可以非常大的赢得面试官的好感。在有很多技术跟你一样好的竞争者面前,你就很容易因此而脱颖而出!
我本身没有参加过ACM竞赛、也没有牛逼的论文,但我在读研的时候,对搜索引擎比较感兴趣,为了研究搜索引擎的原理,自己从零写了一个搜索引擎。真的是从零开始写,一点开源的框架、lib库都没有用。核心代码量有5万+行。
虽然现在来看,当时写出来的东西只能算是一个Demo。但通过自己的实现,我可以做到对搜索引擎的基本原理,包括很多细节,都毫无盲点,理解的非常透彻。这是很多工作很多年的、做搜索引擎相关工作的人,都无法做到的。这就像你要想将操作系统搞的清清楚楚,最好的方法就是自己写一个操作系统。
03 教育背景
大厂都很重视学历,特别是对于校招来说。Google也不例外,也喜欢名校学生。不仅如此,国外的企业还会看重在校成绩GPA。当然,也并不是说只有清北复交才能入得了Google的法眼,但起码不能太差。如果候选人只是专科,或者普通本科,想要过简历这一关,需要更有说服力的东西,来弥补教育背景的缺陷。这就是所谓学历不行,其他来凑。
我本硕都是就读于西安交通大学,西交大因为位置偏西北,位于西安这个老城都,各方面的发展都比不上其他一些名校,但它起码是985院校,在学历方面不算是亮点,也不减分。我在校的成绩还不错,年级前十应该排的进去。在成绩这方面也不逊色。
04 找人内推
曾听人说,Google的招聘是万里挑一,也就是说,一万份简历才能有一个人拿到Offer。真假不清楚,但从侧面也反映出,Google HR每天要接收很多简历。HR一眼就能把你的简历从众多优秀的简历中抓出来,这点没有人敢拍胸脯保证。所以,内推就显得格外重要。我身边只要想面试Google的朋友,几乎都是找人内推的,很少有直接通过官网投递简历的。
我当年是先自己投递,没人理,然后有人在我们学校的BBS(校内论坛)上发帖说,可以内推Google。我就给那个人发了一份邮件,果真就内推过去了。而且,很快就收到了面试的邀请,内推的人也一直帮我跟踪整个流程(毕竟我拿到offer之后,内推人有一笔非常可观的收入,好像是上万吧),反馈也非常快。感觉内推就像走了VIP通道,顺利很多。
05 稳定发挥
实际上,不得不承认,能进Google,多少还是有些运气成分的。细数身边的同学、朋友,有很多在校的时候,就开始做项目、去大厂实习,技术铁定不比我差,之所以只有我一个人拿到Offer,显然是走了运。这就包括跟面试官气味相投、面试题目正好对我胃口、现场超常发挥等等。也就是说,不是实力强就一定能进Google的。
这就跟高考一样,即便成绩再好,谁都不敢保证一定就能考上清华。我们只有通过不断的努力,让实力尽可能稳定发挥,运气的比重尽可能降低,才能更有机会拿到Offer。当然,我们也不必非Google不进,以Google为目标,即便进不了Google,其他同等水平的好公司至少能进一个。
如何让实力尽可能稳定发挥呢?那就是多实战演练。Google是我面试的最后一家公司,在面试Google之前,已经面试了n多家公司,每场面试对我来说都是一次实战演练。对于简历上面试官的关注点、提问点,基本上在这些面试中都覆盖到了,而且回答过很多遍之后,基本上能做到对答如流。所以,在面试Google的时候,我就能够把平时的水平稳定的发挥出来。
06 提前准备
有句名言叫做“人往往低估了5年的变化,而高估了1年的变化”。虽然,这句话听起来就是一句鸡汤。但是,你自己品味,还是很有道理的。如果你要想拿到Google Offer,那肯定不是临时抱佛脚,花个半年、3月准备准备就搞得定的。
怎么才能比别人更有优势?除了更聪明(这个很难了),还有一个窍门就是比别人先跑一会。我是从大四开始准备的(注意我是研究生毕业才工作的),这一点都不夸张。很多人都还在学校里混日子的时候,我已经为了最后的毕业找工作面试做准备了。我目标明确,做的每一件事情,每一个努力,都是朝着进大厂做努力,我提前跑了那么久,能拿到Google Offer也是理所应当的,这不是一般人努力半年就能赶得上的。
07 最后总结
进Google,包括进任何大厂,都绝对不是刷刷leetcode、学学算法就能搞定的,提前做一个长期的规划,积累算法、亮点,稳定发挥,而最后的面试也是一个多维实力的比拼。
关注微信公众号“小争哥”,回复PDF获取Google工程师的算法学习和面试经验
转载:https://blog.csdn.net/ggdownler/article/details/112859404