Google、Meta 技术面试怎么准备:按岗位拆解信号与 6 周备战排期
准备 Google 或 Meta 技术面,最容易浪费时间的方式是把所有模块平均用力:白天刷算法,晚上看系统设计,临近面试才想起项目介绍和行为题。问题不在于练得少,而在于没有把准备转换成面试官能观察到的“信号”。
大厂流程会因团队、地区、职级和招聘节奏变化,Google、Meta 也不会为每个岗位使用完全相同的题型组合。但对多数 New Grad 和 1 至 3 年经验候选人来说,评估通常围绕四件事:能否拆解问题、能否写出可靠代码或分析方案、能否讲清取舍、能否证明自己在真实协作中做过有效决策。
先按岗位决定重心,再按剩余时间压缩范围,备战才会有结果。
Introduction
先看岗位:每一轮到底在收集什么信号
先看岗位:每一轮到底在收集什么信号
电话筛选、技术初面、虚拟 onsite 或终轮面试,名称不一定一致。不要只问“这一轮会不会考系统设计”,更该问:这个岗位需要面试官确认什么能力?
| 岗位与阶段 |
常见重点 |
面试官在听什么 |
最常见失分 |
| SWE New Grad |
算法、编码、基础 BQ |
分析复杂度、边界处理、代码可运行性、沟通节奏 |
只报答案,不解释思路变化 |
| SWE 早期职场 |
算法、项目深挖、基础至中等系统设计 |
是否能独立推进模块,是否理解扩展性与故障点 |
系统设计只会背组件名 |
| DE |
SQL、数据建模、ETL、分布式数据处理、项目经验 |
数据质量、幂等性、调度、成本和可追溯性 |
只谈工具,不谈数据口径和失败恢复 |
| DS |
SQL、统计推断、指标设计、产品案例、项目沟通 |
能否定义问题、处理偏差、解释结论边界 |
直接跑模型,没先澄清业务指标 |
| ML |
编码、ML fundamentals、建模、ML system design、项目深挖 |
训练和线上服务是否连得起来,是否理解数据漂移与评估 |
只讲模型结构,回避数据和上线结果 |
Meta 面试流程常被理解成“高频算法题加快速决策”,Google 则常被认为更重视结构化推理。这样的概括有一定参考价值,但不能替代岗位判断。真正影响结果的是,你能否在每一轮稳定输出清晰的证据。
例如,同样是设计一个 feed:
- SWE 候选人要说清读写路径、缓存、容量估算、热点和故障降级。
- DE 候选人要说清事件 schema、数据延迟、去重、回填和数据质量监控。
- DS 候选人要先定义成功指标、实验分流、显著性与指标被操纵的风险。
- ML 候选人要补上特征时效、训练服务偏差、排序延迟、反馈回路和模型监控。
New Grad 不需要假装做过千万级流量系统,但需要展示可推导的工程判断。早期职场候选人则应能把自己的项目从“我负责了某个功能”,讲到约束、决策、影响范围和复盘。
四类必须提前写出来的输出物
四类必须提前写出来的输出物
技术面试准备的单位不该是“今天刷了几题”,而是“我是否有一段能在压力下复述的答案”。以下四件套建议写在同一份文档里,每周迭代。
1. 90 秒自我介绍
适合技术招聘方、hiring manager 或面试开场。结构可以是:
> 我目前专注于领域,过去在场景中解决过问题。最近一个代表项目是,我的职责是。我做出的关键技术或分析选择是,结果是。接下来我希望在类型的团队继续做___。
避免按时间顺序背简历,也不要罗列每一种语言和框架。介绍的作用是为后续追问埋下两个可展开的项目点。
2. 项目深挖问题树
每个项目至少准备一棵问题树。不要只准备“项目背景”和“结果”。
| 追问方向 |
你要准备的内容 |
| 问题定义 |
用户或业务问题是什么,成功指标如何确定 |
| 个人贡献 |
你亲自拥有的模块、决策和代码或分析工作 |
| 技术选择 |
为什么选这个方案,替代方案为何没有采用 |
| 复杂约束 |
延迟、成本、数据质量、兼容性、协作冲突 |
| 结果证据 |
指标、上线范围、反馈,或实验结果 |
| 复盘 |
哪个判断错了,下一次会如何修改 |
项目没有漂亮指标时,也可以诚实说明限制,例如项目尚未全量上线、数据样本不足,随后讲清你如何验证风险。编造影响数字比没有数字更危险。
3. 算法讲解脚本
算法题不是默写模板。每题练习时,用下面的顺序说出来:
- 复述题意,确认输入规模、重复值、空输入和返回要求。
- 先给暴力解,说明为什么时间复杂度不够。
- 提出优化思路,并讲清关键不变量。
- 写代码前说数据结构和核心循环。
- 写完手动走一个正常案例和一个边界案例。
- 报出时间、空间复杂度,并说明可否进一步优化。
英文表达不必追求复杂句。比起长篇解释,“Let me clarify the constraints first”“The invariant is…”“I will test an edge case”更容易让面试官跟上。
4. 系统设计答题骨架
系统设计面试准备的目标,不是背 Kafka、Redis 或 Kubernetes 的定义,而是能在信息不完整时推动设计。
可固定使用这个骨架:
- 澄清用户、核心用例、读写比例、延迟和一致性要求。
- 定义 API、核心实体和关键数据流。
- 粗估请求量、存储量与瓶颈,数字不必精确,但假设要明确。
- 给出高层架构,再挑最关键的一条链路深入。
- 讨论分片、缓存、异步队列、索引或预计算等取舍。
- 补充可靠性、安全性、监控与故障处理。
- 回到需求,说明设计满足了什么,也牺牲了什么。
对于早期职场 SWE,优先练“设计 URL shortener、聊天、通知、文件上传、feed”等能覆盖读写、异步处理和扩展性的题目。ML、DE 则应把数据生命周期纳入答案,而不是套用纯后端架构。
6 周、4 周、2 周,如何分配有限时间
6 周、4 周、2 周,如何分配有限时间
先算总时长。假设每周可稳定投入 12 小时,6 周就是 72 小时。不要把 72 小时拆成五个模块各 14 小时,应该让短板和岗位权重决定投入。
距离面试 6 周:建立可复用答案库
| 周次 |
重点 |
每周产出物 |
验收标准 |
| 第 1 周 |
岗位拆解、算法诊断、项目盘点 |
目标岗位题型表,2 个项目问题树 |
能说明自己最弱的两个模块 |
| 第 2 周 |
算法基础题型与讲题 |
8 至 12 道复盘题 |
每题可在 35 至 45 分钟内讲完并写完 |
| 第 3 周 |
系统设计或岗位核心技能 |
2 套完整设计稿或 SQL、ML case |
能说出至少 3 个设计取舍 |
| 第 4 周 |
项目深挖与 BQ |
6 个 STAR 事件素材 |
每个故事有个人行动和结果证据 |
| 第 5 周 |
混合 mock |
2 次算法 mock,1 次系统设计 mock |
能收到具体失分点,而非“表达不够好” |
| 第 6 周 |
弱项修补与面试模拟 |
最终答案库、面试日流程 |
连续两次 mock 达到目标节奏 |
STAR 适用于 BQ,但不要把每一题都讲成同一种“克服困难”。Google、Meta 的行为面更关注你如何处理分歧、模糊目标、失败、优先级变化和跨团队协作。
只剩 4 周:减少新题,增加回放
4 周内不建议同时从零学动态规划、分布式系统、机器学习系统设计和十个项目故事。选择一个主攻弱项。
- SWE New Grad:算法约占一半时间,剩余时间给讲题、项目和 BQ。
- SWE 早期职场:算法和系统设计各占约三分之一,项目深挖不能低于四分之一。
- DE、DS、ML:以岗位核心 case 为主,算法保持手感即可,除非初面已明确以编码为主。
- 英文表达较弱:每天留 20 分钟录音复述,不要把语言训练独立到最后一周。
此阶段每次练习都要留下可回放的记录。刷完一道题却没有写下卡点,下一次大概率还会卡在同一处。
只剩 2 周:只做“面试表现”训练
两周的目标不是补齐知识体系,而是降低失误率。保留高频基础算法、两个代表项目、三到四个 BQ 故事,以及两套最相关的系统设计题。
停止做三件事:追逐陌生难题、临时更换解题模板、为了“显得懂”而把答案讲得过度复杂。此时最有价值的是计时 mock 和逐句复盘。
用 mock 找到真正的挂点,面试前 48 小时只做检查
每次 mock 后,用下面这张表记录,避免只凭感觉判断“发挥不好”。
| 项目 |
记录问题 |
下次修正动作 |
| 澄清需求 |
是否过早开始写代码或画架构 |
开场先问 2 至 3 个关键约束 |
| 推理过程 |
是否跳步,面试官是否需要追问才能跟上 |
每一步先说假设和原因 |
| 技术正确性 |
是否遗漏边界、复杂度、失败场景 |
增加固定的测试与风险检查 |
| 沟通节奏 |
是否沉默过久或讲得过满 |
每 5 分钟总结一次当前进度 |
| 项目归因 |
是否说不清“我做了什么” |
用第一人称重写关键行动 |
| 反馈模式 |
同类问题是否重复出现 |
下次 mock 只盯一个主问题 |
面试前 48 小时,不再大量输入新资料。检查以下事项即可:
- 确认每轮面试的岗位、时长、面试官信息和时区。
- 把简历上的每个项目、每项技术都过一遍,确保能回答“为什么用它”。
- 复述两次自我介绍、两个项目和三段 BQ 故事。
- 做少量熟题热身,重点练口述与边界测试。
- 准备向面试官提问的问题,例如团队当前的技术挑战、岗位前六个月的成功标准。
- 确认网络、耳机、白板或在线协作工具,给自己留出缓冲时间。
最终决定通过率的,往往不是你见过多少题,而是面试官能否在有限时间内清楚看到:你会拆题、会验证、会取舍,也能与人一起把事情推进下去。