Google(谷歌)是全球知名的互联网巨头之一,几年前被认为是养老终级大厂,福利优厚,压力相对较小。在英国伦敦,Google设有一个主要从事开发和研究的办公室。
第一次面试 2016年
我在2016年首次面试Google。第一轮是电话面试,由一位在瑞士的工程师主导,通过电话交流并在Google Doc上同步编写代码。由于当时技术水平有限,我用C++完成了那道消息打印的题目,核心是使用队列和哈希表来解决问题,写得很磕磕巴巴。
当时对软件工程师的级别没有特别概念,推测自己面的是SWE L4/L5的级别,因为当时也就工作了5年多。
我查了一下邮件,2013年11月份的时候谷歌猎头联系我问我要不要试试?我说我当时没拿到英国永居,不想冒险,虽然他说到谷歌可以办工签,我当时还是没有选择去面试,现在想起来实在不可思议,后来2014年/2015年的时候同一个猎头还每隔6个月就check-in一次,最后面是在2016年4月份的时候才开始第一次的。
这个谷歌猎头很敬业,2014年联系我,最后跟踪了三年让我参加第一轮面试。
我要是当时聪明一些,努力刷题一些,搞不好当时进谷歌,现在也工作将近十年了,拿着谷歌股票到现在,也不至于现在混个高不成低不就的。
第二次面试 2020年
第二次面试是2020年11月份,第零轮其实应该算是Google的猎头问的一些选择题,比如 C++里的哈希表/map如果访问一个不存在的键会发生什么?Google的软件工程师包括SRE站点可靠工程师在面试的时候都可以选两种路径,一个是数据结构和算法(编程),另一个是运维/DevOps偏LINUX知识的。我都选前者,毕竟这个我感觉只要短期刷题就好了,相反后者需要多年工作实战的积累。
通过了猎头的小测试,我进入了第一轮,是道编程题,但是并不是那种力扣上可以见到的,这一轮45分钟,给得是一个比较有意思的游戏,比如迷宫生成算法。面试的时候需要你主导整个过程,包括澄清问题,构思,写代码,分析复杂度等等,每一步都需要你Think Aloud。虽然这一轮我犯了些错误,但是给得反馈总题还不错,面试官说他觉得我应该进入下一轮。
到了终面,安排在了同一天,上午2轮,下午3轮,我记得3轮编程/Coding,一轮系统设计,一轮Culture Fit/Behavior/行为模式。除了系统设计是1小时,其它的4轮都是45分钟,谷歌的Coding面试45分钟都是解决1题即可,题目并不是力扣上的,题目范围/scope较大,偏难。一般来说coding完还会有一些Follow-up的问题,比如怎么优化算法。这个和Meta/Facebook的Coding面试不同,Meta百分百喜欢出力扣上原题,40分钟内需要解决2题力扣原题(留5分钟问问题),这个可以通过力扣按公司归类最近3/6个月的试题准备即可。
系统设计我记得是设计一个类似AWS S3的文件存储,也不知道是不是看我当时在AWS S3工作。很可惜,最后面这一轮不过关,当时我面的是L5(Senior),软件工程师级别越往上走,对系统设计的能力则要求越高(设计可扩展/分布式/高性能的系统 )。
一般大厂来说,不太会降级别给Offer,也就是说,如果面的是L5职位,但是能力可能只到L4,一般来说是不会给Offer的,但也不排除个别情况下,据说Meta就有面试E5给E4的情况。
级别是在面试过程中根据您的个人背景确定的,包括简历经验、面试表现等多种因素,以及与 SWE/SRE 的契合程度。
这次面试的职位是SRE站点可靠工程师。
第三次面试 2024年
其实去年2023年,也申请了谷歌伦敦Google Research的位置,当时和猎头简单聊过之后,就没下文了,猎头说会把我的简历给招聘经理,不过等了好几周,最后面很抱歉的说已经招了别人了。
2021年/2022年我记得也投过,不过都没有下文(简历被拒),有一年直接申请Google瑞士,因为听说那边的工资高,和美国一样高,所以想试了试,第二天直接收到了拒信,还是谷歌瑞士的工程师直接发的邮件。
今年就随手申请了一下,也不知道是不是招聘市场回暖,简历同时过了Meta和Google的第一轮筛选。上一次2020年也是,同一时间面试Google和Meta,两个公司的面试都进入了最后一轮(Final Onsite)。
今年和Google猎头聊了聊,她并没有给小测试,就是了解了情况,然后让我选是以算法为主还是运维/DevOps为主,我今年面试的是SRE站点可靠工程师,和第二次一样。
第一轮面试也是一轮设计一个简化版的游戏,面试了45分钟,最后面拖了三分钟 Follow-up问题,也就是把这游戏 Scale Up,如果很多很多人玩,单机内存不够怎么办?
今年第一轮谷歌面试在家里中午午休的时候进行的,45分钟。这个是当时我房间的Ring拍摄记录的。
我最开始的暴力解法写得很6,犯了两个小错误,并不是Bug Free,不过面试官指出后我立马意识到并改正了,后来优化需要用到 二分搜索+前缀和/Prefix Sum,面试官很满意说他没想到这种方法。
再后来的优化用到了线段树,但由于时间限制,并不需要去实现,但需要讲明白算法原理。我脑子里想着另一种实现二叉索引树Binary Index Tree,但是不记得实现原理了,结果在那里纠结浪费了一些时间。
最后面给出的回馈就是最后面的Follow-up回答得不是很好。不过并没有立刻拒我,我猜是我过了Bar,但是并不是表现最好的那一个。一般一个职位一个坑,如果接到100份简历,那么只会邀请6-8个来进行第一轮面试,然后淘汰掉一半,最后面邀请3-4个来进行终面。
当时猎头给我打电话,说了反馈,然后就说暂时把我的申请on-hold了。
又过了两周,猎头给我回复:
每年都面试一下,才能知道自己几斤几两。
谷歌面试是不是一生只有三次机会?
谷歌的面试通常没有严格的次数限制,理论上并不是“一生只有三次机会”。不过,谷歌对多次申请有一定的冷却期政策,这意味着在未通过面试后,申请者需要等待一段时间才能再次申请。
通常的冷却期为6到12个月,但这时间会因具体情况和职位类型有所不同。如果之前的面试表现较好,甚至可以更早重新申请。此外,间隔期越长,对候选人的成长和进步的期望也会更高,因此再次面试时需要准备得更充分。
博客:https://justyy.com/archives/66293
英文:Three Attempts at Google: My Software Engineer Interview Journey (Is There Only Three Chances in a Lifetime?)