查看原文
其他

到 Google 面试去!开发者必读的避坑指南

sochix CSDN 2020-10-16

Google 一直是许多开发者心驰神往的地方,本文作者分享了自己面试 Google 的经历,尽管面试挂掉了,但有一些避坑的技巧仍然值得我们学习。

作者 | sochix
译者 | 明明如月,责编 | 唐小引
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)

以下为译文:

朋友你好,我刚刚结束了在 Google 的面试,我想尽早告诉你面试过程中的一些有趣的和令人沮丧的事情。这样你就可以了解 Google 面试的内容和相关的流程。我也会分享一些关于如何准备面试和避免错误的小贴士。

如果你正在寻找 Google 面试的成功案例 ,那么这篇文章不适合你。实际上,我面试没有通过,但整个经历对我来说非常有趣,并且把我带到了职业生涯的另一个阶段。在这篇文章的最后,我会分享更多的细节。为了保护 Google 员工的隐私,所有姓名和身份信息都已更改。


初步筛选面试


我的故事开始于十月的一个下雨的早晨。我收到了一条来自 Google 招聘人员奥利维亚的消息,主题是“有兴趣解决 Google 的高影响力工程问题吗? ”。当时我刚刚完成了几个项目,正在寻找新的挑战。我不想错过去  Google 工作的好机会,因此我迅速回应,“是的,当然” ,并通过 Google Hangouts(谷歌环聊)进行了预约。

两天后,我们通过 Hangouts 进行了交谈。奥利维亚告诉我在 Google 工作是多么令人兴奋,并交代了招聘流程。当我问及这个职位的具体情况时,她告诉我,他们正在为波兰华沙的新办公室寻找适合支持和开发 Google Cloud 功能的人员。当我询问了我的职权范围内的具体职责,以及我将参与的团队,但她说,这个并不重要 —— 我可以在面试流程走完后,选择想要的团队和职位。对我来说,这是第一个令人沮丧的时刻,但我认为值得坚持下去。

  • 令人沮丧的时刻 1:如果 Google 没有我想加入的团队怎么办?

奥利维亚告诉我,Google 的面试过程包括三个阶段: 首先,有两个关于算法和数据结构的远程编码题。如果你很出色,你可能只要一次面试就可以通过,但是对于一个普通的软件工程师来说, 很可能要 2 次才行。

第二阶段,是在 Google 的一个办公室进行现场面试,其中包括几次编码面试(再一次编程!)和一次系统设计面试,最后是“Google 范儿和领导力”。最后一个是检测你是否适合这家公司。

  • 小贴士 1:Google 的面试过程是很困难的,而且会占用你几个星期的时间。你需要全力以赴做好准备。

用奥利维亚的话说,“即使你通过了所有的面试并进入了最后阶段,也不能保证你能得到这份工作。因为 Google 的招聘流程还有一个流程,这个流程将在你不在的情况下进行。在最后一个阶段,几位 Google 高管(他们不认识你,也从未与你交谈过)将审阅你的简历和面试官的反馈,并决定你是否适合 Google。只有得到他们的认可,你才能得到这份工作。” 好了,现在是第二个令人沮丧的时刻。

  • 令人沮丧的时刻 2:如果你每次面试的成绩都是 A 级,但仍然没有拿到 offer,肯定是一个 Google 高管认为你不适合被聘用。

在筛选面试后,我意识到我的机会还是很渺茫,于是决定为了积累经验,我会尽我所能。


第一阶段: 远程编程面试


后来,奥利维亚为我安排了第一次远程编程面试。与此同时,我浏览了 geeksforgeeks 网站上的几个算法题,并完成了“必须做的面试准备课程”。我不能推荐它,因为这门课的问题非常抽象,而且平台有缺陷,但是对于第一个编码挑战来说已经足够了。

这个电话是通过 Google Hangouts 打来的。面试官简短地向我介绍了一下他自己,并让我解决一个编程难题。我不能告诉你编码挑战的细节(这样做对别人不公平,也对你没什么帮助)。我唯一能分享的是,它是国际象棋游戏环境中的某种贪婪算法。

在没有面试官任何提示下,我在 50 多分钟内解决了这个问题。该解决方案包括 Python 上的测试和代码。所有这些类型的访谈的编码通常都是在某种共享的笔记本上完成的,在本次面试中使用的是 Google 文档。坦白说,面试官本人和挑战都很有趣。

我一直在等待结果: 我表现得好不好?结果在一周后才出来,而且是在我向招聘人员询问最新情况之后。这将成为以下所有面试的共同主题:结果只有在一周后才能准备好,并向招聘人员发出信息。

  • 小贴士 2:不要羞于向招聘人员询问你上次面试的结果。

奥利维亚说我的面试结果“大多数是正面的”。唯一存在的问题是解决这个问题花费的时间:不应该超过 45 分钟。因此,奥利维亚要求我再接受一次远程编程面试。从这一点上,我明白了在 Google 眼中我只是一个普通的软件开发者,而不是一个出色的开发者。但是没关系,我决定继续前行。

第二次远程面试是在一周之后,而且和第一次差不多。编码问题很简单。这是一个组合问题,要解决它,你必须想出数学公式,仔细考虑所有的边界情况。这个解决方案只花了我 40 分钟,我非常兴奋能够以如此快速和优雅的方式解决这个问题。我等待着招聘人员的最终反馈。下一步是前往波兰进行现场面试。

