
原文最初发表于 Crunchskills 网站,经原作者 Jameson Quave 授权,InfoQ 中文站翻译并分享。
导读:又到毕业季,想去 Google 谋得 Offer?可是,面试这一关又怎么过呢?别急,有过来人告诉你如何应对 Google 的面试。祝你好运!
如果你是一名工程师或准工程师,想在 Google 谋得一个职位,你可能需要花点时间来研究 Google 面试中最常见的问题。在本文中,我想展示一些 Google 在电话面试时最常提到的问题,以及更深层次的初高级工程师职位的面试题。
1. Google 最热门的面试题
给定一个任意字符串,例如,aabcdef。返回第一个重复出现的字符。
这个问题在电话面试中经常被问到,比其他任何问题都要多。令人惊讶的是,大部分应聘者居然败在这道看似简单的题,是因为他们提供的实现过于低效,从而阴沟里翻船。我们在最近一篇文章《Google 最常见的电话面试题》(Most common phone interview question at Google.)中,详细讨论了这个问题。
正解应该是 线性时间,如下所示:
2. 最常问的现场面试题
给定一个整数列表,找出最先的连续整数集,其和为给定的数字 。
我们在 GeekforGeeks 的朋友居然用六种不同的编程语言解答了这道题,太厉害了!你可以去看看他是怎么做的:https://www.geeksforgeeks.org/find-subarray-with-given-sum/
下面是 shreyanshi_arun 贡献的,用 Python 写的最佳答案:
- 输出:索引 1 和 4 之间的总和。 
- 复杂度分析: 
- 时间复杂度:最坏的情况下为 。 
- 由于使用嵌套循环遍历数组,故时间复杂度为 。 
- 空间复杂度:。 
- 因为需要不断的额外空间。 
3. 第二常见的 Google 现场面试题
给定一对相同的二叉树(A 和 B),在不修改任何树的情况下,返回树 B 中的引用到树 A 中的节点 N。
这个问题有几个变体,但总是有相同类型的解决方案。这个过程包括简单地对第二棵树 B 进行广度优先搜索(Breadth-first search,BFS),并将每个节点与目标 N 进行比较,一旦找到匹配项,只需将其返回即可。这个问题对于 Google 的面试来说,过于直截了当,因为这是一个以沟通为主的问题。面试官问这个问题是想看看,当给出一个微不足道的问题时,求职者是否还能清晰地解释出一个近乎于自动的思维过程。
4. 针对云计算解决方案工程师的 Google 热门面试题
假象一下,你与一个企业客户合作。他们关心的是将服务器迁移到云端上。你将如何处理这种情况?
这个问题有点不同,因为没有唯一的正解。对于这个问题,以及类似的问题,最好是依靠给出一个原创性的答案,帮助你证明你将如何体现出 Google 的核心价值。你应该还要让面试官知道,你对 Google Cloud Platform(GCP)中 Google 自家的云产品的理解有多深刻。
前首席执行官 Eric Schmidt 曾在《重新定义公司:谷歌是如何运营的》(How Google Works)一书中写道,Google 的核心价值观是:
- 以用户为中心,其他一切纷至沓来。(Focus on the user and all else will follow.) 
- 最好的方式是将一件事情做到极致。(It’s best to do one thing really, really well.) 
- 快比慢好。(Fast is better than slow.) 
- 网络需要民主的作风。(Democracy on the web works.) 
- 您不必坐在台式机前也能获得所需的答案。(You don’t need to be at your desk to need an answer.) 
- 您可以通过正当途径赚钱。(You can make money without doing evil.) 
- 信息始终在不断地累加。(There’s always more information out there.) 
- 对信息的需求超越了国界。(The need for information crosses all borders.) 
- 没有西装革履也一样严肃认真。(You can be serious without a suit.) 
- 只是优秀还不够。(Great just isn’t good enough.) 
注:Amazon 的 14 条领导力原则也包含了一个非常相似的最高价值理念:
顾客至上:
领导者从客户入手,再反向推动工作。他们努力工作,赢得并维系客户对他们的信任。虽然领导者会关注竞争对手,但是他们更关注客户。
5. 热门 Google 面试题(适用于所有角色)
你为什么想在 Google 工作?
我知道你在想什么,这个问题听起来很简单。但是,如果你知道有那么多候选者在这个问题上给出了让人感到腻味、未经深思熟虑的答案时,你会不会感到惊讶呢?这些候选人因为没有提前想好怎么回答这一问题,反而把求职面试给搞砸了!让我们来回顾一下那些“糟糕的答案”,以便了解对你来说,什么样的才算“好答案”。
我想在 Google 工作,因为我每天都在用 Google。
看上去,这个回答似乎不错,但这并不是因为它没有提到你的长处。
我想在 Google 工作,因为在那里,我可以解决难题,并挑战自己。
还是那样,这句话表面上听起来可能挺好的,也不像第一个答案听上去那么糟糕,然而,这个回答还可以答得更好一些。让我用一个简单的三个步骤来解释一下吧。
第一步:首先要说一些关于 Google 的正面的、不常见的或能够让你脱颖而出的东西。例如:
我之所以渴望去 Google 工作,首先是因为我非常敬佩他们凭借 Google Cloud Platform 在对抗 Amazon 时取得的优势。
老实说,仅仅这样回答并不是一个很好的答案,但它却是一个不错的做法,因为以这样开头,会给面试官留下一个好印象,同时也能够显示出你对 Google 的了解程度有多深。
第二步:我们要告诉他们,你有什么好处。你的回答这一部分,对我们来说非常重要。你要阐述非常诚实的原因:为什么想去 Google 工作。在这个回答中,你可以表达出有些自私的想法,甚至也可以是消极的想法。为什么可以这样做?因为你的目的是要跟面试官建立起信任感。举个例子:
在我花了大量时间来研究自己所做的选择后,我倾向于认为,Google 就是我能最有效地追求自己在机器学习方面的专业兴趣的公司。
最后一步:我们要把自己的优势告诉面试官,并从帮助公司的立场出发,告诉他们,我们的优势源于对他们公司有所帮助。
我还认为,我在计算机科学和行为面试中简明扼要的写作能力,正是 Google 在未来五到十年内发展所需要的。
对,就是这样!上面列出的五个问题,就是你在申请 Google 软件开发相关职位最有可能会遇到的面试题。
原文链接:
https://crunchskills.com/google-interview-questions-for-software-engineering-roles/












 
    
评论