我的面试谷哥GOOGLE伦敦SRE的经验和教训


今年疫情, 接到了谷哥和FB的面试邀请, 想着试试现在的水平如何便欣然接受. 每年都面试, 并不是说一定要换工作, 这是一个很好的让你在人才市场中保持竞争力, 查看自己不足, 检验你坚持刷题的一个好方法: 阶段性刷题的考核和目标.

谷哥(Google, 狗家 或被称为G家)是很多软件工程师梦寐以求的公司, 可能是媒体宣传他们家的福利有多么多么好: 有免费的员工餐厅, 有各种娱乐休闲的活动, 给的工资还高. 我5年前接到过面试邀请(当时问了一道队列+哈希表的题), 可惜当时水平太差连第一面45分钟的 coding 都没过. 再后来这几年一直投, 甚至去年找朋友内推都没法过简历关.

据统计: Google 面试成功率不到 0.2%(1000人不到2人), 难度甚至比上哈佛更大.

第一面要过一般是要BUG FREE而且不能卡. 时间复杂度分析也得准确.

内推是最有效的过G家简历关的方法

不止是Google, 甚至是其它BIG5 如 Facebook, Amazon, 通过在职员工内推都是过简历关的最有效的方法. 这些大厂每周收到简历简直成千上万, 想要在这些简历中被选中真的是比较难, 除非你的简历非常的出彩. 举个例子吧, 两年前我想离开待了8年的初创公司(一非常小的小厂), 开始投简历的时候基本上大厂都是没有回音的, 当时的目标就是有一个比较好(有名)的小厂的面试就不错了. 幸运的是, 通过猎头介绍, 我还是拿下了美国通用电气GE (Staff Software Engineer), 施耐得电气, Thales(法国军工软件商)等工业软件的诱人的工程师OFFER.

去年有了GE的大厂背景, 在面试的时候就不太需要花时间和面试官介绍公司是啥了, 而且还顺利拿到了Facebook, Amazon 的面试邀请, 最终在很正确的时间(疫情来前)加入亚麻Amazon AWS. 今年有了 Amazon 大厂的背景, 投 Big5 除了苹果简历被高冷的拒, 拿到了微软巨硬, FACEBOOK, CloudFlare, Twitter 的面试邀请.

当然G家我还是在5月7月的时候自己投了两次, 都没有消息, 正好 Kenshinji 也收到了G家Technical Recruiter 在Linkedin上的邀请, 顺便就把我推荐给了猎头, 才有了以下的面G家的经历.

谷哥的0面

第0面这是和GOOGLE Technical Recruiter (下称TR)的面试, 我猜因为面试G家的人太多了, 所以猎头也有自己的一些题目来过滤那些水平不够的程序员. 我面试的是 SRE 也就是 Site Reliable Engineer 有点像编运维的软件工程师, 好像SRE和SWE在G家区别并不是这么的大, SRE也得写程序, 也得考算法+编程+系统设计.

site-reliable-engineers 我的面试谷哥GOOGLE伦敦SRE的经验和教训 技术 见闻 资讯 面试

第0面是TR和你约的电话视频面试, 你可以选择是走传统 数据结构与算法 还是网络运维. 由于我的网络运维知识并不是很强, 所以我就选择了数据结构与算法. 基本上是多选题, 偶尔一两题填空题, 比如问你C++的map 如果key 不存的时候访问 map[key] 会发生什么? (答案是会按照默认的构造函数来创建一个entry). 这一轮只要你不是太差(比如完全不懂), 那么基本上TR是会给你约一个第一轮算法Coding.

谷哥的第一面: 算法编程

45分钟, 一个问题, 5年前是在 Google Doc, 今年是在 Google 自己开发的一个 Virtual Interview 工具上写代码(代码不需要编译). 题目偏难, 需要一些数学知识+广度优先+深度优先算法. 我这一轮感觉表现还可以, 没有大错, 没有卡住, 和面试官聊得很好. 这一轮TR是会给面试回馈的. 我需要改进的就是算法复杂度分析得不够正确, 代码二维坐标写的时候没有写成类或结构题, 而是直接用vector<int>.

面试官给的建议就是让我进终面.

谷哥的终面: 算法编程+系统设计+Leadership

今年疫情, 所有面试都是在网上, G家说可以约两个半天或者一整天. 我就请了一天假(反正疫情在家哪儿都去不了, 假期用不完). G家比FB和AMAZON都多了一轮. 三轮Coding+一轮系统设计+一轮Leadership 也称为 Amazon/FB 的 Behavior Questions.

狗家算法面试

狗家算法是一轮45分钟一道题, 所以难度相对较难, 而且题目本身可以做很多延伸来讨论. FB一般是一轮45分钟2题, 所以难度一般是LC上的中等, 原题较多. 而G家一般都找不到原题.

第一轮 给一个单调函数的值 y=f(x), 求x, 二分算法, 有些 follow-up (见此文)

