去年换工作的时候, 面试了一下 Google (这里说的是 Google 中国哈), 来了个 Google 面试六轮游, 结果是没通过. 现在分享下我参加 Google 面试的具体流程以及我觉得应该注意的事项, 希望对大家有帮助.

相关背景

先介绍下自己相关背景, 985 本科, Top2 硕士(其实, 大公司都比较看重第一学历的). 在校期间, 科研也没啥能拿得出手的论文. 社招时, 4 年多工作经验, 面试时为大疆后端开发TL(带3~4个人而已).

Google 整体面试流程上基本如下:

Recruiter Prescreen →
Phone Interview (1~2 sessions) →
Onsite Interview (4~5 sessions, 1 week to receive feedback) →
Hiring Committee Review →
Offer Review →
Offer Delivery (Yippee!)

我一共经历了 1 轮电话面试, 5 轮 onsite, 如果算上前面的HR 的预筛选的话, 就是 7 轮.

简历投递

之前校招其实也参加过, 无奈门槛太高, 竞争压力太大, 连面试流程都木有进. 当初校招时直接网上刷题, 这个网站上其实还能看到往年的一些题目情况: Google Code Jam. 基本上分几轮, 每轮 top xx 的选手有机会进入面试.

第一次换工作的时候, 其实也有找在 Google 的同学内推, 填了不少内推推荐理由呀等等, 最后简历都没过. 当然, 简历没过肯定也有多种理由啦, 这个其实跟各个公司都一样. 比如人家需求是招聘 P7, 以你的工作年限经验等最多就 P6, 肯定不行; 还有比如希望是招聘机器学习等相关经验的等等, 岗位信息等不匹配也不行; 当然还有一种, 岗位描述等都相关, 确实简历没啥亮点, 太平庸, 也直接被 HR 给筛选掉了.

这次其实刚开始是没有考虑过面 Google 的, 机缘巧合在 linkedin 在有 Google 的 HR 联系, 说要不要试试 Google 的机会. 当然就抱着 "试试就试试" 的想法跟进面试流程啦.

既然要尝试, 当然还是需要认真对待, 修改简历. 防止手生, 肯定需要提前准备"刷题"的. 发简历给HR 小姐姐后, HR 小姐姐会给你一些准备材料供你参考, 这份材料还相对比较丰富, 直接会告诉你面试涉及到的知识点, 推荐书籍还有一些推荐参考的视频等. 需要的小伙伴可以留言, 我整理下发给你(跟 HR 求证过, 这些资料是可以公开分享的哈).

其实, 时间有限, "刷题"准备不够, 当初预感估计面试面不下来. 不过真正走完所有面试流程, 发现其实面试题目没有想象中的那么难(然而, 我仍然没有过), 积极准备, 还是有希望的.

因为面试题目比较敏感, 不能直接分享原题哈, 不过我会根据我的理解, 找类似知识点和类似难度的题目分享一下.

HR 面试

对, 第一轮就是 HR 面试, 上面流程中的 "Recruiter Prescreen", 其实就是一些计算机相关基础的填空题和选择题. 几分钟的时间, 十几道题目. 面试过程中, 不需要给予明确的解释, 知道就是知道, 不知道就不知道. 题目可能会涉及到比如: 快排的时间复杂度是多少? 选择排序是稳定的排序算法吗? 等等之类的.

这也是我参与的所有面试当中, HR 直接参与的"技术"面的. 我理解就通过这一轮面试可以用比较少的成本把一些不合适的候选人直接排除了. 当然这种方法可能不一定适用于所有公司.

电话面试

电话面试要求直接用 Google doc 共享写代码, 需要要求你有一个稳定的网络环境. 这轮面试我理解应该不会太难, 从我面试的经验来看也确实如此.

相比 onsite, 电话面试不能在一个很好的沟通环境下, 不能面对面和面试官进行交流. 当初我面试的一道题目和二叉树的遍历相关, 当然题目不会是直接写二叉树的先序/中序/后序/层次之类的遍历, 会有一个具体的业务场景在里边. 需要你分析这个具体的业务场景, 能够抽象出题目本质上就是 二叉树的遍历方法. 这道题目算是拿下了. 实际 coding 后, 面试官可能会根据你写的 code 去提问, 一些边界条件以及让你提优化方案.

HR 小姐姐介绍的电话面试时 1-2 轮, 其实我理解, 这应该是需要看第一轮的面试官的反馈, 是否犹豫是否再安排一轮电话面试. 毕竟和 onsite 相比, 电话面试成本相对更低一些.

在线 code 其实在面试过程中, 还是蛮重要的环节. 从你 code 的细节, 包括 code style, 边界条件的判断, 哪怕是注释情况, 都能看出一些编程习惯. 我认为这个环节对于招聘一个写代码的工程师来说, 肯定是一个必不可少的环节(google 整个就搞了五六轮).

onsite