我等了一个星期,招聘人员没有回我的信息。然后奥利维亚回答说,她正在出差,回到办公室后会回复我。上次面试两周后,我接到了奥利维亚的语音电话。她说,我上次的面试“大多数都是积极的”。唯一的缺点是我使用了大量的伪代码。她还提到我很擅长测试(也许是因为四年前我读了一本《Google 软件测试之道》的书,谁知道呢?)。

  • 小贴士 3:你应该在编程面试中用测试覆盖每一行代码。当面试官让你测试你的功能时,只要大声说出来,然后开始写你的测试。

在我们的谈话如此充满希望的开始之后,她说他们不知道下一步应该做什么,所以我应该等一会儿。一周后,我收到奥利维亚的短信,她说从现在开始,我的招聘人员将是另一个来自伦敦办公室的乔治,我需要通过另外两个远程编程面试。我会在适当的时候从乔治那里得到所有的细节。

当天晚些时候,我接到了乔治的电话。他说我的编程面试将在一个月内远程完成,我应该选择一个日期。他拒绝透漏为什么面试周期如此长,但是提到这些编码挑战会比以前的困难得多,如果我通过了,我会被邀请到他们的办公室参加其他的面试。我决定既然已经开始,就应该坚持到底。


第二阶段:更多的远程编程面试


我开始准备另外两次面试。这次我用的是 HackerRank  和它的“《Interview Preparation Kit》(面试准备工具包)”。我强烈推荐它,因为里面的内容和面试的内容非常接近。

  • 小贴士 4:Hackerank 和它的《Interview Preparation Kit》(面试准备工具包)是为 Google 编程挑战做准备的最好资源。

新年假期刚过,我就收到了第一次面试通知 —— 第一次是在 1  月 20 日 11 点(持续时间 45 分钟)。真是出乎意料。我问乔治,我们是否可以把面试安排在两天进行,得到了一个出乎意料的答案:“不好意思,我们需要在同一天进行这些面试,以尽可能减少面试过程中的流程,并尽可能保持时间效率。” 这又是一个令人沮丧的时刻。我已经等了他们好几个星期了,现在他们却想要“节省时间”。

  • 令人沮丧的时刻 3:Google 不尊重你的时间

这次的面试对我来说很困难。第一次面试是关于在图表上棘手的搜索。一开始我只是想出了一个蛮力解决方案,后来我意识到可以用图表来完成这个任务——但是为时已晚。

第二次面试是关于 “2048 游戏”。这是我第一次无法清楚地理解这项任务,也许是因为我根本没有玩过 2048 游戏。这些问题是关于在 2048 游戏中取胜的策略和产生下一个棋盘状态的优雅解决方案。仅仅两天后,我意识到 2048 游戏是某种“数字推盘游戏” ,并且可以通过 A * 搜索算法解决。

这显然是我的错 —— 在准备过程中我没有花很多的时间精力在图形算法上。所以请你不要重蹈覆辙 —— 正如我之前所说的,把你所有的努力都投入到面试准备中去。

经过一个星期的等待,乔治给我打了个语音电话,说我没有通过面试,我应该提高我在时间复杂度和图形理论方面的技能。他建议我明年可以重新申请加入 Google。


我从 Google 的面试过程中学到了什么?


在我刚开始 Google 面试时,我清楚地知道我得到这份工作的机会很渺茫。经过这么多面试,我得到了什么?经验——丰富的经验——以及对 Google 内部运作方式的一些了解。Google 有一个神话,它是一个梦想的工作场所。也许吧,但对我来说不是。经过几个月的面试,我明白了 Google 不过是一个有着一些官僚主义问题、不透明的流程和奇怪的规则的大型企业。更多关于 Google 另一面的信息可以在 Michael Lynch 的帖子中找到“为什么我离开 Google 为自己工作”(https://mtlynch.io/why-i-quit-google/)。


我的下一步规划


经过 Google 的艰难面试以及小型初创企业和其他公司的几次面试之后,我认为自己不适合给别人打工。我想成为一名企业家并创建自己的公司。对我来说,首先要做一个自由职业者。我认为我擅长全栈 Web 开发(我首选的栈技术栈是 Node.js / JavaScript / React / Docker,您可以在《我参与的项目》)。

现在我急切地寻找客户和合同。如果你认为你有东西要给我,或者如果你知道有人需要一个远程的全栈开发人员,请推荐给我。我很乐意和你谈生意,或者给你一些免费的建议。

英文:Google Interviewing Process for Software Developer Role in 2020

链接:https://habr.com/en/post/489698/

作者:sochix

译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。

本文为 CSDN 翻译,转载请注明来源出处。

【End】《原力计划【第二季】- 学习力挑战》正式开始!
即日起至 3月21日,千万流量支持原创作者,更有专属【勋章】等你来挑战
推荐阅读 
小米回应"暴力裁员";报告称安卓手机贬值速度是 iPhone 两倍;Ant Design 4.0.1 发布| 极客头条
技术大佬:我去,你写的 switch 语句也太老土了吧!

赔偿谷歌1.8亿美元!前Uber自动驾驶主管被告到破产

乔布斯遗孀裸捐 250 亿美元财产:没兴趣累积财富

时间复杂度的表示、分析、计算方法……一文带你看懂时间复杂度!

闪电网络的 5 个优点和4 个缺点、本质、来源与工作原理……一文带你读懂闪电网络!

你点的每一个在看,我认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存