去年换工做的时候, 面试了一下 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 求证过, 这些资料是能够公开分享的哈).session
其实, 时间有限, "刷题"准备不够, 当初预感估计面试面不下来. 不过真正走完全部面试流程, 发现其实面试题目没有想象中的那么难(然而, 我仍然没有过), 积极准备, 仍是有但愿的.数据结构
由于面试题目比较敏感, 不能直接分享原题哈, 不过我会根据个人理解, 找相似知识点和相似难度的题目分享一下.机器学习
对, 第一轮就是 HR 面试, 上面流程中的 "Recruiter Prescreen", 其实就是一些计算机相关基础的填空题和选择题. 几分钟的时间, 十几道题目. 面试过程当中, 不须要给予明确的解释, 知道就是知道, 不知道就不知道. 题目可能会涉及到好比: 快排的时间复杂度是多少? 选择排序是稳定的排序算法吗? 等等之类的.
这也是我参与的全部面试当中, HR 直接参与的"技术"面的. 我理解就经过这一轮面试能够用比较少的成本把一些不合适的候选人直接排除了. 固然这种方法可能不必定适用于全部公司.
电话面试要求直接用 Google doc 共享写代码, 须要要求你有一个稳定的网络环境. 这轮面试我理解应该不会太难, 从我面试的经验来看也确实如此.
相比 onsite, 电话面试不能在一个很好的沟通环境下, 不能面对面和面试官进行交流. 当初我面试的一道题目和二叉树的遍历相关, 固然题目不会是直接写二叉树的先序/中序/后序/层次之类的遍历, 会有一个具体的业务场景在里边. 须要你分析这个具体的业务场景, 可以抽象出题目本质上就是 二叉树的遍历方法. 这道题目算是拿下了. 实际 coding 后, 面试官可能会根据你写的 code 去提问, 一些边界条件以及让你提优化方案.
HR 小姐姐介绍的电话面试时 1-2 轮, 其实我理解, 这应该是须要看第一轮的面试官的反馈, 是否犹豫是否再安排一轮电话面试. 毕竟和 onsite 相比, 电话面试成本相对更低一些.
在线 code 其实在面试过程当中, 仍是蛮重要的环节. 从你 code 的细节, 包括 code style, 边界条件的判断, 哪怕是注释状况, 都能看出一些编程习惯. 我认为这个环节对于招聘一个写代码的工程师来讲, 确定是一个必不可少的环节(google 整个就搞了五六轮).
电话面试经过后, 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 提供的面试指南):
Dijkstra
和 A*
等算法, 须要会算法复杂度的分析;以上这部分摘自 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 小姐姐点赞
若是你们以为这篇文章有所收获, 还但愿你们帮忙分享, 转发 和 "在看". 感谢!