总有人喜欢问:去 Google 这样的公司工作需要什么样的硬性指标么?

我只想说:别再神化谷歌了!
说实话去谷歌工作,有且只有一个硬性指标:通过谷歌的4-6轮面试,通过team match就能拿到offer。无关性别、无关年龄、甚至无关学历。

那么,给大家科普一下 谷歌的面试流程

一般谷歌是有4-6轮的面试,按照考试类型可以简单分为算法、设计和BQ(下方有具体解释)。
Coding轮(50%-80%):
简单来说就是考算法题,除了面试官出的题要做出来,还要应对面试官的followup,一般能把题目做出来,且和面试官进行流畅的沟通,这轮基本就稳了。
Design轮(20%-30%):
按照类型可以简单分为系统设计面向对象设计。面向对象设计(OOD)主要面向应届生和工作1-3年的程序员,系统设计则主要面向工作3年+的资深工程师。
Behavioral Question轮(10%-30%):
即行为面试问题,简单来说就是不考技术相关的知识,而是考验你与人沟通、合作、处理问题等职场软技能。

接下来,具体介绍一下谷歌面试形式,以及该怎么准备。

算法轮:着重DP,背近1个月的面经题
首先,根据硅谷资深面试官令狐冲的讲座分享,想进谷歌必须要刷难题。谷歌算法考察范围很广,特别喜欢DP红黑树 Red-black Tree线段树 Segment Tree
谷歌的算法轮会占到2轮以上,也有4轮全考算法的情况,可以说再给大家传授一个高效解法——想过谷歌的算法轮,刷近一个月的面经题就够了
谷歌的算法题难度逆天,是因为它爱出新题,所以很多人也就理所当然的认为看谷歌面经没用。实际上,每个公司都是有标准化的题库的,谷歌也有题库,只是ban题速度更快一些。
ban题快也就意味着题库小,不能像FB这样动辄几百道题随机抽,每个时间段的题目可能也就几十~一百题。
换言之,面试前只要把谷歌近期的题目刷上一遍,大概率都能遇到原题。而我也把最近搜集的新题都整理好了,需要自取:
200 · 最长回文子串
575 · 字符串解码
1082 · 员工的重要度
257 · 最长字符串链
1001 · 小行星的碰撞
984 · 等差切片 II - 子序列
890 · 最短的唯一单词缩写
1869 · 统计全为 1 的正方形子矩阵
1024 · 满足要求的子串个数
978 · 基础计算器
300 · 会议室
4156 · 合并区间
122 · 直方图最大矩形覆盖
1370 · 赛车
615 · 课程表
在这套Google往年题库里,则是搜集了谷歌近2年来的算法真题,并且会按时进行更新。感兴趣的话可以来刷刷看。
Design轮:根据不同的职级进行相应的准备。
前面简单地提到过,设计轮主要是按照工作年限考察不同的类型的题目。
一张图,先带你弄清楚OOD和系统设计的区别:
01
3年以下的求职者:着重面向对象设计OOD
OOD即面向对象设计,应届生和工作1-3年的求职者常考这类题型。如果还不知道OOD是什么,这节OOD全扫盲视频强烈推荐给大家!
(免费!点击“免费试听”即可白嫖)
扫码报名,免费试听
OOD的经典问题包括电梯设计、停车场问题、咖啡机等,通俗理解即“拥有实体”的设计题目。
要攻克OOD面试 ,首先要搞懂OOD面试的评判标准——SOLID原则
• S – Single responsibility principle
• O – Open close principle
• L – Liskov substitution principle
• I – Interface segregation principle
• D – Dependency inversion principle
关于这几个原则的具体解释,九章的《面向对象设计》讲得很详尽了,感兴趣的话可以去免费体验一下~
扫码报名,免费试听
而这类问题也有比较通用的解法,同样是来自《面向对象设计》的5C解题法:
Clarify 说人话:通过和面试官交流,去除题目中的歧义,确定答题范围。
Core objects 说人话:确定题目所涉及的类,以及类之间的映射关系。
Cases 说人话:确定题目中所需要实现的场景和功能。
Classes 说人话:通过类图的方式,具体填充题目中涉及的类。Correctness 说人话:检查自己的设计,是否满足关键点。
02
3年以上的求职者:着重准备系统设计
系统设计的常见形式有2种,一种是设计XX系统,另一种则是设计XX系统中的XX功能。由于设计XX系统考察的非常广泛,所以目前公司更倾向于考察设计XX系统中的XX功能。
设计某某系统 Design XXX System
• 设计微博 Design Twitter
• 设计人人 Design Facebook
• 设计滴滴 Design Uber
• 设计微信 Design Whatsapp
• 设计点评 Design Yelp
• 设计短网址系统 Design Tiny URL
• 设计NoSQL数据库 Design NoSQL
设计某某系统中的某某功能
• 设计一个功能实现对用户访问频率的限制
• 设计一个功能实现统计某个具体事件的历史发生次数
• 设计删除一个 Tweet 的功能
• 设计邮件系统中将所有邮件标记为已读的功能
补充:Google 提出的示例系统设计问题
  • 你会如何设计谷歌的网络索引数据库
  • 你会如何设计 Google Docs
  • 你会如何设计 Google Home(语音助手)
  • 你会如何设计亚马逊的图书预览
  • 你会如何设计一个社交网络
  • 你会如何设计一个任务调度系统
  • 你会如何设计一个售票平台
  • 您将如何设计一个计算 YouTube 视频点击次数的系统
  • 您将如何设计一个可以显示 1000 万以上用户状态的网页,包括:姓名、照片、徽章和积分
  • 知道每个作业需要一定数量的 CPU 和 RAM,并且每台机器具有不同数量的 CPU 和 RAM,您将如何设计一个在机器机架上调度作业的函数?可以在同一台机器上调度多个作业,只要它可以支持