电话面试通过后, HR 会很快跟你反馈沟通面试结果, 是否通过, 以及 onsite 的安排. 因为 onsite 是 4-5 轮, 1 轮一小时的话, 需要 4-5 个小时, 其实还是蛮耗费精力的. 一般会沟通可以约 2 个半天或者 1 整天, 两个半天的好处是, 时间不会那么紧张, 前两轮后, 中途可以过几天再休整调整下再继续. 我当初就选择"快刀斩乱麻" 或者 "早死早超生" 的想法直接约了 1 天搞定.

onsite 也基本上是在电脑上 coding. 你和面试官一人一个笔记本, code 时共享屏幕, 有时候题目面试官会在白板上写出. onsite 的题目, 明显就要比电话面试的题目难度高一些呢. 但实际上比我想象中的要简单些. 因为曾经想 Google 这样的公司面试恐怕连理解题目意思都要理解大半天吧. 可能也是社招的缘故, 社招整体感觉在算法的要求比校招就要低一些. 这只是我的主观感受啦. (确实自己在当面试官的过程中, 在算法这块对社招的同学预期也会低一些)

我记得其中有一道题目就跟 leetcode 上的类似(再次声明不是原题, 也不 share 原题), leetcode 上那个题目应该是二维矩阵, 最短路径相关的. 用 dp 可以解决. 只不过, 一般题目会分为好几个小问题, 难度一般从易到难.

同时也考察到了二叉树, 仍然围绕着二叉树的遍历进行. 需要熟知二叉树的各种遍历方式, 非递归的方法(递归比较容易, 一般不会让写这个). 在遇到二叉树相关问题的时候, 是否可以联想到二叉树的遍历上来.

另外有一道系统设计的问题, "知识图谱"的概念, 围绕着"图"的相关算法, 这个要求在白板上写出设计方案和伪代码. 同时面试官会不断 push 你让你提出更优的解决方案. 有足够多的计算资源, 并行去跑, 以及具体怎么实现. 这道题目我回答的不好(当初也知道不好, 后面 HR 反馈也印证了这一点).

还有一道题目, 是解决生活中的场景题目. 需要你抽象出这个问题, 用代码来解决. 一般这种题目, 就需要反复跟面试官去沟通和确认其中的场景, 怎样把业务抽象成算法. 记得之前面试 Amazon 的时候也有类似的题目(只不过当初面 Amazon 考察的是 OO Design, 而本题是具体算法实现).

onsite 一共聊了 5 轮, 上午 2 轮, 下午 3 轮, 其中有两轮是英文面试(英文面试后面会说).

整体来说,工程师岗位面试会围绕如下几个方面进行(以下参考 HR 提供的面试指南):

  • Coding: 用熟悉的编程语言(不限)实现给定的题目. 会重点关注解题目过程中的理解和沟通能力;
  • 算法: 涉及到 排序/搜索/分治/动态规划/贪心/递归, 具体数据结构, 以及也有可能会涉及到 DijkstraA* 等算法, 需要会算法复杂度的分析;
  • 排序: 常见的排序算法, 时间/空间复杂度, 例如 快排/归并/堆排序/插入/基数排序等等;
  • 数据结构: 数组/连表/堆/栈/hash/数/二叉树等;
  • 数学: 可能会涉及到离散数学, 组合数学, 例如 N个中选k 个的方法等;
  • 图: 图的表达(例如矩阵/邻接表), bfs/dfs 等;
  • 递归: 递归和迭代的转换;
  • 其他: 设计和操作系统等;

以上这部分摘自 HR 提供的 Google 工程师面试指南.pdf, 有需要的同学(已和 HR 确认, 此资料可共享), 从公众号后台回复 "Google面试指南+邮箱", 我会发送给你(或者直接扫码加我微信也可以).

吃饭

Google 食堂

中午 HR 小姐姐会安排一个 Google 的工程师, 带你吃饭, 跟你聊天. 有任何疑问都可以跟他沟通. 不得不说, Google 的伙食还是蛮不错的.

我当初就跟小哥哥聊了下他在 Google 工作的感受.

英文面试

英文面试, 单独拿出来说一下, Google 中国这边, 有 1-2 轮. 建议还是提前准备一下, 练习一下基本的口语. 不要因为面试过程中, 突然让你只用英语沟通, 让气氛变得紧张起来, 导致发挥不好. 自我介绍之类的肯定你可以提前准备, 然后就是你可以尝试比如拿其中的题目自己模拟一下面试场景. 主要是可能需要提前熟悉一下基本的计算机相关词汇, 不要到时候想表达确表达不出.

整体来说, Google 的面试确实很难, 但确实也没我想象中的那么难. 但要求确实是很高的, 基本上一些边界 case 等也都是在考察范围内的. onsite 面试完后, 在第二天, 我就得到结果通知, 面试没通过. 事实来看没通过的结果反馈比通过反馈更快. HR 会反馈你哪里表现得不够好, 然后如果想进 Google, 就加油刷题, 说 1 年后, 可以再次尝试, 保持联系哦.

