Google 的面试流程是怎样的?


我曾经也面过G家然后还通过了,只是最后还是选择了FB…… 不过以我之后多年的面试经验,以及认识很多G家的工程师和HR,对这个问题还是很有心得的。

首先G家的面试流程会涉及到两种面试形式,每一轮面试官都会给出反馈,然后确定后续的步骤。

一、面试流程

第一阶段:电面(Phone Screen)

这一轮的面试官很有可能是你以后的同事或manager。

如果你申请SDE岗位,这一轮将持续 30~60 分钟。回答编码相关问题时,你需要一边在与面试官共享的 Google Doc 上编写代码,一边清晰地阐述你的思路。

Tips:建议使用耳机或扬声器,以便你能够自由输入相关内容。

电面会问到数据结构和算法。使用你最擅长的编程语言写 20-30 行代码。根据如下步骤做编码练习:

  1. 你会被问到一个开放式的问题,面试官会据此问一些问题,然后制定一些要求
  2. 用一个算法解释这个问题
  3. 将其转换为可行的代码(因为有时间限制,不要想着一下子写出完美的代码,写下你所想到的,稍后再进行修改,还要确保考虑了边界情况和运行问题)
  4. 优化代码,测试用例并发现错误

第二阶段:现场面试(Onsite)

一般会有4轮面试,(其中一些面试官可能成为你以后的同事,还有一些是跨职能部门的员工)每轮的时间大约在45分钟。

如果面试SDE岗位,面试官会更看重你的编码技能和技术领域的专业知识。(包括工具或编程语言,以及有关数据结构和算法等主题的一般知识)

面试官通常会反复提及相关的问题,就像讨论实际工作中遇到的问题一样,因为他们通过双向沟通碰撞思维逻辑,也能考察出你的底层技术是否扎实,沟通能力是否流畅,以及逻辑思维是否严谨。


需要注意的是,今年受疫情影响,包括Google在内的大厂的onsite都改成了远程面试(VO),并且随着疫情的扩散,大厂也一次次在推迟work from home的日期,目前宣布到明年第一季度开放办公室的较多,虽然不确定明年会不会继续延期,但今年的面试肯定都是VO了。

在说回实际面试,很多人往往不知道该怎么跟面试官沟通,可能是:

  • 平时刷题达人,一面试就大脑放空
  • 明明有解题思路,却跪在了英语口语不好,表达不出
  • 对Behavior Question无能为力,总是掉进面试官的套路里
  • 面试时不知道问什么问题,全场尬聊……

那么针对这些面试“拦路虎”,推荐试听体验《面试软技能指导 - BQ / Resume / Project》,由前Google工程师&资深面试官分享,从简历指导、全英文模拟面试、行为类问题、薪资谈判等几个大方向解决大厂面试难点。

第一章《除了刷题,还有哪些技能是拿到offer不可或缺的要素》开放免费试听,还能和老师在线英文模拟面试。

二、如何准备面试?

适用于技术职位

1、编码实践

你可以在 LintCode、CodeLab、Quora 和 Stack Overflow 等网站上找到一些编码问题示例。美国大公司面试真题训练和 Google Mock Interview 也值得一做。

面试会要求手写,所以请在纸张或白板上练习编写代码。一定要测试你的代码,并确保它易读而且没有错误。不要纠结于小的语法错误,比如对于给定的方法用哪个子串,直接选择一个,让面试官知道就可以了。

2、编码

至少擅长一种编程语言,最好是C++,Java,Python,Go或C。如果你擅长API、面向对象设计和编程,知道如何测试代码,以及知道如何处理边界情况更好。

Tips:面试注重的是概念理解而不是记忆。

3、算法

掌握用自下而上和自顶向下的算法解决问题。知道算法的复杂性,以及如何优化/改变算法。熟悉解决Google问题的算法:排序,分治法,动态规划,贪心,递归或有关数据结构的算法。

知道Big-O符号(例如运行时间),并准备好像Dijkstra和A *这样的复杂算法。在编写代码之前,建议你讨论或阐述你所想到的算法。

4、排序

熟悉常见的排序类型以及它们有效的输入数据类型。考虑运行时间和空间。例如,在特殊情况下,插入排序或基数排序比通用的快速排序、归并排序、堆排序答案要好得多。

5、数据结构

研究尽可能多的数据结构。最常使用的数据结构是数组,链表,堆栈,队列,哈希集合,哈希图,哈希表,字典树,树和二叉树,堆和图。

了解内部的数据结构,以及哪些算法倾向于和哪个数据结构一起使用。

6、数学

一些面试官会提一些基本的离散数学问题。尤其在Google,因为Google的工作经常会接触计数问题、概率问题和其他离散Math 101情况。

在面试之前花上一些时间,记住基本概率理论和组合的基本要素。熟悉n选择问题和类似的问题。

7、图

考虑一个问题是否可以应用于距离、搜索、连接、循环检测等图形算法中。

有三种图形表示方法:对象和指针、矩阵、邻接列表,你需要熟悉每个方法及其利弊。掌握基本图遍历算法、广度优先搜索和深度优先搜索。了解它们的复杂度,了解什么情况该用哪个,以及如何在实际代码中实现它们。

8、递归

许多编码问题涉及递归的思想和用递归编码给出解决方案。对于可以用迭代的方法解决的问题,用递归找到更优的解决方案。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM