写点什么

过来人教你怎么在 Google 面试通关

  • 2020 年 5 月 29 日
  • 本文字数:2919 字

    阅读完需:约 10 分钟

过来人教你怎么在Google面试通关

原文最初发表于 Crunchskills 网站,经原作者 Jameson Quave 授权,InfoQ 中文站翻译并分享。


导读:又到毕业季,想去 Google 谋得 Offer?可是,面试这一关又怎么过呢?别急,有过来人告诉你如何应对 Google 的面试。祝你好运!


如果你是一名工程师或准工程师,想在 Google 谋得一个职位,你可能需要花点时间来研究 Google 面试中最常见的问题。在本文中,我想展示一些 Google 在电话面试时最常提到的问题,以及更深层次的初高级工程师职位的面试题。


1. Google 最热门的面试题

给定一个任意字符串,例如,aabcdef。返回第一个重复出现的字符。


这个问题在电话面试中经常被问到,比其他任何问题都要多。令人惊讶的是,大部分应聘者居然败在这道看似简单的题,是因为他们提供的实现过于低效,从而阴沟里翻船。我们在最近一篇文章《Google 最常见的电话面试题》(Most common phone interview question at Google.)中,详细讨论了这个问题。


正解应该是 线性时间,如下所示:


Create a hashmap of seen charactersFor all characters in string  If character is already in the hashtable    Return character // Solution found!  Else    Add character to hashtable // First occurence of a character found
复制代码


2. 最常问的现场面试题

给定一个整数列表,找出最先的连续整数集,其和为给定的数字


我们在 GeekforGeeks 的朋友居然用六种不同的编程语言解答了这道题,太厉害了!你可以去看看他是怎么做的:https://www.geeksforgeeks.org/find-subarray-with-given-sum/


下面是 shreyanshi_arun 贡献的,用 Python 写的最佳答案:


# Returns true if the# there is a subarray# of arr[] with sum# equal to 'sum'# otherwise returns# false. Also, prints# the resultdef subArraySum(arr, n, sum):  # Pick a starting  # point  for i in range(n):    curr_sum = arr[i]    # try all subarrays    # starting with 'i'    j = i+1    while j <= n:      if curr_sum == sum:        print ("Sum found between")        print("indexes %d and %d"%( i, j-1))        return 1      if curr_sum > sum or j == n:        break      curr_sum = curr_sum + arr[j]      j += 1  print ("No subarray found")  return 0# Driver programarr = [15, 2, 4, 8, 9, 5, 10, 23]n = len(arr)sum = 23subArraySum(arr, n, sum)# This code is Contributed by shreyanshi_arun.
复制代码


  • 输出:索引 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 的核心价值观是:


  1. 以用户为中心,其他一切纷至沓来。(Focus on the user and all else will follow.)

  2. 最好的方式是将一件事情做到极致。(It’s best to do one thing really, really well.)

  3. 快比慢好。(Fast is better than slow.)

  4. 网络需要民主的作风。(Democracy on the web works.)

  5. 您不必坐在台式机前也能获得所需的答案。(You don’t need to be at your desk to need an answer.)

  6. 您可以通过正当途径赚钱。(You can make money without doing evil.)

  7. 信息始终在不断地累加。(There’s always more information out there.)

  8. 对信息的需求超越了国界。(The need for information crosses all borders.)

  9. 没有西装革履也一样严肃认真。(You can be serious without a suit.)

  10. 只是优秀还不够。(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/


2020 年 5 月 29 日 11:231479

评论

发布
暂无评论
发现更多内容

JavaScript单元测试的“抹茶”组合:Mocha和Chai

devpoint

JavaScript 单元测试 8月日更

还在死磕 Ajax?那可就 out 了!

编程三昧

JavaScript 大前端 8月日更 Fetch

破解AI开课难题!2021 全国人工智能师资培训落地厦门大学

百度大脑

人工智能

ipfs矿机公司实力排行如何?ipfs矿机排名如何?

ipfs矿机公司实力排行如何 ipfs矿机排名如何

OceanBase源码解读(二):SQL的一生

OceanBase 数据库

数据库 分布式数据库 oceanbase OceanBase 开源 OceanBase 社区版

敏捷开发

LeifChen

Scrum 敏捷开发 迭代 8月日更

ipfs挖矿是怎样赚钱的?ipfs挖矿值得投资吗?

IPFS挖矿值得投资吗 IPFS挖矿是怎样赚钱的

Magician has released a new version

Magician网络编程包

Java Web 网络编程 io nio

Obsidian一个不错的软件

IT蜗壳-Tango

8月日更

「最好」的敌人是「好」

非著名程序员

提升认知 认知提升 个人提升 8月日更

基于springcloud springboot vue elementui商城源码毕设实战

清风

Vue Java 分布式 毕业设计

java springboot微信小程序授权登录开发

清风

小程序 java小程序

Go-基本元素

HelloBug

Go 语言

云原生时代到来了么?

escray

学习 极客时间 如何落地业务建模 8月日更

Go- 常量

HelloBug

常量 const Go 语言

前端之算法(七)动态规划

Augus

算法 8月日更

架构实战营模块五作业

maybe

上游思维:在系统的关键处找一个支点

石云升

读书笔记 8月日更 上游思维

🏆【分布式技术专题】【分布式技术专题】RocketMQ延迟消息实现原理和源码分析

浩宇天尚

RocketMQ 延时队列 8月日更 DelayedQueue

【效率为王】docsify 搭建高颜值文档博客

村雨遥

博客 8月日更

【架构设计模块五】:设计微博系统中”微博评论“的高性能高可用计算架构

Ryoma

CODING DevOps 高级架构师王炜入选木兰开源社区首批导师

CODING DevOps

DevOps Nocalhost 木兰开源社区 开发者生态

耗时24小时整理了网络安全学习路线,非常详细!

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

Flink 和流式应用运维(十-上)

数据与智能

flink API REST API

Go- 变量

HelloBug

变量 Go 语言

简简单单实现 Python Web 的登录注册页面,还包含一半逻辑。

梦想橡皮擦

8月日更

高可用架构(下)

编号94530

数据库 架构设计 异地多活容灾 高可用架构

蔚来事故背后,“致命弯道”在辅助驾驶和自动驾驶之间

脑极体

DAPP去中心化交易所开发|DAPP与APP的区别

Geek_23f0c3

交易所开发 去中心化交易所系统开发 DAPP智能合约交易系统开发

GIT远程仓库

一个大红包

8月日更

从0开始的TypeScriptの十:泛型

空城机

typescript 大前端 8月日更

过来人教你怎么在Google面试通关-InfoQ