原文最初发表于 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/
评论