project-deep-dive · diff
git:20260919.2ea5304 to git:20260920.a4843f5
1 added, 1 removed. Audit A to A.
---
name: project-deep-dive
- description: 项目与实习深挖追问法:职责边界、技术决策还原、数字来源、失败与复盘、条件变了怎么办。所有面试都加载,出简历项目题或需要判断经历真实性时必用。
+ description: 项目与实习深挖追问法:职责边界、决策还原、数字来源、复盘。每场都读。
keywords: [项目经历, 实习经历, 项目深挖, 简历追问, 技术选型, 量化结果, 复盘, 难点, 毕设, 开源, project, internship, deep dive, 实习生]
layer: base
---
## 面试官在意什么
项目题不是某个岗位的专属,而是所有技术面试的主线:面试官默认简历有水分,追问的目的是区分"独立做过""参与过"和"听说过"。一线互联网公司的一面通常用 20–30 分钟深挖一到两个项目,二面和交叉面会换一个切面再挖一次,看两次回答是否自洽;外企更偏向让候选人自己讲,然后针对每一句"我做了 X"问"具体怎么做、为什么这样做、结果怎么量化"。
校招候选人的项目多为课程设计、毕设、实习模块、开源贡献,面试官不期待架构有多复杂,看的是候选人是否真正理解自己写的每一行为什么存在、能否讲清楚边界条件和失败经历。社招候选人的项目要能对上业务规模,面试官会用自己的经验校验数字是否合理(QPS、数据量、机器数、耗时),数字对不上就会持续追问直到露馅。
面试官最在意三件事:第一,候选人个人的贡献边界是否清晰,"我们"和"我"能不能分开;第二,技术决策是有理由的还是跟着教程走的,有没有考虑过别的方案;第三,结果能不能量化、数字从哪里来、复盘有没有超出"下次注意"的深度。
怎么问才像这个方向的面试官:
- 一道项目题是一条追问链的开端而非孤立问句:每题预留至少两层向下追问的纵深,候选人答得越顺越要换切面。
- 从具体切面进入,不出"介绍一下项目"类开放题;用数字、备选方案、失败经历三把尺子检验真实性。
- 追问必须匹配候选人的项目规模:校招的课程项目问决策理由与理解深度,不苛求高可用;社招的业务项目必须对上量级和事故经历。
- 发现矛盾时直接指出并给候选人解释机会,评估的是坦诚与修正能力,不是为了让候选人难堪。
## 项目 / 实习怎么深挖
- 简历出现"负责""主导""核心" → 追个人贡献边界:拆子任务,逐项问哪些是自己从零写的。
- 简历出现百分比或倍数(提升 X%、降低 Y 倍) → 追指标定义、基线测法、样本量与环境差异。
- 简历出现"高并发""海量数据" → 追具体数字(QPS、数据量、机器数)并交叉验证合理性。
- 简历出现"优化""重构" → 追优化前的瓶颈是怎么定位的,为什么不是别的原因。
- 简历出现"分布式""微服务""集群" → 追部署形态、节点数、故障时的表现,验证是否真的是分布式而非单机。
- 简历出现实习经历 → 追导师、团队规模、CR 流程、需求是否上线、上线后数据。
- 简历出现毕设或论文复现 → 追结果与原文差距、数据集来源、自己改动的部分。
- 简历出现开源贡献 → 追 PR 链接内容、维护者反馈、被打回的原因。
## 常见失守与危险信号
- 职责边界与个人贡献:全程用"我们"叙述;被问到具体函数或文件名时含糊;描述的贡献和项目周期、代码量对不上。
- 技术选型与决策还原:回答只有"因为主流""教程用的""导师定的";说不出被放弃方案的名字;把框架名当作理由本身。
- 数字与指标来源:说不清指标定义(平均值和分位数混用);数字是估的或"听同事说的";前后两轮面试给出的数字不一致。
- 最难的问题与解决过程:所谓的难点只是"学新框架花了时间";根因描述停留在"改了个配置就好了";没有走弯路的叙述(真实排查一定有弯路)。
- 失败、事故与复盘:宣称项目从没出过问题;复盘只有"下次更仔细";把事故全推给别人或环境。
- 条件变了会怎样(压力假设):直接答"加机器""上分布式"却不说瓶颈在哪;对自己系统的瓶颈没有直觉;每个问题都用同一套"加缓存"回答。
- 验证与测试方式:只有手工点一点;把"能跑起来"当作测试通过;不知道自己项目的边界条件。
- 全局理解与上下游依赖:只能讲自己模块,对上下游一无所知;说不清数据在哪里存、什么格式;架构描述和技术栈自相矛盾。
- 实习经历的真实性:说不出导师和团队规模;所有需求都"上线了效果很好"但没有数据;不知道公司的代码规范和发布流程。
- 课程项目、毕设与开源贡献:项目和网上教程一模一样却说不出改动;结果数字只有一个不带方差;开源贡献只是改文档或格式却写成"核心贡献者"。
- 学习与技术迁移:所有技术都"看官方文档就会了"却说不出任何坑;学习路径和项目周期对不上。
- 前后一致性交叉验证:数字随追问不断变化;对矛盾的解释是新编的故事;被指出后情绪化或回避。
## 常考主题清单
只列名字、阶梯与答实的标志,作"问到哪一层算实"的参考;问哪些、问几道由这份 JD 与这份简历定,不是配额。
### 职责边界与个人贡献
- 阶梯:这个模块里哪些是你独立写的、哪些是别人的 → 你负责的部分和上下游的接口是怎么约定的 → 你不在时别人能否接手,交接文档或注释是谁写的 → 团队里为什么把这块分给你而不是别人
- 答实的标志:能第一人称说清自己的部分;主动说明哪些不是自己做的;能讲出和协作者的接口约定与磨合过程。
### 技术选型与决策还原
- 阶梯:为什么用这个框架/中间件 → 当时还比较过哪些方案,各自的缺点 → 选型时最担心什么风险,后来发生了吗 → 如果预算/人力/时间条件不同,会不会改选
- 答实的标志:能列出至少一个备选方案和放弃原因;能区分"当时的最优"和"现在回头看的最优";知道决策是谁拍板、依据是什么。
### 数字与指标来源
- 阶梯:简历上的"提升 40%"是什么指标 → 基线怎么测的、测试环境和线上环境有什么差异 → 数据有没有波动,怎么排除其他因素 → 这个提升对业务意味着什么,值不值得做
- 答实的标志:能说出测量方法与工具;主动区分测试环境与线上;知道数字的噪声来源;能把技术指标翻译成业务价值。
### 最难的问题与解决过程
- 阶梯:项目里最难的点是什么 → 难在哪里,是技术难、协调难还是排查难 → 排查过程按什么顺序、走了哪些弯路 → 现在再遇到会怎么缩短排查时间
- 答实的标志:能区分现象和根因;有假设-验证的过程;能说清当时缺了什么工具或信息;有可复用的排查方法论。
### 失败、事故与复盘
- 阶梯:项目里有没有出过线上问题或延期 → 当时的影响范围和处理时间线 → 根因归到人、流程还是系统,改进措施是什么 → 改进措施后来有没有验证有效
- 答实的标志:有具体的时间线和影响面;复盘措施是机制层面的(监控、灰度、回滚、测试用例);能反思自己在其中的责任。
### 条件变了会怎样(压力假设)
- 阶梯:流量或数据量放大十倍会先崩哪里 → 为什么是那里,依据是什么 → 第一步改什么、为什么先改它 → 放大一百倍是否还是同一条路,什么时候必须重新设计
- 答实的标志:先定位瓶颈再谈方案;能估算量级(内存、磁盘、QPS);知道当前设计的隐含假设;能区分小改和重构的边界。
### 验证与测试方式
- 阶梯:怎么知道你写的功能是对的 → 单元测试、集成测试、灰度各覆盖了什么 → 有没有测试没覆盖到而线上发现的问题 → 测试投入和交付速度怎么平衡
- 答实的标志:能说出测试分层和各自目的;有具体的边界用例;知道测试的盲区并有补救办法。
### 全局理解与上下游依赖
- 阶梯:口述项目的整体架构和数据流 → 你的模块依赖谁、谁依赖你 → 上游变更或下游故障时你的模块表现如何 → 如果让你重新划分模块边界会怎么划
- 答实的标志:能画出清晰的数据流;知道依赖方的失败模式;理解自己模块在整体中的角色与取舍。
### 实习经历的真实性
- 阶梯:实习多久、导师是谁、日常节奏 → 做的需求上线了吗,用户是谁 → 代码评审怎么进行,被打回过什么 → 实习结束时留下了什么、有没有转正评估
- 答实的标志:能描述真实的开发流程(需求评审、CR、灰度);知道自己写的代码后来命运如何;有具体被指出过的问题。
### 课程项目、毕设与开源贡献
- 阶梯:题目是老师定的还是自己选的,目标是什么 → 核心算法或模块的实现细节 → 数据集/测试样例从哪来,结果可信吗 → 如果要把它做成能用的产品,缺什么
- 答实的标志:能讲清自己改动的部分与原因;对结果的可信度有自我评估;开源贡献能说出 PR 讨论过程和维护者的反馈。
### 学习与技术迁移
- 阶梯:项目中第一次用的技术是怎么学的 → 学到什么程度,哪些是照着抄的 → 踩过哪些坑、怎么解决的 → 如果换一个类似的技术,你会先看什么
- 答实的标志:有具体的踩坑经历;知道自己掌握的深度边界;有可迁移的学习方法。
### 前后一致性交叉验证
- 阶梯:换一个角度重问同一件事 → 让候选人估算与前面答案相关的数字 → 追问某个细节看是否与之前的叙述矛盾 → 直接指出矛盾请候选人解释
- 答实的标志:数字前后一致或能解释差异;被指出矛盾时能坦诚修正;主动补充之前没说清的背景。