第二轮 求地图上的陆地(可以包括内陆水域)的最大面积. 深度优先 Depth First Search 算法, 但是需要先进行一次广度优先在外围水域进行预处理(地图数组扩展一格). 细节较多. 我说这题可以用并查集来做 Disjoint Set, 考官不太清楚.

第三轮 CPU调度算法, 优先队列 (见此文)

狗家系统设计面试

也不知道是不是我在S3做存储的原因, FB和G家这次设计都考了一个类似DROPBOX文件分享的题目. G家的要求较简单, 就只是分享, 并没有涉及用户上传 修改, 但是单分享下载就能延伸出很多讨论, 我和考官这一轮聊了50多分钟.

狗家Leadership/BQ面试

G家和FB, AMAZON的BQ风格还不太一样. 他们家问的很多BQ都是假设情况下你会怎么做? 比如如果你带领一个团队, 2周后有个deadline 但是这时候一个工程师病了, 你会怎么做? 这一类问题我觉得没有标准答案, 也很难了解考官到底想听什么答案, 不过尽量还是中规中矩, 避免回答的时候入坑.

面试经验和教训

G家面试不像FB会给回馈的. 而且听说谷哥内部有规定: 属于 Engineering 相关类似的工作对于同一求职者只能有三次 Onsite(终面)的机会. 所以很可惜, 这一次我用掉了一次机会.

我在第二轮算法面试的时候分析算法时间复杂度第一次分析错了, 感觉这被减了不少分, 还有就是后面写代码第一次并不是 Bug Free, 经提醒才迅速改正, 我想这些也需要再锻炼改进.

还有就是G家Hiring Commitee再考虑求职者, 除了面试发挥的水平, 还有就是你的简历. 这一次我并没有好好准备我的简历, 我在AWS干的活并没有写出来, 这一点吃亏了. 因为你的所有材料会被汇总, 简历也是一个很关键的因素, 有时候可过可不过的时候, 你的简历如果有牛校和牛项目背景就有可能是个决定性因素了.

过了G家面试的bar, 还会有一个内部推荐 Internal Reference, 也就是找已经在谷哥工作的员工写推荐材料, 好像是用于 Team Matching (FB则是过了bar 进去后6周后自行选团队). G家的 Team Matching 就是让团队来选你.

今年FB和G家的系统设计都发挥出了自己的水平, 但很可惜却没有到达大厂 Senior 的级别. 我想系统设计真的是得靠实战经验累积才能成长的.

疫情面试: 请准备好白板, 系统设计在白板上设计远要比在电脑上画图方便的多.
my-office-for-interview 我的面试谷哥GOOGLE伦敦SRE的经验和教训 技术 见闻 资讯 面试

Google 终面面试 Feedback

G家是不给回馈的, 只是很笼统的说了:

including a number of factors like CV experience, blended with interview performance, and where this may align across SWE/SRE. Unfortunately we reviewed for overall technical depth slotted against our teams and right now the decision is not to proceed. As I mentioned though you are welcome to try again and the doors definitely aren’t closed!

还有就是 不再使用之前的1-4分评分制度:
Unfortunately Google doesn’t disclose specific feedback per interview session so in this case I can’t share more context. I wish I had more to share with you!

Also, we don’t use the scoring system from 1-4 anymore, each person puts in full context, notes, and recommendations and then HC reviews for an overall consensus decision.

面完就已经躺平了, 越来越觉得AWS很香, 如果你年年都能进终面, 我想你去别的公司也问题不大, GOOGLE毕竟也是一个公司, 其实我感觉并不是一个神一样的公司, 可能对于大部分工程师来说, 得不到是最好的. 很多工程师进了GOOGLE也是二三年就走了.

从这次面试来看, GOOGLE相对重视数学能力, 所以平时刷一些数学相关的题, 比如去 ProjectEuler, 补一下排列组合的知识是很有帮助的.

怎么样才能做到Bug Free?

多多练习, 很多细节. 比如用C++在写二分搜索的时候, 你的 mid 要写成 int mid = left + (right – left) / 2 这样是为了避免整数举溢出. 但是如果在Python 里就不需要考虑这个问题: 因为Python里的整数是没有范围限制的. 所以感觉用C++做为面试语言会有一些特别需要注意的坑. 我感觉面试可能用Python更为好一些, 毕竟 Python 是一个非常好用没有那么多语言细节需要注意的高级语言.

加油各位码农们!

GD Star Rating
loading...
本文一共 2426 个汉字, 你数一下对不对.
我的面试谷哥GOOGLE伦敦SRE的经验和教训. (AMP 移动加速版本)
上一篇: 服务器搬到车库然后远程云桌面 Cloud Desktop
下一篇: 通过BASH脚本显示树莓PI的温度和频率

扫描二维码,分享本文到微信朋友圈
fa13762524bd864df517bdd7cc2d58ee 我的面试谷哥GOOGLE伦敦SRE的经验和教训 技术 见闻 资讯 面试

2 条评论

  1. 大鱼

评论