哈哈, 以上就是我这次完整的 Google 面试之旅, 虽然失败(实力还不够)了, 但还是有收获的. 如果大家有足够自信(当然也要有一定实力哈), 也可以找我帮忙内推, 我可以给在 Google 的同学帮忙或者直接给招聘的 HR 同学. ​如果要面试 Google, 刷题是在所难免的了. 整体来讲, Google 的面试体验还是很不错的, 全程 HR 小姐姐悉心指导和及时反馈, 给 HR 小姐姐点赞 ​

如果大家觉得这篇文章有所收获, 还希望大家帮忙分享, 转发 和 "在看". 感谢!

面试了 6 轮 Google 中国 之后,还是挂了的更多相关文章

  1. 2016 Google中国开发者大会游记

    本文地址:http://www.cnblogs.com/likeli/p/6146117.html 写在前面 平时一直埋头写代码,这次既然Google给了门票,也就来看看,看看这种世界顶尖的科技公司, ...

  2. 几个Google中国的访问IP

    前面几个IP的访问速度比较快. 74.125.31.106 173.194.45.20 173.194.45.19 173.194.45.18 173.194.45.17 173.194.45.16 ...

  3. 面试体验:Google 篇(转)

    http://www.cnblogs.com/cathsfz/archive/2012/08/08/google-interview-experience.html 尝试在自己的博客上搜索点东西,结果 ...

  4. 面经:Google两轮背靠背

    如题,谷歌两轮背靠背电面.两轮都是废话不多说直奔coding,虽然第一轮的中国大哥还是花了一点点时间了解了一下我的背景.毕业时间.research方向.说好的research面呢? 中国大哥出的题: ...

  5. Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了

    作者:Glowin链接:https://zhuanlan.zhihu.com/p/22881223来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文地址:Google ...

  6. Steve Yegge:Google面试秘籍

    我憋了很长时间想写点关于去Google面试的秘籍.不过我总是推迟,因为写出来的东西会让你抓狂.很可能是这样.如果按统计规律来定义"你"的话,这文章很可能让你不爽. 为啥呢?因为啊- ...

  7. Google前工程经理王忻:如何准备软件工程师的面试

    http://t.jobdu.com/thread-368-1-1.html 导读:原文作者王忻,Google前工程经理,2003年月加入Google,是Google Lively背后的主导力量,是G ...

  8. 如何看待Google欲回归中国事件

    最近一条新闻刷爆了朋友圈: 8 月 6 日,<人民日报>在它位于 Facebook.Twitter 社交媒体平台的官方账号上发布了一篇标题为<Stability prerequisi ...

  9. 【外企测试面试、笔试】分享下历时8轮、30k+的外企面试全过程

    外企福利 薪酬体系完善(期权.股票等),定期薪酬市场调研,紧跟一线互联网大厂 加班很少很少 年假多,15-20天 国外免费旅游.旅游金 免费培训英语(还可能出国培训) 定期技术交流 免费零食 定期团建 ...

随机推荐

  1. Java子父类间静态代码块、非静态代码块、构造方法的执行顺序

    子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A ...

  2. Unity3D的UGUI布局锚点自动绑定关系

    [MenuItem("CONTEXT/RectTransform/Auto")] public static void AutoRectAnior() { Debug.Log(&q ...

  3. JS的函数和对象四

    复习 数组 toString/join/concat/slice/splice/reverse/sort/ push/pop/unshift/shift 字符串 new String(2)  /  S ...

  4. redis python操作

    1.基于连接池方式实现对五个数据类型操作,每种数据类型2个操作 2.基于spring-data-redis 基于jedis来实现对五种数据类型操作,每种数据类型实现两个操作,包括事务 以上为基于jav ...

  5. iframe中有ajax,设置iframe自适应高度

    ------------------------------------------------------------------- http://www.jb51.net/article/1578 ...

  6. poj1904 完美匹配+Tarjan

      King's Quest Time Limit: 15000MS   Memory Limit: 65536K Total Submissions: 9460   Accepted: 3497 C ...

  7. 《机器学习_08_代价敏感学习_添加sample_weight支持》

    简介 这一节主要是为模型打补丁,在这之前笔者已经介绍并实现了几种典型的机器学习模型,比如线性回归.logistic回归.最大熵.感知机.svm等,但目前它们都有一个共性,那就是构造的损失函数对每个样本 ...

  8. PHP SESSION 操作

    Session的声明与使用 Session的设置不同于Cookie,必须先启动,在PHP中必须调用session_start().session_start()函数的语法格式如下: Bool sess ...

  9. 如何使用git命令行上传项目到github

    第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建. 现在我通过命令行在桌面新建一个TEST文件夹(你也 ...

  10. vue中使用剪切板插件 clipboard.js

    vue中使用剪切板需要借助一个插件,clipboard,使用方法还是很简单的,先下载,然后引入: npm i clipboard -S //引入 import Clipboard from 'clip ...