而这类问题的解法,在《系统架构设计2021版》中,老师也给系统设计总结了一套对应的解法——4S分析法
Scenario 场景
说人话:需要设计哪些功能,设计得多牛
• Ask / Features / QPS / DAU / Interfaces
Service 服务
说人话:将大系统拆分为小服务
• Split / Application / Module
Storage 存储
说人话:数据如何存储与访问
• Schema / Data / SQL / NoSQL / File System
Scale 升级
说人话:解决缺陷,处理可能遇到的问题
• Sharding / Optimize / Special Case
根据这一思路,就可以逐步完成一个系统的构建,也可以来参考《系统架构设计2021版》首节免费试听课的实例——设计Twitter。
扫码报名,免费试听
免费试听课上还会带你解决以下问题:
  • 系统设计中常说的 Tradeoff 是什么
  • 什么叫做 SOA (Service Oriented Architecture)
  • 什么是 Pull Model & 什么是 Push Model
  • 数据存储系统有哪些,什么样的数据适合存在什么样的数据存储系统中
  • 什么是异步任务和消息队列 (Message Queue)
  • 什么是数据的可持久化 (Persistent)
  • 什么是去标准化 (Denormalize)
  • 什么是惊群效应 (Thundering Herd)
  • 有哪些与 News Feed 类似的系统设计问题
总之,白嫖不亏!
BQ轮:了解谷歌的企业文化,特质与之匹配
BQ,即行为面试问题,是在技术面以外的,考察求职者面试软技能的方式。面试官会通过20-40min的时间,考察求职者的沟通能力、处理和解决问题的能力,与公司文化的契合程度等。
Google 提出的行为问题示例
  • 说说你自己
  • 为什么是谷歌?
  • 告诉我你最近参与的一个/有趣的项目
  • 告诉我你必须解决团队冲突的经历
  • 你最喜欢的谷歌产品是什么
在谷歌的BQ面试之前,你需要关注以下这些:
  • Google 的使命宣言
  • Google 的价值观
  • 谷歌战略拆解
而BQ问题通常没有标准的答案,市面上相关的资料也没有很多,前谷歌资深面试官的《面试软技能指导》就有比较体系的介绍。
课程会涉及BQ问题解法和模板,免费的全英文模拟面试,谈薪技巧等干货,首节免费试听课上还会提供1V1免费面试的机会,感兴趣的同学千万不要错过!
扫码报名,免费试听
最后,也祝大家都能成功进入谷歌!!!
戳下方
阅读原文”免费试听课程
继续阅读
阅读原文