面试题库 III · Discussion + BQ:把判断讲出来、做选择、经得住追问(中文版)
第一篇问的是知识能不能想起来,第二篇问的是能不能在计时下写出代码或完成推导。这一篇问的是 另一件事:当问题还没有被定义完整时,别人能不能跟上你的判断过程。
这不是一组背熟的演讲稿。每节先建立 mental model,再把它变成口头题、回答结构、追问、陷阱和 练习。所有示例措辞都明确只是示范。任何关于你的 ownership、规模、成本、失败、冲突或影响的 陈述,都必须由你提供事实。
怎么用。选一道题,用三十秒画出回答地图,然后开口回答。除非题目另有时间要求,两分钟就停。 再展开答案,比较的是结构,不是句子;最后让模拟面试官沿一个分支连续追问三层。
通用主线。澄清要做的决定与约束 → 建立 baseline → 提出相互竞争的假设 → 设计最便宜的区分性测试 → 定义成功指标与 guardrail → 做出选择并解释取舍 → 指出 failure mode 和下一项决定。
本文延续已有的 three gates / seven buckets:重点展开 Bucket 5(ML 系统设计)与 Bucket 6(research taste、项目深挖和价值判断),并把科学推理与口头 debugging 作为 跨轮次能力。它是复习索引,不是对任何实验室标准流程的断言。只有具名来源明确支持时才会说「高频」; 其余题目只标为通用练习题。
目录
- D0 · 练的是讨论,不是台词 — 5 题
- D1 · 可复用的技术讨论默认框架 — 8 题
- D2 · 项目深挖:不用流水账证明深度 — 10 题
- D3 · Research taste 与论文讨论 — 11 题
- D4 · 开放式 ML 与 LLM 系统设计 — 13 题
- D5 · 实验设计与科学推理 — 12 题
- D6 · Debugging 与事故讨论 — 12 题
- D7 · Behavioral questions:展示决定,不要只报性格词 — 18 题
- D8 · 建 story bank,但不要说得像模板 — 9 题
- D9 · 反问、沟通 rubric、模拟面试与复盘 — 9 题
- D10 · 只在证据边界内做 lab-specific 准备 — 11 题
- 参考文献
D0 · 练的是讨论,不是台词
讨论轮不是把 Part I 的知识题口头念一遍。Alisa Liu 明确把快速知识检查和长时间 technical discussion 分开:后者会持续改变条件,让候选人为自己的选择辩护 [R9]。Yong Zheng-Xin 的亲历又提醒我们,轮次形式确实很多样 [R11]。所以真正可迁移的能力不是 背出一段完美答案,而是在问题不断变化时,仍然让自己的决策过程清晰可见。
这套题库的练习单位是一个说得出口的决定:
- 我们究竟要做什么决定?
- 哪些是已知事实、假设和缺失信息?
- 最简单而可信的 baseline 是什么?
- 哪几个相互竞争的解释最重要?
- 什么证据能把它们区分开?
- 看到什么结果时,我们会发布、停止或换方向?
如果一段回答装满事实却始终没有到达一个决定,它仍然是不完整的。
最短可用路径。不要试图做完 110 道题。先通读 D1;从 D2 准备两个项目;从 D3–D6 各选一题; 在私下填写 D7–D8 的四个真实故事;运行一次 D9 mock;最后使用 D9.5 readiness review。只有 mock、recruiter packet 或事实缺口给出理由时,才增加 新题。少量能经住追问的检索,比完整标亮整套题库更有用。
D0.1 · 先画地图,再组织句子
最开始的二三十秒只写五个名词,不写段落:
目标 · 约束 · baseline · 测试 · 风险
接着把地图说出来:「我会先确认成功的定义,再选一个 baseline;然后用一个能区分假设的实验比较 两个解释,最后讲发布风险。」这有三个作用:它让思考时间不再是沉默,让面试官有机会及时改方向, 也让后面的细节看起来是在下钻,而不是漫游。OpenAI 的官方指南明确要求候选人展示自己如何分析和 解决问题;其招聘活动也建议把推理过程说出来,并和面试官共同确认假设 [R4] [R5]。
地图只是暂定方案。如果面试官说「重点讲评测」,就直接接住:「好,我先把架构固定,剩下时间都 放在 eval 设计上。」协作不是固执地讲完自己预告过的提纲。
D0.1.1 · 打开一道定义不完整的技术题
性质。通用练习题。
题目。「你会怎样改进这个模型?」
示例口头开场。
「在提方法之前,我想先把『改进』变成一个决定。谁在什么分布上使用这个模型?当前最重要的失败 是能力、延迟、成本、校准,还是安全?我暂时假设:主要目标是在接近生产分布的固定集合上提升 质量,延迟是 guardrail;我们能改数据和 post-training,但不能改基座架构。我会先复现当前系统 作为 baseline,按错误类型切片,为主要切片各提出一个假设,再跑最便宜、但有可能推翻假设的实验。 如果这些假设不对,我会据此调整方案。」
这段话还没有解决问题,但它已经让下一个问题可以被回答。
练习追问
- 「不能继续问用户,你自己做假设。」明确说出假设,并补一个敏感性检查。
- 「离线指标和用户行为相反怎么办?」说清线上决策指标和 guardrail。
- 「只有一周。」把计划压缩到埋点、baseline 和一个信息量最高的实验。
陷阱
- 还没定义失败,就开始罗列 fine-tuning 方法。
- 连问十个问题,却不愿意给任何默认选择。
- 把「准确率」当成完整指标,不说数据分布和决策阈值。
练法。找五个模糊动词——改进、扩展、对齐、调试、评测——分别做四十五秒开场。只有当开场 以一个具体的首次比较结束时,才算通过。
D0.1.2 · 面试官中途换方向时怎样恢复
性质。通用练习题。
题目。你讲到设计一半,面试官说:「训练不是重点,讲讲上线后会怎么坏。」
回答结构。
「明白。我先固定训练方案,切到部署风险。我会分四层:输入漂移、模型质量回退、系统可靠性, 以及有害或高成本的动作。每层都给一个可观测信号、一个触发阈值,以及 rollback 或 containment 动作。我先从输入漂移开始,因为它可能让全部离线结论失效。」
练习追问
- 「哪个信号会最早报警?」区分领先指标和滞后的用户结果。
- 「到底能回滚什么?」分别讨论权重、prompt、检索索引、路由和 policy。
- 「如果指标本身坏了呢?」加入影子标签、人工审计和独立 sentinel。
陷阱。因为准备过原来的分支,就非要把它讲完。能否接住改向本身就是协作信号。
D0.2 · 给结论和熟悉程度做校准
口头上主动使用三种标签:
- 观察到的事实:「在我们的这组实验设定下,我们看到……」
- 有材料支持的判断:「论文报告了……;我认为它的机制是……」
- 尚未验证的假设:「我还没有测过;目前的假设是……」
Mimansa Jaiswal 特意维护一份范围很广的「我知道这些论文」清单,并会明确告诉面试官,一项知识是 来自深读、博客还是讨论 [R14]。这不是示弱。它避免把扫过摘要说成亲手实现,也给 面试官留下一个有意义的下钻位置。
经过校准的回答仍然需要立场。「我不知道」只是开头:「我没用过这个方法。根据你刚才描述的目标, 我会预期 X,因为 Y;我首先会检查 Z。」拒绝继续推理并不叫校准。
D0.2.1 · 被问到没真正读过的方法
性质。通用练习题。
题目。「这里会不会用 Method X?」你只听过名字,没有认真读论文。
示例口头回答。
「我知道它的存在,但没有读到足以准确复述细节。如果你给我它的核心目标或约束,我可以从第一性 原理把它和 baseline 比较。现在我的理解是,它用更多推理计算换更好的搜索。如果这一点成立,我 会预期它在有可验证候选答案的任务上收益更大,在延迟主导时回报更弱。正式让设计依赖它之前,我 会先核对论文的确切主张。」
练习追问
- 「假设它确实做 X,现在比较。」先复述新增事实,再正常推理。
- 「你先看论文哪里?」目标函数、评测设定、最强 baseline 和消融。
- 「做过相似实现吗?」按字面事实回答,不要把概念熟悉偷换成动手经验。
陷阱
- 编一个听起来合理的机制。
- 说完「不知道」就停止。
- 花很久道歉,后面没有任何推理。
D0.2.2 · 把实验结果与机制解释分开
性质。通用练习题。
题目。「更大的模型让 benchmark 上升,这证明了作者提出的机制吗?」
回答结构。
「它支持的经验主张是:这个配置的分数更高;它还没有隔离出机制。扩大规模会同时改变容量、优化, 往往还改变数据或算力。我需要一个匹配算力的 control,并做一个只改变所提出机制、尽量固定明显 替代解释的干预。我还会检查收益是否覆盖多个切片,还是只集中在一个子集。」
追问。给出具体 control;解释零结果意味着什么;区分该机制是必要条件、充分条件、两者都是, 还是都不是。
陷阱。把一个顺耳的故事当成已经测量过的因果解释。
D0.3 · 在压力下练检索与压缩
阅读答案训练的是识别;讨论轮需要检索、压缩和分支控制。使用四遍练习:
- 冷启动回答:不看笔记,说两分钟。
- 沿分支下钻:让搭档选一句主张,连续问三次「为什么」。
- 压缩:同一道题再用三十秒回答。
- 修复:记下一个缺失的决定、一个缺证据的主张,以及一句应删的话。
不要给「有感染力」打分。要检查听者能不能复原目标、假设、证据、选择和保留意见。错误日志必须小到 真的会回看。Jaiswal 的分档记录有用,正是因为它把「见过」和「能现场说出来」分开 [R14]。
D0.3.1 · 做一次有用的自我复盘
性质。通用练习题。
题目。一次模拟回答结束,你觉得表现很差。应该记什么?
回答结构。
「我不会只写『表达更清楚』。我要找第一个可观察到的失败:是不是开头没有明确决定?是不是用了 未定义的指标?追问是否暴露了我没有 baseline、说不清 ownership,或者没想过 failure mode? 然后把它变成一项练习,例如:『明天答三道题,每道都要在六十秒内说出 baseline。』」
建议日志字段
- 题目和目标岗位;
- 回答从哪里开始让人跟不上;
- 缺的是事实,还是推理;
- 最强的追问是什么,它是否暴露真实缺口;
- 哪项主张需要找来源;
- 哪句话听起来像背稿;
- 下一次重复日期,以及一个有约束的小练习。
陷阱。把整段答案重写成漂亮文章。那练的是编辑,不是口头表达。
D1 · 可复用的技术讨论默认框架
一手材料里的长 technical discussion 往往从一个研究或产品问题开始,然后每次改一个条件:为 baseline 辩护、解释假想结果、选择下一个实验,或说明取舍 [R9]。所以好答案需要的 不是静态提纲,而是一个控制回路:
定义决定 → 建模可能性 → 选择证据 → 根据证据更新决定
下面的七步主线是这个回路的展开。不要在面试里逐项背名称;只用它检查少了哪一块。
| 动作 | 它回答的问题 | 应该说出来的产物 |
|---|---|---|
| 澄清 | 为谁、在什么期限内做什么决定? | 目标、单位、约束 |
| Baseline | 最简单而可信的比较对象是什么? | 当前系统或廉价 heuristic |
| 假设 | 哪些不同世界都能解释当前失败? | 两三个可证伪的故事 |
| 实验 | 最便宜的什么测试能区分这些世界? | 干预与 control |
| 指标 | 什么叫成功,什么绝不能退步? | 主指标、切片、guardrail |
| 取舍 | 在当前约束下默认选哪个? | 明确选择与敏感性 |
| Failure mode | 结论或系统可能怎样错? | 监控、rollback、下一项测试 |
Google 的生产 ML 指南反复建议:先做简单模型、把指标与埋点做扎实,再增加复杂度 [R18]。这不只是生产建议,也是很强的讨论顺序,因为后面每个想法都有一个具体对象 需要战胜。
D1.1 · 澄清决定与约束
弱的澄清只是收集背景;强的澄清会改变设计空间。
按杠杆大小依次问:
- 决定:是在决定是否发布、做什么系统,还是跑什么实验?
- 用户与伤害:谁会收到输出?假阳性和假阴性各自造成什么代价?
- 单位与时间跨度:按 token、请求、会话、任务、客户,还是按月?
- 分布:必须泛化到哪些流量或数据,困难长尾是什么?
- 预算:延迟、算力、标签、工程时间、deadline 和可逆性。
- 控制范围:什么能改,什么必须固定?
问两三个问题后就要选择假设。只澄清而不承诺,会变成回避。
D1.1.1 · 把「做一个安全助手」变成决定
性质。通用练习题。
题目。「设计一个更安全的 LLM 助手。」
示例口头回答。
「我需要同时缩小『更安全』和『助手』的定义。我暂时假设这是一个可以浏览网页、但不能执行不可逆 动作的通用消费者助手。首要决定是候选 policy 是否足够安全,可以分阶段上线。我会用风险分类和 按严重性加权的违规率定义安全,在对抗集与自然流量上测;helpfulness 是共同主指标,延迟和过度 拒答是 guardrail。本季度可以改 policy、分类器和工具权限,不能改基座模型。在这些假设下, baseline 是不加新过滤器的当前模型,因为每项干预都必须在风险—有用性曲线上胜过它。」
练习追问
- 「为什么过度拒答只是 guardrail,不是主指标?」说明产品目标,以及什么条件会改变这个选择。
- 「严重性和发生率怎么合并?」两者都保留可见,不让常见小问题在平均数里淹没罕见严重事件。
- 「现在允许转账。」从纯模型安全切到权限、确认、限额、审计和恢复。
陷阱
- 只说「安全很重要」,不给可观察结果。
- 还没定义产品能做什么动作,就开始讲 alignment 算法。
- 用一个总分,让常见轻微问题抵消罕见严重问题。
D1.1.2 · 面试官不提供条件时自己选假设
性质。通用练习题。
题目。「没有更多信息了。做合理假设,继续。」
回答结构。
「我先选一个具体 operating point,并标出两个足以反转答案的假设。假设是交互式流量,p95 首 token 目标为两秒,GPU 数量固定;我要优化的是满足这个 SLO 的 goodput。如果其实是 batch 流量,或者允许牺牲质量换小模型,架构就会变;我会在敏感性检查里回到这两点。」
追问。每次改变一个假设,只更新受影响的分支,并指出哪些部分保持不变。
陷阱。自己编了精确数字,后面却说得像面试官给的一样。始终把假设标成自己的。
D1.2 · 建立 baseline 与相互竞争的假设
Baseline 不是最弱、最好打败的东西,而是一个认真负责的 owner 真可能发布的最简单替代方案。它可以是:
- 当前生产系统;
- 一条规则或纯检索方案;
- 更多数据配更小模型;
- 在相同算力与标签预算下的已有方法;
- 当干预有成本或风险时,「什么都不改」本身。
接着要提出会预测不同现象的假设。「模型需要更多数据」还不是假设;「失败集中在训练中没见过的 schema 组合,因此加入组合多样的数据会改善这个切片、但不会改变熟悉 schema」才是。
假设集合要小。两个能清楚区分的解释,比十个都预测同一条曲线的原因有用。
D1.2.1 · 建一个有机会赢的 baseline
性质。通用练习题。
题目。「用 LLM 路由客服工单。」
示例口头回答。
「我的 baseline 不是随机分类器,而是当前规则系统,加一个基于现有标签训练的线性分类器或小型 encoder。路由通常是封闭标签集,更看重一致性和延迟,所以生成模型必须证明复杂度值得。我要先 固定标签体系,测清当前转错队列的代价,再比较 LLM。LLM 可能在稀疏类别和解释上胜出;但如果 小模型已经达到路由目标,我会保留它,只把模糊工单交给 LLM。」
练习追问
- 「标签每周都变呢?」比较重训、更新 prompt,以及检索标签定义。
- 「一个工单可以去多个队列呢?」改写成排序或多标签预测。
- 「分错的代价是什么?」分别讨论延误、隐私泄露和不可逆动作。
陷阱。因为题目里有 LLM,就默认答案一定是 LLM。
D1.2.2 · 提出会彼此冲突的假设
性质。通用练习题。
题目。一个 coding agent 能通过单元测试,却过不了用户验收。给出有用的假设集合。
回答结构。
「我先列三个会产生不同证据的解释。第一,测试不完整:提升 test coverage 会提高真实成功率, 改模型却不会。第二,agent 在利用测试漏洞:特殊分支和脆弱 patch 增多,hidden test 失败。 第三,任务定义不充分:独立人工评审对『正确』本身意见不一致。在判断自己处于哪个世界之前,我 不会先调 policy,因为三者分别需要更好的评测、更强的隔离,或更清楚的任务定义。」
追问。为每个假设给一项测试;按单位成本带来的预期信息量排序;说明什么证据会让你放弃其中一个。
陷阱。只列「数据、模型、优化」三个类别,却不给能区分它们的预测。
D1.3 · 设计最便宜的区分性实验
当实验的不同结果会引出不同下一步时,它才真正有用。在讲实现前先补完这句话:
「如果结果是 X,我会更相信 A,并做 Y;如果不是,我会更相信 B,并做 Z。」
优先选择能隔离一条不确定链路的干预:
- 全量重训前,先在小而受控的切片上测;
- 给某个组件 oracle 输入,估它的收益上限;
- 真正影响用户前先跑 shadow traffic;
- 比较不受约束的系统前,先做预算匹配的 ablation;
- 建自动指标前,先人工审计一批样本。
最便宜的实验不一定是最小的 run,而是综合工程时间和误导风险后,能买到最多决策相关信息的实验。
D1.3.1 · 面对来源不明的提升,选下一项实验
性质。通用练习题。
题目。加入 synthetic data 后,总体准确率提升了两个点。下一步做什么?
示例口头回答。
「我还不会放大这个 recipe。提升可能来自 token 更多、复制了类似测试集的内容、标签质量,或我们 真正想要的多样性。下一项实验是 token 数匹配的比较:仅重采样真实数据,对比加入合成数据;同时 对 eval 数据做去重,并单独看 generator 不可能直接复制的切片。如果 synthetic arm 在新颖切片 和多个随机种子上都赢,我会投入 generator;如果匹配 token 后提升消失,因果解释就是数据量, 不是合成方法。」
练习追问
- 「只能再跑一个 job。」选 expected value of information 最高的比较。
- 「提升是真的,但只发生在简单题。」回到产品目标,判断这些题是否有价值。
- 「generator 和 evaluator 用了同一个 teacher。」指出相关误差,换独立 judge 或人工审计。
陷阱
- 不看不确定性和切片行为,就认定两个点有意义。
- 还没查 leakage 和匹配 token 的 control,就跑完整网格。
D1.3.2 · 用 oracle 找到系统上限
性质。通用练习题。
题目。一个 RAG 系统很弱。先改检索还是生成?
回答结构。
「我会用两个 oracle 测试把阶段拆开。先把 gold evidence 直接喂给 generator,估计检索完美时 生成端的上限;再保留当前 retriever 的文档,用人工或严格 evidence check 代替生成,判断答案 是否已经在文档里。如果 gold evidence 也几乎无帮助,检索就不是第一瓶颈;如果有 gold evidence 时答案很好,而当前检索很少包含答案,先修检索。」
追问。讨论不可回答 query、过期语料、排序与召回的区别,以及 oracle 分布是否干净得不真实。
陷阱。同时改 retriever 和 generator,提升后无法归因。
D1.4 · 定义指标、做出选择、指出 failure mode
完整的指标集合至少有四层:
- 主结果:与当前决定直接相连的量。
- Guardrail:绝不能显著退步的量。
- 切片:平均数可能隐藏不可接受行为的地方。
- 测量健康度:一致性、覆盖率、污染,以及指标产出的延迟。
然后必须选择。只讲取舍、不设默认值,听起来有知识却不像 owner:
「考虑交互式使用和严格尾延迟,我默认选小模型加检索。如果大模型在相同 goodput 下,让高严重性 错误下降超过 X,我会切换。」
最后要把系统失败与推断失败分开。系统可能真的不好;实验也可能根本无法判断它好不好。只监控 模型,会同时漏掉测量漂移和运行故障。ML Test Score 把数据、模型、基础设施和监控测试列成不同的 生产成熟度层 [R19]。
D1.4.1 · 解决能力、延迟、成本与安全的冲突
性质。通用练习题。
题目。Model A 质量更好,但慢一倍、贵一倍。发布哪一个?
示例口头回答。
「不能只看总体质量。我先按切片把质量差异换算成用户价值或风险价值。默认方案是 cascade:当 Model B 的校准置信度和风险分数都可接受时由它处理;模糊或高后果的长尾交给 Model A。我要把这个 cascade 与两个单模型 baseline 比较,指标包括 goodput、每个成功任务成本、严重错误率和 p95 延迟。最终发布 Pareto frontier 上最简单的系统,不自动选择分最高的模型。」
练习追问
- 「Router 自己会错。」把路由错误纳入端到端评测,并设保守 fallback。
- 「缓存改变了成本。」按真实请求分布重新计算。
- 「安全不能平均。」保留严重性类别和最差切片。
陷阱。说一句「看情况」,列完维度却不选 operating point。
D1.4.2 · 用 pre-mortem 与决策规则收尾
性质。通用练习题。
题目。怎样结束任何一道开放设计题?
回答结构。
「发布前,我会用四种方式主动杀这个设计:打破数据假设、压满资源瓶颈、攻击指标,以及强迫系统 执行高影响的不可逆动作。先跑 shadow mode,再放给可逆、低风险切片。Go 条件是主结果提升且 guardrail 都在界内;rollback 条件是任何严重安全事件、持续尾延迟超标,或测量健康度失效。上线后 第一个要重新检查的问题,是实际流量是否已经不同于当初支持这个选择的分布。」
追问。指定 owner 和报警阈值;区分自动回滚与人工审核;说明事故复盘需要保留哪些证据。
陷阱。以架构图结束。真实设计应该结束在这个决定如何被验证、如何被撤销。
D2 · 项目深挖:不用流水账证明深度
项目深挖是唯一一轮完全以你的真实经历为原料的面试。一手材料把它描述为:从过去的工作开始,沿着 任何能暴露判断力的分支继续追问 [R9]。Yuan Meng 的区分很有用:coding 可以帮人 通过门槛,project deep dive 才说明为什么偏偏是这个人适合团队 [R13]。
面试官通常想恢复五件事:
- 问题 ownership:你是否真的理解这项工作为什么存在?
- 技术深度:能否从主张一路下钻到实现与证据?
- 决策质量:能否在真实约束下从多个方案中选择?
- 认知诚实:知不知道结果证明了什么、没有证明什么?
- 协作:能否把个人贡献与团队贡献分清,同时不抹掉任何一边?
不要按日历顺序讲项目,要把它讲成一段论证:
问题与后果 → 你的主张 → 决定性选择 → 证据 → 局限 → 下一步
使用下面任何模板前,都要把每个括号换成可以辩护的事实。如果某个数字、角色、失败或决定没有记录, 也想不清,就先留空并找回证据。一个听起来合理的占位符仍然是编造的故事。
D2.1 · 准备两分钟、五分钟与十五分钟版本
这不是同一场演讲的不同倍速。
| 版本 | 任务 | 必须保留的东西 |
|---|---|---|
| 两分钟 | 赢得下一道追问 | 问题、一个主张、你的角色、最强证据、一项局限 |
| 五分钟 | 展示决策质量 | 加入 baseline、关键替代方案、实验和结果解释 |
| 十五分钟 | 经受答辩 | 加入架构、失败路线、规模与成本、协作和未来工作 |
不要混淆准备好的 job talk 与对话式 deep dive。Job talk 有固定 audience、时长、视觉叙事和 research agenda,顺序由你控制;deep dive 里分支由 interviewer 控制,可能两分钟后就打断,也可能 用整轮追一项决定。两者可以使用同一套证据,但前者要练连贯交付,后者要练随机访问。
短版要故意留下一个把手:一个你希望面试官抓住的决定或意外结果。不要用「这就是整个项目」收尾; 要留下活的边缘:「最值得展开的决定,是为什么我们放弃了离线分数更高的 X。」
D2.1.1 · 做两分钟项目概览
性质。研究讨论中反复出现的形状;精确时长只是练习工具。
填写表,不是完成版答案。
「问题是 [用户或科学需求],已有方法因为 [具体瓶颈] 无法解决。我们的核心主张是 [一个可证伪的贡献]。我个人负责 [产物、决定或实验];[团队角色] 负责 [他们的工作]。影响项目走向的选择是:因为 [约束],我们选 [方案] 而不是 [替代方案]。在 [评测设定] 下,我们观察到 [带不确定性或切片的已核实结果]。结果 支持 [窄结论],但不支持 [局限]。如果有帮助,我可以继续讲 [决策把手] 或 [失败把手]。」
练习追问
- 「你本人到底做了什么?」
- 「已有方法为什么不够?」
- 「哪项结果最改变你的看法?」
- 「规模放大十倍,什么先坏?」
陷阱
- 用九十秒讲背景,贡献只能匆忙带过。
- 全程说「我们」,藏掉个人 ownership。
- 全程说「我」,让团队项目失去可信度。
- 只报一个指标,不给 baseline、数据集或不确定性。
练法。录音。两分钟后,听者应该能分别写出问题、主张、ownership、证据和保留意见各一句。做不到 就删细节,不要提高语速。
D2.1.2 · 从两分钟展开到五分钟
性质。通用练习题。
题目。「再多讲一点。」
回答结构。
「我不重复概览,直接补决策和证据两层。必须打败的 baseline 是 [baseline]。我们考虑了 [A]、[B] 和 [C]。当时最不确定的是 [未知量],所以我设计了 [测试]。 结果排除了 [假设],但保留了 [剩余歧义]。这就是我们选择 [决定] 的原因。最强的 反证是 [失败或切片],我们用 [动作] 处理它。」
追问。要求架构细节、预算匹配的公平性、消融、上线证据,或当时持反对意见的人。
陷阱。靠加入所有组件来扩写。应该展开因果论证,不是展开清单。
D2.2 · 分清个人贡献、团队贡献与影响力
Ownership 不等于「大部分代码是我写的」。它也可以是:
- 发现问题,或重新定义目标;
- 设计决定性的实验;
- 构建关键组件;
- 解决一个无人理解的故障;
- 推动多个团队对齐技术决定;
- 把原型推进到部署与测量;
- 决定停止一条路线。
建立一份 ownership ledger:
| 层次 | 只填事实 |
|---|---|
| 我直接构建或决定 | [具体产物与决定] |
| 我影响但没有直接拥有 | [提案、评审、对齐、解除阻塞] |
| 队友负责 | [适合公开时填姓名或角色] |
| 我继承的已有工作 | [baseline、基础设施、先前研究] |
| 能证明我角色的证据 | [设计文档、commit、实验日志、报告、决策记录] |
目的不是做法律式归属,而是让你可以用「我们」讲团队结果、用「我」讲个人动作,不造成混淆。
D2.2.1 · 回答「你个人到底做了什么」
性质。练习题。
示例结构。
「团队结果是 [结果]。我直接负责三块:定义 [决定]、构建 [产物],以及运行让我们从 [旧方向] 转到 [新方向] 的 [实验]。[合作者或团队] 负责 [对方组件],我的 工作依赖它。我还影响了 [跨团队决定],但不会把那个组件说成是我的。」
练习追问
- 「没有你这部分,项目还能成功吗?」
- 「谁做最终决定?」
- 「哪些东西是你继承来的?」
- 「给一个能证明 ownership 的产物。」
陷阱
- 把领导力说成「我告诉别人做什么」。
- 因为领导一条 workstream,就把整个平台都算成自己的。
- 把协作压缩到项目听起来不再可信。
D2.2.2 · 描述没有正式权力的领导力
性质。对高级研究与工程岗位都通用。
回答结构。
「我不管理 [人员或团队],我负责的是决策过程。几组人对 [技术选择] 有分歧,是因为各自 优化不同约束。我把约束显式写出来,提出 [共同实验或决策文档],并提前约定每种结果分别选择 哪条路线。证据最终支持 [路线]。这次 influence 的价值不是我赢了争论,而是团队拥有一个所有 人都信任的决策规则。」
追问。如果结果支持另一边呢?谁仍然不同意?过程付出了什么关系成本?现在会怎样加快?
陷阱。把达成共识当成唯一目标。有时工作要求的是明确决定,并把异议记录下来。
D2.3 · 为关键选择与失败路线辩护
每个项目准备两三张决策卡:
- 决定与发生时间;
- 当时已知的约束;
- 考虑过的替代方案;
- 当时拥有的证据,而不是事后才知道的证据;
- 各方案的预期收益与 failure mode;
- 谁做决定,谁有异议;
- 结果与学到的东西。
这样可以避免后见之明叙事。好决定可能带来坏结果;幸运结果也不会让弱决策自动变严谨。
还要准备一个技术细节充分的失败实验。「没成功」不是失败分析。要解释它预测什么、实际发生什么、 怎样排除实现错误,以及它如何改变项目。
D2.3.1 · 解释为什么选 A 而不是 B
性质。练习题。
填写模板。
「当时必须决定 [决定]。A 优化 [维度],但风险是 [失败];B 优化 [另一维度], 代价是 [取舍]。真正具有约束力的是 [约束],不是 [诱人但次要的指标]。当时的证据 是 [证据],所以我建议 [选择]。如果观察到 [阈值],我会切到另一方案。事后看, [结果对决策说明了什么,但不假装当时已知道]。」
练习追问
- 「为什么不两个都做?」
- 「你低估了什么?」
- 「谁支持 B?对方说对了什么?」
- 「算力翻倍或 deadline 减半,决定会变吗?」
陷阱。把最终结果当成当时已经可用的证据。
D2.3.2 · 讲清一个失败实验
性质。通用且经常被深入追问。
回答结构。
「假设是 [机制],它预测 [具体变化]。我们改变 [干预],固定 [control],实际却 看到 [结果]。在放弃想法前,我检查了 [实现、数据与 eval 检查]。这个失败有信息量,因为 它排除了 [窄主张],并暴露 [新瓶颈]。我们停止 [工作]、改成 [方向],同时保留 [可复用产物]。现在回看,我会先做 [更早或更便宜的区分性测试]。」
追问。成本多大?何时知道应该停止?有人提前预见吗?还有哪个负结果没解释?
陷阱
- 选择一个结尾完全是成功的假失败。
- 只责怪数据、基础设施或其他团队。
- 用一次高噪声 run 声称推翻了一个宽泛理论。
D2.4 · 把 debugging、规模和成本讲成决定
规模不是炫耀数字,它会改变 failure mode。建立一个小型资源账本,只用可以披露并核实的数字:
- 数据单位和分布,而不只总量;
- 相关时给模型大小与 active parameters;
- 训练与推理算力;
- 延迟分布与吞吐;
- 存储、显存和网络瓶颈;
- 标签成本与工程时间;
- 直接成本与机会成本;
- 恢复点:checkpoint 频率、rollback 窗口与会丢失的工作。
如果数字保密,不要现场编替代值。使用允许披露的范围、相对 baseline 的归一化,或只说缩放关系: 「不能分享 fleet 大小,但关键是 checkpoint 时间随状态大小线性增长,已经超过恢复预算。」
D2.4.1 · 把 debugging 故事讲成假设收缩
性质。通用练习题。
回答结构。
「可观察故障是 [症状],最先由 [信号] 检出。我把假设分成数据、数值、代码和基础设施。 信息量最高的检查是 [检查],因为它能把 [几组假设] 分开。结果把问题定位到 [边界]。 我先用 [containment] 控制影响,再修复 [root cause],用 [复现与 regression test] 验证,最后增加 [预防措施]。教训不是笼统的『多监控』,而是 [缺失的不变量或 ownership 缺口]。」
追问。旧报警为什么没发现?什么证据可以推翻你的诊断?blast radius 多大?怎样选择 rollback 还是 forward fix?
陷阱。逐条复述命令。故事核心是假设和决定的序列。
D2.4.2 · 回答「规模扩大十倍会怎样」
性质。通用练习题。
示例结构。
「我不会把每个数字机械乘十,而是找第一个 regime change。流量十倍时, [队列、cache、网络或标注] 会成为 binding resource;模型或数据十倍时, [显存、通信或评测] 可能迫使架构改变。我会在预测拐点附近做 load test,测尾部而不是均值, 并定义降级方式。只有当过载能以受控方式失败——准入控制、小模型 fallback 或延迟 batch——而不是 破坏结果时,设计才合格。」
追问。哪个估计最不确定?最便宜的压力测试是什么?什么会从计算瓶颈变成组织瓶颈?
陷阱。只说「加机器」,不讨论状态、协调和成本。
D2.5 · 建立结果可信度并提出后续工作
为每个 headline result 准备一条主张—证据边界:
- 精确主张;
- 评测总体;
- baseline 是否公平;
- 方差或置信信息;
- 支持机制的消融;
- 负面与中性切片;
- 已知污染或测量风险;
- 如果上线过,线上观察到了什么;
- 仍然不知道什么。
「跑了三个 seed」本身不等于可靠。更强的证据会预注册主要比较,使用真正独立的 run 或实验单位, 报告 effect interval 而不只报均值,并展示 task-level 或 slice-level variation。Seed 只处理训练 随机性的一部分;它修不好互相依赖的 test set、evaluator bias,也修不好看完结果才改写的主张。同样, 不要给一个原本没使用统计方法的项目补上漂亮统计术语。
未来工作应该从局限推出来。「试更大模型」只是申请预算。「方法假设 uncertainty 已校准,所以我会先 测 recalibration 在分布漂移下能否迁移;如果失败,就必须改控制 policy」才是研究计划。
D2.5.1 · 回答「你怎么知道结果是真的」
性质。练习题。
填写模板。
「我相信这个窄结论,是因为 [control]、[重复或不确定性] 和 [独立验证] 分别处理了 最大的三个替代解释:[替代解释]。剩余最强威胁是 [威胁]。所以主张只能写成 [有边界的主张],不能写成 [过度主张]。如果再有一周,我会跑 [测试],因为它的结果 最可能改变这条边界。」
练习追问
- 「Baseline 得到了同等调参吗?」
- 「有几个随机种子或独立单位?」
- 「Evaluator 会不会偏爱你方法的表达风格?」
- 「哪个结果没有放进 headline?」
陷阱。只靠数量回答——很多 benchmark、很多 run——却不说它们各排除了什么替代解释。
D2.5.2 · 回答「你会做哪些不一样」
性质。常见项目深挖题。
示例结构。
「我会改变 [某个早期决定],而不是只挑那个碰巧带来坏结果的部分。当时我假设 [假设],又没有埋点 [信号],所以在学到 [事实] 之前付出了 [可披露成本或定性后果]。现在我会先跑 [更便宜的测试],并设置 [停止规则]。后来反复 使用的原则是 [决策原则]。」
追问。当时为什么不知道?之后改变了什么流程?再举一个后来运用这条教训的真实例子。
陷阱。伪装成反思的自夸,例如「我会更早扩大规模」,却没有真正纠正任何判断。
Nathan Lambert 以候选人一手经验建议认真准备 job talk,因为它传达的是愿景和故事;这同样适用于 项目深挖 [R12]。故事不是营销外壳,而是让另一位研究者可以检查你判断力的因果结构。
D3 · Research taste 与论文讨论
论文轮不是关于 PDF 内容的记忆测试。它问的是你能否把一个主张变成研究计划:判断什么证据与它有关, 找到最弱假设,并选出下一项实验。
使用五个视角:
- 主张:到底断言了什么,适用范围多大?
- 证据:哪项结果支持主张的哪一部分?
- 机制:什么解释能预测图表里还没有展示的现象?
- 边界:它应该在哪里停止有效?
- 下一项决定:哪一个实验最能改变信念或行动?
把经验发现与作者解释分开。结果可能是真的,而机制解释是错的;机制可能很合理,而论文实验根本没 有足够力量检验它。
D3.1 · 按讨论需要的深度阅读
Keshav 的三遍阅读法是很好的时间分配器:第一遍恢复类别、背景、正确性、贡献和清晰度;第二遍检查 图表和证据;第三遍尝试在脑中重做实现,并挑战每个假设 [R20]。用于面试准备时, 三遍分别产出:
| 遍数 | 产物 | 应该能说出来 |
|---|---|---|
| 第一遍 | 主张卡 | 问题、headline claim、比较对象、适用范围 |
| 第二遍 | 证据图 | 每张关键图或消融支持哪项主张 |
| 第三遍 | 复现计划 | 隐藏选择、依赖与可能失败点 |
不要对每篇论文都做第三遍。维护熟悉程度账本:只见过标题、扫过、可讨论、复现过、在其上继续工作。 Jaiswal 的公开准备笔记就明确使用这种经过校准的库存 [R14]。
D3.1.1 · 用九十秒概括一篇论文
性质。论文轮中被报告的形式;时间限制只是练习工具。
回答结构。
「论文问的是 [问题]。核心主张是 [一句有边界的话]。相对 [最相关的强 baseline], 关键改变是 [机制或系统选择]。最强证据是 [图或实验],因为它隔离了 [因素]。如果 [范围或使用场景] 成立,这项结果就有意义。我的主要保留意见是 [假设或测量威胁],所以下 一项实验会是 [区分性测试]。」
练习追问
- 「你省略了什么?」
- 「贡献究竟是目标函数、算法、系统、数据集,还是测量结果?」
- 「加入哪个 baseline 会让主张消失?」
- 「你会在它上面继续做吗?」
陷阱
- 按章节顺序复述摘要。
- 把作者 contribution list 里的每一项都叫成独立概念贡献。
- 还没证明自己理解最强主张,就先开始批评。
D3.1.2 · 在很短期限内读一篇陌生论文
性质。通用练习题。
题目。讨论前三十分钟才收到论文。
回答结构。
「前五分钟看标题、摘要、引言、结论、章节标题和参考文献,恢复主张与背景。接着逐张看图表,用自己 的话写下比较对象、坐标轴、不确定性和结论。剩余时间集中在目标函数、最强 baseline 和一个核心 实验,不从头线性读到尾。我进入面试时要带着一张主张卡、两个问题、一个可能 failure mode,以及 一份明确写出的『哪些细节还没核实』清单。」
追问。没有 error bar 怎么办?方法细节正好是核心怎么办?缺少前置知识怎么办?
陷阱。花二十分钟解第一条公式,始终没看到证据。
D3.2 · 批评主张,不批评论文的审美
有用的批评会指出替代解释,并给出测试。「数据集太小」只是担忧;「收益可能来自某种领域预处理, 因为所有正结果数据集都有相同格式;请在没有该步骤的匹配数据集上测试」才是研究。
按这个顺序审计:
- 构念:指标测到的真是主张里命名的东西吗?
- 比较:是否包含最强 baseline,并给了同等调参?
- 预算:数据、算力、延迟、参数和 test-time work 是否匹配?
- 依赖:样本、用户、任务和随机种子真的是独立单位吗?
- 范围:数据集和条件足以支持标题里的泛化吗?
- 不确定性:是否展示方差?背后尝试了多少选择?
- 失败证据:是否报告负面切片、成本与安全影响?
NeurIPS 的 paper checklist 是很好的外部审计表,因为它要求作者把主张和假设、不确定性、算力及可复 现细节连起来 [R21]。
D3.2.1 · 给出一个强批评
性质。通用练习题。
题目。「这篇论文最弱的部分是什么?」
示例结构。
「最弱的链路不只是抽象地说评测小,而是 evaluator 与方法的 teacher 来自同一模型家族。它们 可能对相同表达风格有相关偏好,因此测到的提升不一定是用户质量。我会固定所有输出,用盲评人工 加一个独立模型家族的 judge 重跑。如果排序仍然存在,我的担忧会显著下降。」
练习追问
- 「多严重,是致命问题还是普通局限?」
- 「作者为什么会这样选?」
- 「什么结果能改变你的看法?」
- 「怎样为论文做最强辩护?」
陷阱。追求抱怨数量。Research taste 体现在选出最能改变主张的那一个。
D3.2.2 · 不同意之前先 steelman
性质。通用练习题。
回答结构。
「作者立场最强的版本是 [在有利假设下的主张]。设计有吸引力,是因为 [原因],而图 [X] 排除了 [替代解释]。我的分歧从 [具体外推] 开始:证据建立的是 [窄主张], discussion 却假设 [更宽主张]。在没有 [新证据] 前,我会保留方法,但收窄结论。」
追问。针对自己的批评为论文辩护;指出一个对目标用途并不重要的局限。
陷阱。把善意理解当成赞同。Steelman 的作用是让分歧更精确。
D3.3 · 先设计复现,再设计扩展
复现有不同层次:
- 产物复现:运行发布代码,恢复表中数字。
- 独立重实现:只根据论文重建方法。
- 稳健性复现:改变随机种子、环境、版本和数据抽样。
- 概念复现:在不同但相关的场景测试主张。
必须说明自己指哪一种。用作者的 container 复现一个数字,主要检验打包,不等于检验完整科学主张。
建立复现清单:
- 精确主张与可接受误差;
- 代码、模型、数据和 license 可用性;
- 预处理与 split 构造;
- 隐藏外部服务或 judge 版本;
- 算力和 wall-clock 预算;
- 随机种子与方差计划;
- 预期中间不变量;
- 停止与升级规则;
- 差异日志。
D3.3.1 · 设计一周复现计划
性质。通用练习题。
回答结构。
「一周内我只瞄准核心主张,不复现所有表格。第一天做环境与数据 manifest,再跑微型 smoke test; 第二天复现一个 baseline,检查中间不变量;第三、四天在相同预算下跑方法和 matched baseline; 第五天测方差与一项稳健性扰动。最后留时间审计差异,并写清什么复现了、什么没有、主张边界是否 改变。可接受数值误差要提前定义,不能看到结果后再决定。」
练习追问
- 「发布 checkpoint 能匹配,训练过程不能。」
- 「外部 API 模型已经更新。」
- 「负担不起完整规模。」
- 「代码预处理里有 bug。」
陷阱
- 还没验证小型端到端路径,就启动最大 run。
- 为了对上数字,悄悄修改方法。
- 没有定位就把环境漂移说成科学想法失败。
D3.3.2 · 处理复现失败
性质。通用练习题。
回答结构。
「我只在自己能辩护的最窄层次报告失败。先核对 artifact、环境、数据 split 和中间值,再把第一个 分叉点与作者日志比较。我会带着最小复现和精确版本联系作者,而不是先指责。如果结果仍然不同,要 区分『产物不可迁移』『论文设定描述不全』与『主张无法重复』;这是三种不同结论。」
追问。什么时候停止?会发布负结果吗?如果本来就不喜欢这篇论文,怎样避免确认偏误?
陷阱。把一致当成成功,把不一致当成作者错误。两个结果都需要审计。
D3.4 · 用消融检验机制
消融应该回答问题,而不只是删除模块。
四种有用形式:
- 必要性:去掉 X,效果是否消失?
- 充分性:只把 X 加给 baseline,效果是否出现?
- 剂量响应:连续改变 X,是否出现预测的曲线形状?
- 替代:用能产生相同预期效果的更简单机制替换 X。
要匹配训练预算和调参力度。删除组件如果同时减少参数、数据或算力,消融就把机制与容量混在一起。 当组件可能只在组合中有效时,还要测交互;每次删一个看不见这种关系。
D3.4.1 · 设计决定性消融
性质。通用练习题。
题目。一个方法包含 retrieval、reflection 和 verifier,完整系统胜出。
回答结构。
「第一问不是删哪个组件掉分最多,而是论文提出了哪条因果主张。如果主张是 reflection 使用 verifier 反馈修复 retrieval 错误,关键测试就是交互:retrieval 加 verifier 但没有 reflection; retrieval 加 reflection,但把 verifier 反馈打乱;再对比完整组合。打乱保留消息长度,却摧毁 信息。如果只有信息正确的 feedback 配完整系统才赢,才支持这条路径。」
追问。匹配额外 token;使用 oracle verifier;提供错误 feedback;检查具体修复了哪些错误。
陷阱。三个删除实验都同时改变算力,却声称已经隔离机制。
D3.4.2 · 解释「删掉组件却不掉分」
性质。通用练习题。
回答结构。
「不掉分还不能立刻证明组件无用。它可能在当前规模冗余、被重训练补偿、只对罕见切片有效,或者 指标根本不敏感。我会检查删除是否改变算力与优化,看机制预测的切片,再做 dose response。如果 在机制明确预测有效的条件下仍没有可测影响,我会删除它,并收窄论文主张。」
陷阱。无限发明挽救假设。要提前规定,组件在失去资格前能得到几次检查。
D3.5 · 判断 novelty、impact 与下一项实验
Novelty 不是单一维度:
- 新能力或新问题;
- 新机制或目标函数;
- 改变现有信念的新证据;
- 改变可行性的系统组合;
- 新数据集、测量方式或负结果。
Impact 也不等于 benchmark 涨幅。要问:
- 是否打开以前不可行的 regime?
- 换成更强 baseline 后还成立吗?
- 收益是否发生在 binding constraint 上?
- 别人能否以合理成本采用?
- 它是否改变研究者会构建什么或相信什么?
简单方法可以影响很大;技术上新颖的方法也可能解决非关键问题。
D3.5.1 · 判断论文是否新颖、是否重要
性质。通用练习题。
回答结构。
「我会把新颖性和重要性分开。Novelty 是相对最接近工作多出的 [具体差异]。重要性取决于 [关键约束或被改变的信念]。当前证据支持 [范围],但 impact 仍不确定,因为 [采用成本、更强 baseline 或规模问题]。最能更新我看法的实验是 [测试]。如果结果为正, 它会从有意思的技巧变成新的 operating point。」
追问。说出最接近的 prior work;判断 novelty 是技术还是经验层面的;预测三年后领域会记住什么。
陷阱。把「第一个」当成「有用」,或用引用量代替因果影响。
D3.5.2 · 讨论一篇自己没读过的论文
性质。通用练习题。
示例口头回答。
「我没有读过这篇论文,所以不想编它的贡献。根据标题和你刚才给的信息,我认为底层问题是 [复述问题]。我会拿 [baseline] 比较,而相信宽泛主张之前需要看到 [证据]。如果你 告诉我核心机制,我可以从第一性原理分析可能的取舍,并设计消融。」
练习追问
- 面试官补充机制后,明确更新自己的模型。
- 与自己真正熟悉的工作比较。
- 说出会先补哪项前置材料。
陷阱。靠报相邻论文名字掩盖自己不知道这篇。经过校准的好奇心比伪造熟悉更强。
D3.5.3 · 提出 future research agenda 与前九十天计划
性质。通用研究方向练习题。
题目。「来这里后想研究什么?Unlimited compute 会改变什么?前九十天会做什么?」
回答结构。
「我当前的 thesis 是 [有边界的研究问题],依据是 [证据与开放瓶颈]。Unlimited compute 可以检验 [对规模敏感的假设],但不会消除 data validity、evaluation、safety 或 coordination 约束;所以我仍会先跑 [更小的区分性实验]。前三十天了解团队真实 asset,并复现 [baseline];六十天前对齐一个信息量高的切入口及 stop rule;九十天目标是交付 [可复现 artifact 或结果],不是声称 agenda 已经完成。如果观察到 [证据],我会换方向。」
练习追问。说出第一项实验;解释为什么必须是这个团队;把 compute budget 缩小一百倍;指出计划 依赖的合作者或能力;说明什么结果会终止这条 agenda。
陷阱。把 unlimited compute 当成 unlimited evidence。更多 run 修不好错误 construct、不可获得 的数据或不可检验的主张。
D4 · 开放式 ML 与 LLM 系统设计
ML 系统设计答案不是一张中间画着 model 方框的架构图,而是一串契约:
用户决定 → 数据 → 目标 → 模型 → 训练 → 评测 → 部署 → 监控
每条箭头都可能在两边方框看似健康时断掉。Retriever 可能优化 recall,而 generator 需要经过校准的 证据;离线 evaluator 可能奖励冗长,用户却需要快速行动;训练管线与 serving 可能用不同方式计算同 一个 feature。Hidden Technical Debt in Machine Learning Systems 把这些纠缠总结为数据依赖、 反馈回路、配置债和未声明消费者 [R24]。
先端到端走一遍,再选一个瓶颈深入。强答案不是报出最多组件,而是每个组件都由一项明确需求推出, 并且有可观察的 failure mode。
底层机制可以交叉复习 Part I 的 A8 · Inference and serving、 A9 · Data 与 A10 · Estimation。本节练的是如何在开放需求下选择并 连接这些机制。
D4.1 · 把模糊题目变成端到端契约
使用这个开场顺序:
- 用户与动作:什么输出会改变谁的决定?
- 错误不对称:假阳性、假阴性、延迟和 abstention 各有什么代价?
- 流量与跨度:规模、长尾、context、时效性和交互长度。
- 成功与 guardrail:离线 proxy、线上结果、安全、成本和延迟。
- Baseline 与控制面:当前流程是什么,什么允许改变?
- 这时才从数据画到监控。
Chip Huyen 的面试书强调,ML 系统题要求讨论目标、数据、指标和部署选择,而不只是 model family [R16]。上面的顺序能在实现细节占满整场之前,把这些选择暴露出来。
D4.1.1 · 打开「设计企业客服助手」
性质。通用系统设计题。
示例口头开场。
「我假设员工会针对私有语料询问政策和产品问题;助手可以建议动作,但不能直接执行。错误而自信的 回答比 abstain 更糟,内容时效性重要,而且答案必须给引用。主结果是有可验证证据的已解决任务; 严重无依据陈述和数据越权是硬 guardrail;p95 到有用答案的时间、每个已解决任务的成本是运行指标。 Baseline 是搜索加文档阅读器。我会从语料与权限开始,依次讲 retrieval、generation、eval、 serving 和 monitoring,再深入证据 grounding。」
练习追问
- 「为什么不 fine-tune?」
- 「权限怎样传到检索和 cache?」
- 「语料无法回答时怎么办?」
- 「不等客服工单结束,怎样衡量问题已解决?」
陷阱
- 从选 vector database 开始。
- 以为给了 citation 就证明引用内容蕴含答案。
- 忽略 access control 是数据路径的一部分,而不是最后一道过滤器。
D4.1.2 · 画出最小可行管线
性质。通用练习题。
回答结构。
「第一版:摄取带版本和 ACL 元数据的文档;混合检索后 rerank;给模型一小组证据;要求回答引用 具体文档版本;当 retrieval 或 entailment 置信度低时 abstain;记录 query、已授权文档 ID、 模型版本、引用、延迟、成本和反馈。离线评测使用冻结的、带时间边界的 query,并标记是否可回答。 先 shadow launch,再开放低风险 cohort。在 baseline 暴露 binding failure 前,不增加 agent、 fine-tuning 或 learned router。」
追问。索引时效、删除、多语言文档、长表格和反馈回路。
陷阱。把这叫「简单系统」,却漏掉日志、版本、权限和 abstention。
D4.2 · 让数据与目标函数真正承担责任
按生命周期讨论数据:
- 来源与 consent;
- 纳入和排除规则;
- 独立单位;
- 标注与分歧;
- 去重与污染;
- 时间切分与新鲜度;
- hard negative 与长尾覆盖;
- 版本、删除与 lineage;
- 上线后的反馈。
接着把训练目标定义成真实决定的近似。问它奖励什么行为、对什么无所谓,以及会怎样被钻空子。Loss 可以变好而产品变差,因为标签、抽样分布或聚合单位错了。
D4.2.1 · 为 coding agent 设计数据
性质。通用练习题。
回答结构。
「单位是 repository state 加 issue,不是孤立 code snippet。我需要环境、测试、dependency lock 和干净 reset。按 repository 与时间切分,减少污染;hidden test 不进入 agent observation; 标签不只记录最终通过,还要记录编译状态、测试变化、修改文件和 policy violation。训练数据应包含 失败后恢复的 trajectory,不只干净 demonstration。第一个 baseline 是检索相关文件后只尝试一次 patch;multi-step planning 只有在受控成本下提高 hidden-test success,才值得复杂度。」
练习追问
- 「公开仓库可能已经在预训练数据里。」
- 「Agent 会修改测试。」
- 「Patch 通过测试,却很丑或不安全。」
- 「长任务让迭代太慢。」
陷阱
- 把同一 repository 的 issue 随机分开。
- 奖励 visible test,同时允许 agent 修改它。
- 只数生成 token,不数成功而可 review 的任务。
D4.2.2 · 发现会诱发 reward hacking 的目标
性质。通用练习题。
题目。「Agent 的 reward 是通过测试的数量。」
示例回答。
「这个目标不完整。它会奖励删除或削弱测试、对 fixture 写特例,以及做出本地能过但违背 issue 的 大范围修改。我会尽量让环境不可变,使用 hidden test,约束允许修改的范围,再加静态与安全检查。 更重要的是,在相信 reward curve 前人工审计高分 trajectory。指标本身就是攻击面。」
追问。Hidden test 泄露怎么办?怎样奖励部分进展?怎样避免 guardrail 压倒有用学习?
陷阱。只靠增加更多加权项解决 reward hacking。每增加一项,就多一条可利用边界。
D4.3 · 找到瓶颈后才选择模型与训练
按能够修复什么组织选项:
- Prompt、context 与 tool contract:指令、格式和可用信息;
- Retrieval 或工具:缺失或持续变化的外部知识;
- 监督微调:示范中反复出现的行为和格式;
- 偏好或 RL 训练:在 reward 下从模型行为中选择;
- Continued pretraining:领域分布与知识,成本更高;
- 架构或规模:便宜层无法消除的容量或效率上限。
接着在固定预算下比较,并说出什么条件会反转选择。「Fine-tune」还不是决定,除非说明数据、目标、 base policy、预期改变的行为和评测。
D4.3.1 · 决定用 RAG、fine-tuning,还是两者
性质。通用练习题。
回答结构。
「我把知识与行为分开。如果事实会变化、必须引用,或有按用户区分的权限,默认 retrieval。如果 模型拿到正确证据后,仍然反复搞错格式、工具选择或领域语言,SFT 可能有帮助。我会先用 oracle evidence 测 generator:有正确证据就成功,瓶颈在 retrieval;仍以可教的固定方式失败,再加 tuning。只有两种 failure class 都经过测量时,两者并用才有依据。」
练习追问
- 「Fine-tuning 能加入知识吗?」
- 「RAG 能教表达风格吗?」
- 「Retrieval 增加延迟怎么办?」
- 「怎样更新或删除知识?」
陷阱。把 RAG 和 fine-tuning 当成互斥品牌,而不是不同契约。
D4.3.2 · 提出带停止规则的训练阶梯
性质。通用练习题。
回答结构。
「只有测得的失败在更便宜一级仍然存在,我才往上走:先 prompt 与 tool contract,再改数据或 retrieval,再 SFT,再偏好或 RL 优化,最后才是更大规模训练或架构变更。每一级都有 go/no-go 测试。例如,只有一小批干净数据能在目标切片稳定提升、又不损伤通用能力时才继续 SFT。这样不会 用完整训练预算去修 eval 或 context bug。」
追问。各级之间的交互、catastrophic forgetting、过期偏好数据,以及大模型何时反而运行更省。
陷阱。把阶梯当成普遍真理。如果 base model 根本没有某项能力,早期步骤可能只是在掩盖缺口。
D4.4 · 把能力、延迟、成本与安全当作 Pareto 问题
在分别展示约束前,不要先压成一个加权总分。建立一个小 frontier:
- 按重要切片的质量;
- p50 与尾延迟;
- SLO 下的吞吐或 goodput;
- 每个成功任务的成本,而不只是每 token 成本;
- 严重错误率和 policy violation;
- 人工审核或升级负载;
- 可逆性与 blast radius。
再为题目中的用户选 operating point。常见杠杆包括 model routing、cascade、batching、caching、 quantization、受限工具、retrieval、early exit 和人工升级。每个杠杆都会同时移动多个轴。
D4.4.1 · 把成本减半,但不隐藏质量损失
性质。通用练习题。
回答结构。
「先按真实流量构成,把成本分解成 prefill、decode、retrieval、外部工具和 retry。再按可逆性给 杠杆排序:删除无效 context,缓存共享 prefix 和检索,提高 batching 直到碰到延迟 guardrail, 把简单请求路由给小模型,最后在切片评测后量化。我要报告每个成功解决任务的成本,因为一次调用 更便宜、却造成更多 retry,并不更便宜。最终方案必须列出每个杠杆带来的质量与安全变化。」
追问。流量稀疏、prompt 都不同、质量标签很晚才到、小模型校准很差。
陷阱。还没测 cost stack,就根据通用优化传说承诺某个百分比。
D4.4.2 · 加入人工审核,但不制造新瓶颈
性质。通用练习题。
回答结构。
「人工审核是一条队列,不是魔法安全盒。我要定义哪些决定可审核,按校准后的风险和后果路由,给 reviewer 证据和清晰动作,并测一致率、处理时间、override 和漏掉的严重案例。容量与疲劳是硬预算, 队列饱和时系统必须 abstain 或安全降级。审核结果只有在修正 selective sampling 后才能成为训练 数据。」
追问。审核者分歧、对抗用户、隐私、延迟标签和 automation bias。
陷阱。把所有不确定案例都送给人。这样既不可扩展,也不一定更安全。
D4.4.3 · 用 back-of-envelope 做容量估算
性质。通用系统设计练习题。
题目。「还没有 load test 时,估第一版 serving footprint。」
回答结构。
「我会暴露假设,不猜 fleet 数。假设 arrival rate 是 [每秒请求],平均输入与输出是 [token],service time 是 [秒]。Little’s law 给出的 in-flight request 约为
arrival rate × service time;prefill demand 是arrival rate × input tokens;decode demand 是arrival rate × output tokens;峰值并发乘每条 sequence 的 KV bytes 给出 cache memory 边界。每项需求都除以在目标 tail-latency SLO 下实测的 per-replica goodput,再为突发、故障和 rollout 留 headroom。Tool quota、sandbox slot、日志摄取与人工审批要分别估,因为 GPU capacity 消除不了 这些队列。第一次 load test 应针对 interval 最宽的估计。」
练习追问。流量突发;session 持续数小时;retry 让工具工作翻倍;prefill 与 decode 解耦;一个 外部 API rate limit 很严;质量要求改用大模型。
陷阱。没有 model-specific throughput、KV layout、utilization 或 tail-latency target,就报精确 机器数。Part I A10 提供 parameter、FLOP、memory 与 KV-cache 估算练习。
D4.5 · 把评测、rollout 与监控一起设计
离线评测、线上实验和监控回答不同问题:
- 离线:能否低成本、可重复地检测可能提升?
- 线上:在真实行为下,系统是否改善真正决定?
- 监控:部署时成立的契约现在还成立吗?
按来源和目的建立 eval set:regression、capability、对抗安全、时间 holdout,以及持续轮换的新鲜集合。 冻结核心集保持可比性,同时保留新数据检测污染和漂移。还要通过一致率、稳定性和有针对性的人工审计 测量 evaluator 本身。
Rollout 按可逆性推进:replay → shadow → 内部用户 → 低风险 cohort → 更广流量。每阶段都要 说明进入条件、证据窗口、owner 和 rollback。
D4.5.1 · 监控标签几周后才到的系统
性质。通用练习题。
回答结构。
「我会把快速 proxy 与延迟真值分开。快速信号包括输入漂移、abstention、检索覆盖、judge 分歧、 policy violation、延迟和用户纠正行为。它们触发调查,不直接宣告质量。当延迟标签到达后,回填 cohort 指标,并估计哪个 proxy 真正预测了伤害。同时持续人工标一小组 sentinel sample,避免系统 连续几周失明。」
练习追问
- 「Sentinel sample 有偏。」
- 「用户反馈稀疏,而且是选择性样本。」
- 「Judge 和模型一起漂移。」
- 「什么情况自动 rollback?」
陷阱。把 embedding distance 报警叫成「模型质量」。它证明发生变化,不证明发生伤害。
D4.5.2 · 发布前先设计 rollback
性质。通用练习题。
回答结构。
「权重、prompt、retrieval index、feature 定义、tool policy 和 evaluator 都要版本化。Rollback 要恢复一组兼容 bundle,不只是旧权重。还要决定正在运行的 session 是排空还是切换,保留足够的 抽样 trace 用于诊断,并把 rollback 本身纳入发布测试。自动触发只用于高置信运行故障或严重安全 故障;模糊质量变化则通知 owner 并冻结扩量。」
追问。数据库 migration、不可逆动作、污染反馈和多 region 版本不一致。
陷阱。从未演练过的 rollback 命令。未测试的恢复只是一个假设。
AI Engineering Field Guide 能帮助了解公开报告里 ML design 题的范围,但它展示出的公司差异也再次 说明:recruiter 给的真实 loop 和具体岗位约束才是 source of truth。它是一份持续更新的 repository, 访问于 2026-08-13 [R15]。
D4.6 · 把长时程 coding/research agent 设计成耐久系统
模型只是一个可替换组件。真正产品是包围不可信模型输出、外部数据、工具与 side effect 的 control plane。Anthropic 的 Managed Agents 架构把耐久 append-only session log、可替换 harness 与隔离 sandbox 分开;其 long-running harness 工作使用跨 session 的显式 progress artifact [R27] [R28]。这些是有用设计实例,不是唯一实现。
协议边界不会自动满足系统责任。MCP 标准化 host/client/server 与 resource、tool 的连接;A2A 支持 独立 agent 间通信 [R29] [R30]。两者都不会替你提供 authorization model、 idempotency、release policy 或 task-level correctness。NIST 的 agent identity concept paper 把 identification、authorization、audit、non-repudiation、prompt injection 与 least privilege 明确为 部署关注点与开放标准化问题,而不是一套已完成标准所提供的保证 [R31]。
D4.6.1 · 设计一个长时程 coding 与 research agent
性质。通用 agent-system design 练习题。
题目。「设计一个能跨 repository、论文、测试和外部服务工作数小时、能从故障恢复,并可能最终 建议或执行高后果动作的 agent。」
示例口头回答。
「我先把 task state 与 model context 分开。一个 durable task ID 对应 append-only event log: 用户意图、plan revision、model 与 prompt version、tool call 与结果、approval、budget、artifact、 checkpoint 和 side-effect receipt。Stateless harness worker 租用下一步,crash 后从日志恢复。 代码和不可信内容只在 disposable sandbox 运行,没有 ambient credential;typed tool proxy 在 sandbox 外持有 narrow、short-lived identity。
「Harness 强制 wall-clock、token、tool、retry 与 cost budget。Read 可以 bounded backoff retry; write 必须有 idempotency key,或 read-before-write reconciliation plan。Timeout 代表结果未知, 不代表允许重复。发布、发消息、merge、花费、改变权限或发送数据等 high-impact action 必须跨过 显式 approval boundary。
「Observability 把每次 model turn 与 tool call 连到 task、principal、sandbox、artifact version、 latency、cost 和 resulting state。完成不能由模型自己说『done』:隔离 verifier 读取原需求与产物, 运行 hidden test 或 independent evidence check,并控制 release gate。关闭任务前,reconciliation 比较意图与真实外部状态。最小 baseline 是一个 agent、一个 sandbox、typed tool、durable log 和 verifier;只有实测瓶颈证明值得时,parallel agent 才承担 coordination cost。」
练习追问
- Harness 在外部 write 成功后、记录 success 前 crash。
- Tool 返回的网页要求 agent 暴露 credential。
- Verifier 与主 agent 使用同一 model family 和 failure mode。
- 两个 worker 活跃时,用户改变目标。
- Task 超过 budget,但已产出有希望的 partial artifact。
- 远端 specialist 通过 A2A 暴露,工具通过 MCP 暴露。
陷阱
- 把 chat history 当成 durable source of truth。
- 给 sandbox 宽泛 cloud 或 source-control credential。
- 像重试纯模型调用一样重试 side effect。
- 只用 self-reflection 做 verifier 或 release gate。
- 还没定义 ownership、state 与 recovery,就先画 multi-agent graph。
D4.6.2 · 没有 stable API 时选择 API 或 computer use
性质。通用练习追问。
回答结构。
「存在 stable API 时优先使用,因为 typed request、scoped authorization、idempotency key、 structured error 与 audit log 让 side effect 更容易定界与 reconcile。没有 stable API 时, computer use 是最后一层 adapter:放在隔离 browser 或 VM,只暴露批准的 site 与 account,把页面 内容当不可信输入,并要求 high-impact action 确认。动作前记录 target 与 expected postcondition, 动作后检查真实 external state。Pixel action 天然不具 idempotency,所以 timeout 后进入 reconciliation,不能 blind replay。」
OpenAI 官方 computer-use 指南建议隔离 browser 或 VM、对 high-impact action 保留人工 review,并把 页面内容当成不可信输入 [R32]。
练习追问。网站 redesign;upload 部分成功;出现 CAPTCHA 或 MFA;页面含 indirect prompt injection;同一动作存在 undocumented endpoint。
陷阱。把 computer use 叫成「另一个 tool」,却忽略弱 schema、歧义 outcome、UI drift 与更大 injection surface。
D5 · 实验设计与科学推理
实验是服务决策的工具。先从决定和 estimand 开始,而不是从模型开始:
- 决定:证据为正、为负或模糊时,各会改变什么?
- 单位:用户、任务、会话、文档、run、随机种子、集群还是时间窗口?
- 干预:究竟改变了什么?
- 反事实:同一总体没有接受干预时会怎样?
- Estimand:平均效应、尾部效应、实际接受处理者效应,还是成本调整后的效应?
- 有效性:除了所声称机制,还有什么会制造相同现象?
NIST/SEMATECH 的统计手册是 control、方差、power 和实验设计的可靠背景材料 [R23]。但在面试里,公式通常次于找对独立单位、leakage 路径和决策阈值。
可以交叉复习 Part I A11.7 · Designing an eval、 A11.12 · A/B testing and online metrics,以及 Part II C6 · Statistics and estimation。本节练的是把这些工具 变成口头实验决定。
D5.1 · 把主张变成 estimand 与 control
「Method A 改善推理」还不可检验。可检验版本可以是:
在训练数据 cutoff 之后定义的 prompt 分布上,固定推理算力预算,Method A 相对调好参的 baseline 让 pass rate 改变某个预先指定的幅度,同时严重格式违规保持在 guardrail 以下。
这句话固定了总体、预算、比较对象、结果和 guardrail,也暴露了足以反转结论的选择。
Post-cutoff 样本只会降低已知 exposure 风险,不能证明不存在 benchmark-specific post-training、 任务期间的 retrieval exposure 或未披露训练数据。Cutoff 只是一个 control;还需要 provenance review、 access-path check、新鲜或私有任务、overlap audit,并明确承认哪些数据流不可观察。
Control 必须回答真正因果问题:
- 不做干预;
- 当前生产 policy;
- token 或延迟相同的 active placebo;
- 最强调参替代方案;
- 随机顺序或盲评;
- 匹配算力或数据的 control。
线上随机实验默认报告 assignment 的 intention-to-treat(ITT) 效应。只在实际 compliance 的人中 比较会破坏随机化。Treatment-on-the-treated 或 complier-average causal effect(CACE)需要把随机 assignment 当作 instrument,并显式说明:assignment 会改变 treatment uptake(relevance); assignment 只通过 treatment 影响 outcome(exclusion);不会有人系统性地反着 assignment 行动 (monotonicity);且 assignment 按设计与 potential outcome 独立。这些假设不能辩护时,就分别 报告 ITT 和 compliance,不把选择性比较重新命名成因果效应。
D5.1.1 · 评测新的 reasoning-time 策略
性质。通用练习题。
回答结构。
「决定是要不要为这项策略付出额外推理算力。我会从 training-data cutoff 之后的目标分布抽 prompt, 随机分配新策略与 matched-compute baseline,以 task success 为单位。主结果是解决任务数;延迟、 token 成本和严重无效输出是 guardrail。如果新方法用了四倍预算,greedy baseline 不够公平,要 与 best-of-N 或同等算力的另一种用法比较。还要提前规定,多大收益才值得增加成本。」
练习追问
- 「一些任务没有 verifier。」
- 「策略只帮助困难 prompt。」
- 「算力是自适应使用的。」
- 「不同 prompt 共享 template。」
陷阱
- 比较不相等的 test-time budget,却把全部提升归给算法。
- 把同一 prompt 的多次采样当成独立任务。
- 根据正在评测的模型结果选择所谓「困难 prompt」。
D5.1.2 · 选择随机化单位
性质。通用练习题。
题目。要 A/B 测试一个用户会反复访问的助手。
回答结构。
「如果 treatment 会改变后续行为或预期,我会按用户随机,而不是按请求。请求级随机化会让同一个 用户内部相互污染,体验也不连贯。结果可以按 session 测,但统计推断要处理 user clustering。 如果用户会在同一 workspace 协作,workspace 可能才是真正的 interference unit。」
追问。新老用户、网络效应、crossover design 和 cookie 丢失。
陷阱。把 event table 里的一行误当成独立实验单位。
D5.2 · 优化之前先找 leakage 与 confounding
Leakage 是实验暴露了预期决策时刻本不该拥有的信息,或允许训练与评测单位互相通信。常见路径:
- split 之间存在重复或近重复样本;
- 使用未来标签或结果发生后的 feature;
- 用户、repository、文档或 template 跨 split;
- teacher 或 evaluator 见过 benchmark;
- 根据 test performance 选择 prompt;
- retrieval 能搜到答案或 benchmark explanation;
- 反复在名义 holdout 上调参;
- 人工 rater 从表达风格认出 treatment。
Confounding 是 treatment 与另一个原因一起移动:Model A 同时用了更多 token、更新数据、不同 prompt、 更多调参或不同 serving stack。写一张 treatment manifest,列出所有差异。如果有十二项,这个实验 测的是整个系统包,不是单一机制。
D5.2.1 · 审计可疑的大幅离线提升
性质。通用练习题。
回答结构。
「在庆祝前先冻结 run,检查 provenance。查 exact 与 semantic overlap;按 repository 或客户 这样的最高层实体切分;核对标签时间;确认 retrieval 看不到 eval 答案;再比较数据 cutoff 和 evaluator family。改变模型前,我会先在一批新的 post-cutoff 样本重跑,同时说明 cutoff 排除不了 benchmark-specific post-training、retrieval exposure 或未披露数据。提升越大,越应该提高怀疑, 而不是降低。」
练习追问
- 「Semantic dedup 有假阳性。」
- 「公开 benchmark 很可能在预训练里。」
- 「没有新标签。」
- 「Evaluator 参与写了部分训练数据。」
陷阱
- 在已污染数据上增加随机种子。重复只能降低随机误差,不能消除 bias。
- 以为去掉 exact duplicate 就完成污染审计。
D5.2.2 · 把模型变化与 serving 变化分开
性质。通用练习题。
题目。新模型上线后 conversion 提高,但 rollout 同时改变了延迟和 UI 文案。
回答结构。
「这次 rollout 估计的是整个 package 的效应,不是模型效应。先判断 package effect 是否已经 足够支持产品决定。如果机制归因重要,就用 factorial 或顺序设计:固定 UI 与 serving,只随机 model,再分别测试 latency 或文案。还要查 sample-ratio mismatch 和曝光日志,因为延迟变化会 改变谁留在可观测样本里。」
追问。交互效应、流量有限、旧模型无法继续 serving、novelty effect。
陷阱。事后把 package 结果归给自己最喜欢的组件。
D5.3 · 推理方差、power 与多重比较
Power 规划从值得采取行动的 effect 开始。流量足够大时,无意义小效应也能统计显著;流量太少时, 有价值效应仍然模糊。要说明:
- 最小决策相关效应;
- baseline rate 与预期方差;
- 独立单位与 clustering;
- 可以容忍的假阳性和假阴性;
- 计划时长与 seasonality;
- 停止规则。
降低方差可以靠更好的 pairing、stratification、实验前 covariate、重复测量或更低噪声指标,不只有 增加样本。
当你尝试许多 prompt、checkpoint、数据集、切片、指标、随机种子与停止时间,再只报告最好一个时, 多重比较就出现了。提前指定一个主分析;其余明确为探索性;正式主张需要时做校正;被选中的发现要在 未碰过的数据上验证。
D5.3.1 · 回应「结果不显著」
性质。通用练习题。
回答结构。
「首先不能把『不显著』翻译成『没有效应』。我要报告 effect estimate 和区间,并与最小有用效应 比较。如果区间排除了任何有价值收益,可以支持停止;如果仍覆盖有意义的伤害与收益,实验就是 inconclusive,需要检查方差、compliance,以及继续收数据是否值得。如果估计很小而区间很窄,再多 流量也不会让它变重要。」
追问。Bayesian 解释、equivalence 或 non-inferiority、sequential test、power 不足的 subgroup。
陷阱。没有合法 sequential design 却一直运行到常规阈值出现。
D5.3.2 · 处理二十个指标与五十个切片
性质。通用练习题。
回答结构。
「运行前定义一个主指标、一小组 guardrail,以及一份与明确假设相连的 confirmatory slice 清单。 其余切片用于诊断。如果出现意外切片,就把它当成生成假设,再用新数据确认。展示全部被测试的 outcome family,而不是只展示赢家。」
追问。False-discovery control、层级指标、罕见严重事件,以及不能被归为探索性的公平切片。
陷阱。用统计多重性消除安全义务。Multiplicity 不会让严重事件变得无关,只会改变你能从它泛化 多远。
D5.4 · 把离线指标连到线上决定
离线指标在快速、稳定、可分解,而且能预测线上重要结果时很有价值。它会在这些情况下失效:
- benchmark 分布与真实流量不同;
- 指标奖励长度或风格等 proxy;
- 用户会适应 treatment;
- 系统延迟改变曝光;
- 错误后果不对称;
- 上线反馈改变未来数据。
建立指标阶梯:
- 组件指标;
- 端到端任务结果;
- 用户或业务结果;
- 安全与系统 guardrail;
- 长期反馈效应。
Trustworthy Online Controlled Experiments 强调随机线上证据、guardrail,以及 sample-ratio mismatch 等诊断 [R22]。用线上实验验证离线—线上联系,不要拿它挽救每个离线就很弱 的想法。
D5.4.1 · 解释离线与线上相反
性质。通用练习题。
题目。离线 answer quality 上升,线上 task completion 却下降。
回答结构。
「我不会立刻选一个指标相信,而是列出会预测这种分歧的机制:延迟增加导致用户离开;答案更长但 不可执行;离线 prompt 漏掉真实困难长尾;evaluator 奖励风格。先验证曝光和实验完整性,再按延迟、 query 类型和答案长度切 completion,把线上失败 replay 回离线 harness。目标是修复测量模型,不是 只挑自己喜欢的结果。」
追问。线上标签噪声、长期 retention 与短期 completion、treatment 改变 query mix。
陷阱。还没找到缺失机制,就宣告 benchmark 无用。
D5.4.2 · 为线上 LLM 实验选择 guardrail
性质。通用练习题。
回答结构。
「主指标跟随产品决定,例如成功完成任务。Guardrail 覆盖严重无依据陈述、policy violation、隐私 事件、用户纠正或升级、p95 延迟、错误率和成本。每类罕见严重事件都报告 exposure denominator、 事件数、rate 和 one-sided upper confidence bound;零次观察不等于零风险。还要逐案复核,不把严重 性稀释进平均数,并监控 sample-ratio mismatch 与日志健康度,避免干净结果建立在坏实验上。」
陷阱。列三十个 guardrail,却没有 escalation rule。每项都需要 owner 和响应动作。
D5.5 · 从负面与模糊结果中学习
负结果可能表示:
- 机制错误;
- 干预太弱;
- 实现失败;
- 测量不敏感;
- 效应只在某个切片;
- 方差太高;
- baseline 比预期强。
不能看到结果后再挑解释。提前定义 sanity check 与 positive control。只有当负结果收窄主张、改变资源 分配时,它才变得有用。
D5.5.1 · 负结果后决定是否停止
性质。通用练习题。
回答结构。
「先问实验有没有能力看到所预测效应:干预是否改变了中间目标?Positive control 是否被检测到? 区间是否窄到足以排除有用收益?如果都成立,就停止或收窄假设;如果不成立,只允许一次提前选定的 诊断实验。不能因为每次失败都能找到解释,就让想法获得无限重试。」
追问。Sunk cost、高级 sponsor、很诱人的定性案例、publication bias。
陷阱。只把 run 叫成「一次学习」,却说不出哪项信念或计划改变了。
D5.5.2 · 建设性地呈现负结果
性质。通用练习题。
回答结构。
「原主张预测 [条件] 下会出现 [效应]。在干预已验证、且灵敏度足以检测 [最小有用效应] 时,我们没有观察到它。这排除的是该 regime 下的 [有边界主张],不是整个 想法。结果避免继续投入 [下一项投资],也暴露 [更强 baseline 或隐藏约束]。剩余开放问题 是 [具体边界]。」
陷阱。把失败重新包装成成功。价值来自可以辩护的边界,不来自正向话术。
D5.6 · 设计能识别 regime change 的 scaling experiment
Scaling experiment 不只是「训练小、中、大三个模型再拟合直线」。先决定固定什么:
- 总算力;
- 每参数 token;
- 数据质量与 mixture;
- optimizer 与 schedule;
- 架构比例;
- 推理预算;
- eval 污染与难度。
再区分插值与外推。小规模排序会因优化稳定性、数据饱和、通信开销或系统瓶颈而反转。Pilot scale 用来 估趋势和诊断不变量;到最昂贵终点前,要留一个中间验证点。
D5.6.1 · 判断一个想法能否在规模上成立
性质。通用练习题。
回答结构。
「先找规模为什么可能改变比较。如果收益来自算法,我会在多个尺寸匹配算力和数据,并测与机制相连 的中间指标。拟合趋势时不使用最后的 validation scale,先预测那个点,再真正测试。同时测系统成本, 因为 FLOPs 相等的方法可能有更差通信或利用率。只有质量趋势和运行趋势都支持目标 regime,才继续 放大。」
练习追问
- 「只能负担一次大 run。」
- 「超参数不能迁移。」
- 「数据集饱和。」
- 「小模型无法表达机制。」
陷阱
- 每个规模用不同调参方式,最后却把 frontier 全归因于 scale。
- 穿过已知 regime change 做外推。
- 看到大点后再挑 scaling law。
D5.6.2 · 分配唯一一次昂贵 run
性质。通用练习题。
回答结构。
「只有便宜 run 已排除实现、评测和明显超参问题后,才使用昂贵 run。我会选最能区分领先假设的 那一次,不自动选择最大模型。启动前写下预测区间、kill criteria、checkpoint 与 eval schedule, 以及每种结果分别意味着什么。运行中只看预先规定的 health signal,不通过临时修改追逐 test metric。」
陷阱。把大 run 同时当实验和生产产物,于是前提失败后也舍不得停止。
D6 · Debugging 与事故讨论
本节练的是口头定位。代码 drill 属于 Part II;这里面试官看的是你能不能在不制造第二次事故的前提下 持续减少不确定性。
使用这条 incident loop:
- 稳定:阻止不可逆伤害,保留证据。
- 验证:确认症状真实,不是日志或聚合问题。
- 定界:第一个坏时间、受影响切片、版本、region、rank 与 blast radius。
- 比较:最后已知正常状态与第一个已知异常状态;列出所有变化依赖。
- 假设:数据、代码与配置、数值与模型、基础设施、测量。
- 区分:运行最便宜而安全、能分开领先假设的检查。
- 修复:先缓解影响,再修 root cause。
- 验证:replay、canary、regression test,并监控延迟效应。
- 预防:恢复一项不变量、测试、owner、报警或恢复路径。
把自己处于哪一步说出来。直接跳到原因听起来快,通常暴露的是 anchoring。Stas Bekman 的工程笔记 很适合这个话题,因为它按可观察形状处理大规模训练故障、强调保留第一个异常点周围的证据,并把恢复 与根因分开 [R17]。
实现层练习可以交叉复习 Part I A5.5 · Diagnosing training instability 与 Part II B9 · Debugging。本节仍聚焦口头定位、containment 和 决策顺序。
D6.1 · 验证、定界并保留证据
改变系统前先问:
- 报警是否正确计算,是否覆盖完整流量?
- 独立信号中也能看到症状吗?
- 最早异常事件是什么,而不只是报警何时触发?
- 哪些 cohort 没受影响?
- 代码、数据、配置、依赖、硬件与流量分别变了什么?
- Rollback 会不会销毁证据,或造成状态不兼容?
负空间很有力量。「只在一个 region」「只在长 context」「只在 resume 后的 job」都能一次删除整类 假设。
D6.1.1 · 打开一道事故题
性质。通用练习题。
题目。「生产质量突然下降,你怎么办?」
示例口头开场。
「先把 containment 和 diagnosis 分开。如果用户正面对高后果伤害,我会路由到 last-known-good bundle,或禁用受影响动作,同时保留抽样 trace 和版本。接着用独立指标验证下降,并确定第一个坏 时间、cohort、region、模型版本和请求形状。在提出原因前,先 diff 这条边界附近的全部变化。初始 假设桶是流量与数据、模型或 prompt、serving 与配置、外部依赖和评测。第一项测试应该一次分开其中 几类。」
练习追问
- 「Rollback 成本很高。」
- 「上一版模型也不好。」
- 「只有一个 proxy metric 变化。」
- 「最近没有 deploy。」
陷阱
- 没检查兼容性、data migration 与不可逆动作就说 rollback。
- 还没定界就开始自由 brainstorm。
- 同时改变多个变量,抹掉原始状态。
D6.1.2 · 建立变化账本
性质。通用练习题。
回答结构。
「围绕第一个异常事件建 timeline,而不是围绕 page 时间。每项变化记录 owner、rollout 比例、影响 表面与 rollback 状态:权重、prompt、tokenizer、feature code、retrieval index、数据源、依赖、 hardware image、autoscaling policy 和 evaluator。比较受影响与未受影响 cohort 来排序变化。 Change 是证据,不是罪证;静默外部变化和数据变化仍要保留为假设。」
追问。多项变化一起上线、时钟不一致、渐进 rollout、隐藏 feature flag。
陷阱。以为「没有 code deploy」就等于「什么都没变」。
D6.2 · 讨论 training loss spike
先给形状分类:
- 短暂 spike 后恢复;
- 缓慢恢复;
- 永久 level shift;
- divergence 或 NaN;
- 全局还是单 rank、单 shard、单数据切片;
- gradient norm、learning rate、throughput 与 validation 是否同步变化。
接着检查可见 spike 之前的时间窗口。大规模 run 中,坏数据区间、optimizer state、数值问题或硬件错误 可能在 dashboard 过阈值前已经发展。保留 checkpoint、sampler state、最近数据 ID、per-rank metric 和环境版本。
D6.2.1 · 定位第 42,000 步的 loss spike
性质。根据工程来源中的 failure category 合成的练习事故;精确 step 与场景只是示例,不声称是 反复报告的面试题。
示例口头回答。
「我不会第一步就降 learning rate。先分类形状,再看 validation loss、gradient norm、throughput 和 per-rank loss 是否一起变化。接着查第 42,000 步前是否刚 resume、切换 data shard、跨过 schedule boundary、改过配置或发生硬件事件。拿 last-good checkpoint,用相同 sampler state 和 捕获的 batch ID replay。数据、数值、optimizer state 和硬件对可复现性与 rank locality 有不同 预测。Containment 取决于恢复情况:短暂 spike 可以记录后继续;持续损坏可能需要 rollback,并换 数据顺序重启。」
练习追问
- 「Spike 前一个 batch 看起来正常。」
- 「只有一个 rank 出 NaN。」
- 「Resume 后才出现。」
- 「Training loss 恢复,但 validation 没恢复。」
陷阱
- 只检查紧挨 spike 的前一个 batch。
- 把 gradient clipping 当 root-cause fix。
- 不保留 sampler 与 optimizer state 就重启,让事件再也无法复现。
D6.2.2 · 决定继续、跳过还是回滚
性质。通用练习题。
回答结构。
「事件短暂、状态回到原轨迹、validation 不受影响,而且没有残余腐败信号时继续。问题能复现并 定位在某段数据时,跳过或隔离这个 window。参数或 optimizer state 持续受损、validation 迁移, 或原因不明且很可能重现时 rollback。决定比较预期损失算力与预期伤害,不受『丢掉进度很心疼』支配。」
追问。Checkpoint cadence、反复坏 batch、非确定 kernel 和 deadline 压力。
陷阱。因为 run 很贵就继续。沉没算力不会让已污染的算力变有价值。
D6.3 · 调试模型或产品 regression
分解端到端变化:
流量 → 预处理 → context 与 retrieval → 模型 → 后处理与工具 → UI → 结果测量
让同一批冻结输入分别通过 last-known-good 和候选 bundle。输出不同,就 bisect 组件;输出相同但线上 结果不同,就看流量、延迟、曝光、外部状态和测量。
使用 golden corpus 做确定性或有容差的 regression check,但绝不能把它误当成完整生产分布。
D6.3.1 · 调试发布后的准确率回退
性质。通用练习题。
回答结构。
「先在冻结请求和完整版本 trace 上复现。如果新旧 bundle 输出不同,就依次 bisect 权重、prompt、 tokenizer、retrieval snapshot、feature code 和 decoding config;如果离线输出相同,就检查曝光 与在线依赖:traffic mix、权限、延迟 timeout、tool response 或测量。按最能分开好坏的最小维度 切片,例如语言、context length、tenant、region 或任务类型,再测试对应边界。」
练习追问
- 「总体下降来自一个大客户。」
- 「只有长 context 回退。」
- 「旧 trace 含隐私数据。」
- 「无法精确 replay 上一版。」
陷阱。还没证明 regression 从管线哪里进入,就先重训。
D6.3.2 · 处理静默而渐进的回退
性质。通用练习题。
回答结构。
「渐进 regression 更应怀疑 input drift、index staleness、反馈回路、依赖变化、calibration drift 或资源饱和,而不是单一 deploy。我会在固定 sentinel input 和当前流量上比较时间 cohort,检查 leading component metric,并定位一阶变化开始的位置。接着问什么状态在累积:cache、corpus、 标签、用户适应,还是 model-generated training data。」
追问。Seasonality、日志 schema 变化、不断增长的 context、evaluator drift。
陷阱。因为 incident ticket 有开始时间,就只找离散坏 commit。
D6.4 · 找 training-serving skew
Training-serving skew 表示 policy 在生产里看到的 feature、变换、context、tool contract 或分布与 训练不同。预防应来自架构:共享 transformation、版本化 contract、记录真正 served feature,并 让生产样本 replay 训练代码。Google 的 Rules of ML 明确建议测量 skew,并记录 serving feature [R18]。
有用的不变量:
- tokenizer 与 normalization 相同;
- feature 定义和 default 相同;
- 必要时使用 event time,而不是 processing time;
- point-in-time correct join;
- prompt 与 tool schema 相同;
- retrieval 与 permission contract 相同;
- train/eval mode 和 numerical precision 显式;
- 不使用预测发生后才可得的 feature。
D6.4.1 · 模型离线好、serving 坏
性质。通用练习题。
回答结构。
「抽样捕获一批经过隐私处理的真实 served input 和中间 feature,再通过离线管线 replay。逐边界 比较 hash 或值:raw event、preprocessing、tokenizer、feature join、context construction、模型 版本、decoding 和 postprocessing。如果模型输出匹配,差距在下游或流量与测量;如果不匹配,第一个 不同中间值就定位了 skew。长期修复是一份版本化 transformation 或 contract,并在 release 中加入 parity test。」
练习追问
- 「不能记录 raw feature。」
- 「Online store 更新更快。」
- 「BatchNorm 或 dropout mode 不同。」
- 「只是一种罕见 default value 错了。」
陷阱。只比较最终 prediction。第一个不同的中间值有用得多。
D6.5 · 结论不可能时怀疑 evaluation
坏 eval 会产生:
- 看起来正确但对不齐的标签;
- overlap 或时间 leakage;
- 错误 answer normalization;
- evaluator 对长度、风格或同家族模型有偏好;
- 非确定的 judge 版本;
- denominator 或聚合 bug;
- 静默 task failure 被算成模型失败;
- 只保留完成或可 parse 输出造成 selection。
用已知 positive 与 negative control 验证 harness。人工打分随机样本和高影响分歧样本。所有 prompt、 judge、parser 与 dataset 都要版本化。ML Test Score 把数据、模型、基础设施和监控测试分开,恰好 提醒我们模型指标也可能在模型外部失败 [R19]。
D6.5.1 · 调试突然跳高的 benchmark
性质。通用练习题。
回答结构。
「模型没有合理变化却不连续地跳高,harness 就是领先假设。先冻结 artifact,让旧模型跑当前 harness,让当前模型跑旧 harness;再比较 dataset version、parser、normalization、judge prompt 与模型、retry policy 和 denominator。Known-answer control 与盲评人工审计能判断我们测到了更多 能力,还是只接受了更多输出。」
追问。旧 judge 已不可用、API retry 不同、parser failure rate 降低、数据集刷新。
陷阱。因为「模型没怎么变」,就在调查结束前发布提升。
D6.5.2 · 评测 evaluator
性质。通用练习题。
回答结构。
「先定义 evaluator 要近似的 construct,再跨 score 与风险 strata 抽样,收集盲评独立人工判断, 测一致性和系统性错误,而不只 correlation。在保持内容不变时扰动长度、顺序、风格和模型身份,检验 bias;还要看重复调用与版本之间的稳定性。如果 evaluator 用于训练,必须另设独立 audit channel, 因为优化一定会攻击它的弱点。」
陷阱。只报告一个 agreement 数,不展示后果最严重的分歧切片。
D6.6 · 按拓扑与边界定位分布式故障
分布式故障常像模型故障,因为一台坏 worker 就能污染 collective。按这些维度定界:
- rank、host、rack、region 与 accelerator type;
- data shard 与 pipeline stage;
- collective operation 与 tensor size;
- 确定发生还是间歇发生;
- load、temperature、memory pressure 与 job age;
- resume 或 checkpoint 前后。
做受控替换:同一 workload 换硬件,不同 workload 放同一硬件;缩小 world size,或替换一条通信路径。 保留 per-rank 日志,不让 aggregate mean 抹掉单个毒源。
D6.6.1 · 一个分布式 job 间歇 hang
性质。通用练习题。
回答结构。
「先区分只是进展慢还是 deadlock,在 kill 前捕获 stack 与 collective state。用 per-rank timestamp 定位卡在哪个 rank 和 operation,比较是否反复出现同一 rank、host、tensor size、data batch 或 pipeline boundary。再做替换:移动 rank、缩小 world size,或在可疑 topology 上跑通信 诊断。即时缓解可以排除 host;root fix 取决于原因是 collective 不匹配、data-dependent control flow、网络还是硬件。」
练习追问
- 「Watchdog 在日志 flush 前就 kill。」
- 「每次坏 rank 都不同。」
- 「只有大 message 会 hang。」
- 「加入 conditional routing 后才开始。」
陷阱
- 把每次 hang 都叫成 NCCL 问题。
- 一直重启到成功,丢掉所有证据。
- 忽略 divergent control flow 会让不同 rank 调用不同 collective。
D6.6.2 · 用预防措施结束事故
性质。通用练习题。
回答结构。
「不能用『修了那台机器』结束。要说明被破坏的不变量、为什么发现晚,以及现在用什么 control 防止 或缩短重现:preflight health test、per-rank sentinel、能捕获状态的 timeout、兼容 checkpoint、 canary topology,或明确的 owner 与 runbook。然后在安全环境重造故障,验证 control。没有 owner、 trigger 和测试的 action item 不叫预防。」
陷阱。笼统承诺改善监控。必须说出信号、阈值、响应动作和负责人。
D6.7 · 同时调试 agent side effect 与 prompt injection
一次 agent incident 可能在同一条 trace 里跨过模型、harness、sandbox、identity 和外部系统边界。 不要在重建 state machine 前就选择「模型问题」或「基础设施问题」。Tool output 与 retrieved content 都当作不可信证据;timed-out write 则是未知 outcome。
D6.7.1 · Timeout 重复外部写,同时 indirect injection 试图 exfiltration
性质。组合已记录 agent-security 与 reliability failure mode 的合成练习事故,不声称是被报告的 面试题。
题目。Research agent 提交外部 job。Tool timeout 后 harness retry,结果创建了两个 job;同一条 trace 里,retrieved document 还要求 agent 把先前 attachment 上传到攻击者网站。
示例口头回答。
「先 revoke 或 suspend 该 task 的 credential 与 lease,冻结新 write 和 egress,保留 append-only session、tool-proxy、approval、network 与 external audit log,并暂时不删除 sandbox。接着和外部 系统 reconcile side effect:按 task、principal、payload fingerprint、时间和已有 idempotency key 搜索;识别两个 job;通过服务支持的路径停止或补偿 duplicate;通知受影响 owner。
「然后重建第一个 divergence。模型层:不可信文档是否改变 plan,或请求了用户目标之外的数据? Harness 层:为什么 retrieved content 能接触 egress-capable tool?为什么 retry 没复用 stable operation ID?为什么没有 approval?Tool 层:API 是否支持 idempotency key?它的 timeout 是 unknown commit,还是确定 failure?我会在隔离 sandbox 用 fake credential 与 mock service replay 捕获输入,逐边界测试而不重复伤害。
「长期修复包括:write-ahead intent;所有 retry 复用一个 idempotency key;timeout 进入
UNKNOWN后先 read/reconcile;least-privileged、task-bound identity;egress allowlist 与 data-classification check;新 destination 或敏感传输必须显式 approval;严格分开 tool data 与 instruction;以及同时 覆盖 injection 和歧义 tool outcome 的 regression test。只有 intended 与 observed external state 一致,恢复才完成。」
练习追问
- 外部服务没有 lookup 或 idempotency support。
- 一次 duplicate action 不可逆。
- Event log 记录 request,却没记录哪个 tool worker 发出。
- 模型从未复述 injection,但下一步动作改变。
- 人只批准原 job,没有批准 retry 或数据上传。
陷阱
- 还没保留足够证据就 rotation credential,导致无法重建范围。
- 以为 timeout 代表第一次 write 失败。
- 只修 prompt,不收紧 identity、egress 与 retry semantics。
- 多个 control 独立失效,却把事故压成一个 root cause。
D7 · Behavioral questions:展示决定,不要只报性格词
行为轮可能让技术很强的人失手,因为他们同时在做记忆检索和答案构造。Alisa Liu 写过,自己第一次去时 以为当然是一个「表现良好的人」,结果面对简单题却想不出例子,也没有真正回答问题 [R9]。准备不是编造顺滑故事,而是在计时开始前给真实证据建立索引。
每个答案都应该让面试官检查:
- 情境与后果;
- 你的责任和权限;
- 决定或张力;
- 你具体说了什么、做了什么;
- 其他人怎样回应;
- 结果,包括成本和未解决部分;
- 后来你的行为改变了什么。
性格词只是结论。「我很有 ownership」很弱。一次你发现无人负责的故障、选择有边界的动作、对齐相关 人员并留下长期 control 的真实时刻,才是证据。
D7.1 · 第一口就回答问题
先给 headline:
「有。最清楚的例子是 [事件];我做了 [决定],结果是 [结果]。」
接着只给理解张力所需的背景,把大部分时间放在动作和推理,最后用真实反思收尾,而不是「沟通很重要」。
题目问冲突时,一个技术很难但没有人际分歧的项目不算回答;题目问失败时,一次延期的成功也不算。 要明确自己正在回答哪道题。
D7.1.1 · 做九十秒行为回答
性质。行为题被广泛报告;这个时长只是练习工具。
填写模板。
「简短答案是 [直接回答]。情境是 [两句话]。我负责 [范围],而 [其他人] 负责 [范围]。困难选择是 [张力]。因为 [推理],我依次做了 [具体动作]。结果是 [已核实结果,包括没解决的部分]。我会改变的是 [真实纠正];从那以后,我一直 [后续行为或 control]。」
练习追问
- 「你在房间里具体说了什么?」
- 「对方怎样看这件事?」
- 「什么证据说明是你的动作造成结果?」
- 「对方会说你哪里做得不好?」
陷阱
- 用五分钟铺背景。
- 每句动作都说「我们」。
- 结尾道理没有连接到任何行为改变。
D7.1.2 · 发现故事没有回答题目时及时纠正
性质。通用练习题。
回答结构。
「我意识到这个例子展示的是技术困难,不是冲突。我换一个更合适的真实例子: [真实例子]。分歧是 [决定],我的角色是 [角色]。」
陷阱。因为临时换例子尴尬,就继续讲不相关故事。能自我纠正,比流畅地跑题更强。
D7.2 · Motivation 与「为什么是这家实验室」
可信的动机答案有四条连接:
关心的问题 → 自己工作中的证据 → 为什么是这个团队、这个时点 → 双向验证
不要夸品牌。要指出一个问题、一项近期产物或方向、该岗位独有的能力或约束,以及你想学习或贡献什么。 OpenAI 官方指南要求候选人准备 motivation 和 goal,并学习与面试团队相关的近期工作 [R4]。Anthropic careers 页面也明确会询问经历与动机 [R2]。这是公司 公开期待的准备,不是猜题。
D7.2.1 · 回答「为什么想来这里」
性质。多家实验室官方指南都支持这类题。
填写模板。
「未来几年我最想投入的问题是 [具体问题]。在 [真实项目] 里,我学到 [有证据的教训],因此形成 [当前看法]。这个团队特别相关,是因为官方材料里可以核实的 [当前工作、基础设施、部署表面或合作者]。我能贡献 [已核实能力];同时我想在这里的交流 中验证 [对岗位或团队的真实未知]。」
练习追问
- 「为什么不留在当前组织?」
- 「具体是哪支团队或哪篇论文?」
- 「你不同意我们哪一点?」
- 「岗位发生变化,什么动机仍然成立?」
陷阱
- 「最好的人、最大的模型、最大的影响。」
- 背诵使命,却无法连接到自己做过的决定。
- 还不知道真实团队,就声称 team-specific fit。
D7.2.2 · 对实验室提出诚实批评
性质。通用练习题,不声称每家都会问。
回答结构。
「根据公开信息,我最想了解的张力是 [具体技术或组织张力]。目前我以 [置信程度] 倾向 [立场],因为 [证据]。我可能缺少 [内部背景];会改变我看法的 证据是 [证据]。我会问团队实际怎样决定 [相关取舍]。」
追问。为相反立场辩护;指出一个欣赏的决定;说出什么会成为 deal breaker。
陷阱。选择其实是夸奖的假弱点,或根据传闻做强烈指控。
D7.2.3 · 做九十秒 career spine
性质。私下填写表。个人使用前必须完成;不要发布 private answer。
回答结构。
「我的起点是 [真实起点],在那里学到 [已核实能力或问题]。转向 [当前方向] 是因为 [具体证据或经历],不是为了让时间线看起来命中注定。此后 [两项真实选择] 建立了一条主线: [自己反复选择的问题]。现在适合移动,是因为 [能力、问题或机会发生的变化]。我离开 [当前环境],是受到 [诚实 pull 与有边界约束,不贬低原环境] 驱动。下一步选择 [岗位或团队类型],因为它允许我贡献 [有证据的优势],同时验证 [真实成长问题]。」
练习追问。为什么发生那次 pivot;为什么是现在而不是一年前;会放弃什么;当前工作进展好为什么 还离开;还有什么下一步也合理;前合作者会怎样强调不同事实。
陷阱。把 private fact worksheet 变成公开自传。精确 employer、timeline、离开原因和约束都只在 私下填写;只有主动批准的材料才发布。
D7.3 · Ownership、ambiguity 与 prioritization
Ownership 有边界。它是发现无人拥有的问题、确认影响谁、采取可逆的第一步,并建立长期责任;不是 越过每个 owner,也不是一个人无限吸收工作。
面对 ambiguity,展示如何减少不确定性:
- 定义决定和 deadline;
- 分开可逆与不可逆选择;
- 找到 information value 最高的假设;
- 采取有边界的一步;
- 设 checkpoint 或停止规则。
Prioritization 必须暴露 opportunity cost。「每件事都重要」说明没有做优先级。
D7.3.1 · 描述职责范围外的 ownership
性质。通用练习题。
填写模板。
「我通过 [信号] 发现 [无人负责的问题]。它影响 [stakeholder],但 authority 在 [owner]。我先做 [containment 或取证],再与 [相关人员] 对齐范围和 decision right。 我负责 [有边界的工作],但 [仍属于别人范围的工作] 没有越界。结果是 [结果],长期 改变是 [owner、流程、测试或文档]。」
练习追问
- 「有人觉得你越界吗?」
- 「为了腾出时间,你停止了什么?」
- 「后来由谁长期负责?」
陷阱。英雄离开后系统仍然依赖英雄的故事。
D7.3.2 · 给三个紧急项目排优先级
性质。通用练习题。
回答结构。
「我比较后果、紧急性、可逆性、依赖和信息价值。先保护存在不可逆或严重 downside 的项目,再 unblock 会卡住多个团队的工作,最后推迟可逆优化。我要把『不做什么』明确告诉 stakeholder: [项目] 暂停到 [日期或证据]。如果三项真的都必须立刻做,约束就是 capacity,我会带着 选项升级,而不是静默 overcommit。」
追问。高管不同意、明天优先级又变、自己最喜欢的项目被砍。
陷阱。给了评分框架,却从不说哪个项目会失去资源。
D7.3.3 · 在深度 ambiguity 下行动
性质。通用练习题。
填写模板。
「不清楚的是 [未知量],但必须在 [deadline] 前决定。我把可逆选择 [选择] 与不可逆 选择 [选择] 分开,运行 [小实验或 stakeholder check],设置 [checkpoint],并先做 [有边界动作]。学到 [新证据] 后,我更新了 [决定]。我没有做的是 [没有根据的大承诺]。」
陷阱。把 ambiguity 讲成更加努力工作的故事,而不是减少不确定性的故事。
D7.4 · Conflict、collaboration 与 feedback
冲突答案需要双方都有合理利益。如果对方只是完全不理性,故事几乎无法说明协作能力。要把对方的模型 解释到对方可能认可。
强冲突行为包括:
- 指出真正决定,而不是人格问题;
- 询问双方各信任什么证据;
- 分开价值、事实与 incentive;
- 建一个可逆测试或 escalation rule;
- 决定后仍维护关系;
- 承认对方说对了什么。
D7.4.1 · 描述一次严重技术分歧
性质。通用练习题。
填写模板。
「我们对 [决定] 有分歧。对方最强的担忧是 [steelman];我的担忧是 [担忧]。实际是 双方在优化不同约束:[约束]。我先 [倾听或澄清],再提出 [实验、决策规则或升级路径]。 最后选择 [结果]。对方在 [一点] 上是对的,我因此改变了 [做法的一部分]。之后的关系 可以由 [证据] 说明。」
练习追问
- 「你在现场原话怎么说?」
- 「如果对方 authority 更高呢?」
- 「你有没有升级过?」
- 「对方会怎样评价你?」
陷阱
- 分歧结尾总是对方发现你是对的。
- 情绪或 incentive 明明影响决定,却被完全藏掉。
- 把礼貌等同于避免困难谈话。
D7.4.2 · 接受很难听的反馈
性质。通用练习题。
回答结构。
「反馈指出 [具体行为与影响]。我的第一反应是 [诚实反应],但我请对方给例子,并向 [来源] 核对是否构成模式。我改变了 [可观察行为],并建立 [测量或 check-in]。改善 证据是 [证据]。仍不同意的部分是 [有边界的分歧],我的处理方式是 [方式]。」
追问。给出精确例子;解释此前为什么没发现;描述一项决定不采纳的反馈。
陷阱。选择伪装成反馈的夸奖,例如「我太在乎工作」。
D7.4.3 · 给能力很强的同事反馈
性质。通用练习题。
填写模板。
「对方很强的一点是 [优点];反复出现的行为是 [可观察行为],影响了 [影响]。我先 确认这是一种模式,而不是一次令人不快的事件。私下用例子说明后,我询问对方看法,并约定 [下一项行为或检查]。我也改变了 [自己对这种互动的贡献]。结果是 [诚实结果,包括尚未完全解决]。」
陷阱。把故事中心放在自己敢说,而不是反馈是否准确、有用。
D7.5 · Failure 与 learning speed
选择这样的失败:
- 你有实质 agency;
- 成本真实但可以讨论;
- 错误具体;
- 能分开决策质量与结果;
- 后续行为真的改变。
不要制造干净的 redemption arc。有些后果不会被完全修复。不自我戏剧化地承担它,比把每次失败都 转成胜利更强。
Learning speed 要靠一个 loop 展示:缺口 → 计划 → 反馈 → 改变后的输出。「我学得快」不是证据。
D7.5.1 · 描述一次真实失败
性质。通用练习题。
填写模板。
「我没有做到 [责任]。直接原因是 [自己的决定或遗漏],不只是 [外部因素]。当时我 相信 [假设],其实应该更早检查 [证据]。后果是 [真实成本]。我先做 [修复与担责],再改变 [流程或行为]。后来这项改变发挥作用的真实例子是 [事件]。仍然 没有完全修复的是 [局限]。」
练习追问
- 「什么时候知道出问题?」
- 「第一个告诉了谁?」
- 「后来重复过吗?」
- 「你的 manager 会怎样定义这次失败?」
陷阱
- 选择团队失败,自己做过什么始终不可见。
- 失败太久远或太轻,无法检验当前学习。
- 以抽象道理结束。
D7.5.2 · 快速学习陌生领域
性质。通用练习题。
回答结构。
「缺口是 [具体能力],deadline 和 output 是 [交付物]。我画 dependency map,找到 [primary source 或专家],并在 [早期日期] 前做出小 artifact,让反馈在我觉得准备好之前 就进来。我记录 unknown,并用 [实现、预测或评审] 检查理解。输出从 [之前] 变成 [之后]。我仍不会声称精通的边界是 [边界]。」
追问。故意不学什么?如何判断来源可信?第一个错误模型是什么?
陷阱。只有阅读清单,没有能产生反馈的 artifact。
D7.6 · Leadership 与 influence
领导力答案要暴露 influence 机制:
- 技术可信度;
- 更清楚的决策框架;
- coalition 或跨职能翻译;
- 资源分配;
- 冲突处理;
- coaching 与 delegation;
- 为决定承担责任。
高级岗位的输出单位会从个人 artifact 转成让别人做出更好决定的系统。这不表示离开技术细节,而是 选择自己的深度在哪个位置能改变整个系统。
D7.6.1 · 带领项目改变方向
性质。通用练习题。
填写模板。
「原方向是 [方向]。证据 [证据] 让它不再可辩护,但换方向会付出 [成本],并影响 [人员]。我让证据公开可见,邀请最强反方观点,并提出 [新路线与过渡]。在自己的 [authority] 内,我决定 [决定];而 [另一项决定] 仍属于 [owner]。结果是 [结果];人员成本或未解决问题是 [真实成本]。」
追问。谁反对?怎样保护士气?是不是改得太晚?停止了什么?
陷阱。只讲沟通,省略困难的资源分配决定。
D7.6.2 · 帮助另一个人成功
性质。通用练习题。
回答结构。
「对方想达到 [目标],被我观察到的 [缺口] 卡住。我没有接管任务。我们约定 [ownership],我提供 [背景、反馈或机会];看到 [独立性证据] 后逐步撤掉支持。对方的 结果是 [结果]。我发现最初做法 [错误],因此改变了 [coaching 行为]。」
陷阱。把另一个人的故事全部讲成自己的 mentorship。
D7.7 · 不确定性下的伦理与安全
伦理题不能靠一句「安全第一」解决。要展示如何:
- 识别所有受影响方,包括不在房间里的人;
- 分开法律、policy、技术与道德问题;
- 估严重性、概率、可逆性和影响分布;
- 保留证据并寻求适当 review;
- 选择与不确定性相称的 containment;
- 定义什么会改变观点;
- 为决定承担责任。
不要假装 trade-off 消失。有时推迟有益系统也造成伤害;有时低概率严重事件主导 expected value; 有时你没有 authority,必须升级。
D7.7.1 · 发布前回应安全担忧
性质。一手材料报告过偶尔出现 safety 或 societal-impact 问题。
填写模板。
「我观察到 [具体担忧],可能影响 [受影响方]。不确定部分是 [未知],但 [某部分] 严重且足够可逆,值得先做 [containment]。我记录证据,通知 [适当 owner 或 review body],并提出 [测试与决策规则]。只有 [条件] 满足时才支持 launch;否则选择 [替代方案]。如果决定与我不同,我会使用 [与角色和法律一致的真实升级 路径]。」
练习追问
- 「证据很弱。」
- 「延期有巨大 opportunity cost。」
- 「Manager 要求 launch。」
- 「只影响一个边缘小群体。」
陷阱
- 戏剧化答案,却没有相称动作。
- 把 policy compliance 当成完整伦理分析。
- 声称会采取自己实际上不会采取的升级动作。
D7.7.2 · 平衡开放与误用风险
性质。通用研究判断题。
回答结构。
「要把 artifact 拆开:高层发现、评测方法、代码、权重、数据和运行细节具有不同风险与科学价值。 分别估合理误用、边际新增能力、可复现收益、现有可获得性,以及 staged 或 controlled release 是否 有帮助。我的默认不是『开放』或『封闭』,而是在风险保持于可辩护边界内时,选择限制最少的发布,并 配 review 与更新计划。」
追问。谁做决定?怎样避免 security through obscurity?竞争者反正会发布怎么办?
陷阱。给普遍口号,不分析具体 artifact 与 threat model。
D7.8 · 展示跨职能协作
跨职能协作是在不同但合理的 objective function 之间翻译:research 要可识别证据,engineering 要 可靠与可维护,product 要用户价值与时机,legal/security 要风险有边界,operations 要流程能重复运行。
不要只说「我让所有人对齐」,却不说分歧、decision right,以及让协调成为可能的 artifact。
D7.8.1 · 对齐 research、engineering 与 product
性质。通用练习题。
填写模板。
「共同目标是 [目标],但 research 优化 [约束],engineering 优化 [约束], product 优化 [约束]。冲突表现为 [决定]。我建立 [共同指标、interface contract、实验 或 milestone],并澄清谁决定 [哪一层]。最后选择 [选择],明确接受 [成本]。长期 artifact 是 [artifact],未解决张力是 [张力]。」
练习追问
- 「谁不满意?」
- 「你让步了什么?」
- 「怎样防止 research prototype 变成 production debt?」
- 「生产证据怎样回到 research?」
陷阱。把其他职能只当成要绕过的约束,而不是必要信息来源。
Meta 官方招聘页说,候选人可能会见到 peer、跨职能 partner 和 leader,也应该准备相关经历与提问 [R6]。因此最安全的通用准备不是猜某个价值观关键词,而是为「你怎样和别人共同做决定」 准备真实证据。
D8 · 建 story bank,但不要说得像模板
STAR、CAR 和 CARL 是压缩工具,不是台词。使用任何能帮助你恢复这些内容的标签:
- 背景:只保留理解张力所需的信息;
- 责任:你对什么负责,有什么 authority;
- 决定与动作:替代方案、推理、具体行为与协作;
- 结果:outcome、证据、成本和未解决部分;
- 学习:后来真实发生的行为变化,而不是口号。
答案应该像一个人在回忆真实决定,不像运行模板。一个好测试是:你能否离开顺序回答插入问题,然后 不丢故事地返回。
Anthropic 的候选人指南说得非常明确:可以用 AI 润色真实经历,不能创造经历,而且要透明 [R1]。这条规则适用于所有公司。本节故意不写任何完成版个人故事。
D8.1 · 建立八故事矩阵
六到八个故事通常已经足够,只要它们包含不同决定,并能从多个角度观察。不要强迫一个英雄项目回答 所有题。
先只用事件名字填表,再补证据。空格是准备任务,不是允许编造。
| ID | 核心证据 | 可回答题型 | 必须由用户补充的事实 |
|---|---|---|---|
| S1 | 技术深度与关键取舍 | 最难项目、判断力、规模 | 精确决定、替代方案、个人角色、测量结果 |
| S2 | 失败与恢复 | 错误、失败实验、信念变化 | 自己的错误、后果、修复、后续行为变化 |
| S3 | Ambiguity 下的 ownership | 主动性、边界不清、紧急情况 | 缺失 owner、权限边界、为此停止什么 |
| S4 | 冲突与分歧 | 协作、dissent、influence | 对方合理担忧、真实互动、最终决定 |
| S5 | 领导与改变方向 | 愿景、优先级、delegation | 谁决定、资源怎样移动、人员成本 |
| S6 | Feedback 与成长 | 收到或给予反馈、coaching | 真实反馈、第一反应、可观察改变 |
| S7 | 伦理或安全判断 | 负责发布、升级 | 受影响方、证据、authority、真实升级路径 |
| S8 | 跨职能交付 | 从研究到生产、合作 | 目标冲突、interface、上线证据、局限 |
每个故事填写一页 evidence card:
事件与日期:
这个故事真正回答什么题:
我的责任与 authority:
团队和继承的工作:
张力或决定:
考虑过的替代方案:
我依次说了什么、做了什么:
已核实结果与不确定性:
成本与未解决部分:
我会改变什么:
后来行为改变的证据:
保密边界:
帮助恢复记忆的 artifact:
D8.1.1 · 判断两道题能否共用一个故事
性质。通用练习题。
回答结构。
「只有证据焦点不同,才可以共用事件。Ownership 题要突出我怎样发现并界定无人负责的问题;conflict 题要突出对方的模型、我们的互动和决策规则。如果只在结尾换一句道理,就不是两套答案,而是在拉伸 同一段背稿。」
练法。对同一事件分别做两个六十秒答案。标出完全相同的句子;超过一半相同,说明角度没有真正 变化。
陷阱。在同一个 loop 的多场面试中反复用同一故事,却没意识到 interviewer 可能交换记录。
D8.1.2 · 选择一个 failure story
性质。通用练习题。
回答结构。
「我要选自己有 agency、后果真实,而且能指出后续行为改变的故事。『失败』如果只是目标定得高、 别人犯错,或受环境影响而延迟成功,都不使用。无法具体解释的保密事故也不使用。」
练法。对每个候选故事用一句话回答:「我做错了什么?」如果句子没有第一人称动作,就换故事。
D8.1.3 · 建立 career spine 背后的 private evidence card
性质。私下填写表。个人使用前必须完成;不要发布 private answer。
Background 主线:
Pivot 及造成 pivot 的证据:
Why now:
Why leaving / 放弃了什么:
为什么下一步有逻辑:
证明主线的两项选择:
核实每项主张的事实、日期和 artifact:
前合作者可能会怎样用不同措辞描述:
保密边界:
练法。先讲 D7.2.3 的九十秒 spine,再让搭档随机选择一个转折,追问真实证据。如果转折只有润色后 的叙事,就修改或删除。完成后的卡片保持私密。
陷阱。把职业故事说成命中注定。真实 pivot 包含 uncertainty、替代路线,以及停止追求的东西。
D8.2 · 润色语言之前先建追问树
面试官要检验准备表面下面是否还有细节。每个故事都在笔记里回答这些分支,但不把它们写成演讲:
- 时间线:紧挨事件前后发生了什么?
- 角色:什么是自己的、继承的、委托的、共享的?
- 替代方案:还考虑过什么,由谁提出?
- 证据:当时知道什么,后来才学到什么?
- 互动:原话大意是什么,别人怎样回应?
- 反事实:结果或 authority 反转时怎么办?
- 成本:时间、信任、质量、机会、算力或用户影响?
- 边界:什么仍然不确定或不能公开?
- 迁移:后来在哪里使用这条教训?
如果某个分支因为记忆模糊而没有细节,就从文档恢复,或换故事。不要用听起来合理的连接组织填满。
D8.2.1 · 扛住连续三层「为什么」
性质。通用练习题。
追问链。「为什么选 A?」→「为什么这个约束最重要?」→「为什么相信那份证据?」
回答结构。
「第一层说取舍,第二层连到 stakeholder 或系统后果,第三层暴露证据质量和不确定性。如果某一层 真实答案是 authority、习惯或 deadline,就如实说,不要事后补一套技术理论。」
练法。搭档从故事里任选一个动作动词,连续问三次为什么。第三层到达证据、价值或约束,而不是 再次改写第一层,才算通过。
陷阱。把每个「为什么」当成攻击。它往往是在邀请你展示基岩。
D8.2.2 · 回答反事实追问
性质。通用练习题。
题目。「如果实验支持另一个团队,你会怎么办?」
回答结构。
「使用自己声称当时已有的决策规则。如果结果 B 超过 [阈值],我会支持 [另一条路线], 因为我承诺的是 [目标],不是自己的 proposal。Transition cost 会是 [成本],所以当时 准备了 [可逆动作]。如果实际上没有规则,就应该承认当时过程没有现在叙述得这么严谨。」
陷阱。声称另一个结果不可能发生。那会让实验听起来只是一场仪式。
D8.3 · 只把公开 artifact 当成候选故事提示
本仓库公开主页和 bibliography 展示了几项可能的 artifact [R25] [R26]。它们只能建立标题、链接、作者身份和少量已公开的结果 陈述,不能建立用户个人做过什么决定、精确 ownership、失败路线、团队动态或教训。论文作者身份 不等于行为故事。
下面只是待调查库存:
| 公开网站里的候选 artifact | 可以核实的潜在角度 | 必须由用户补充的缺失事实 |
|---|---|---|
| CaOPD / calibration-aware on-policy distillation | research taste、机制、失败替代方案 | 精确个人角色、决定性实验、负结果、算力与成本 |
| Agentic Confidence Calibration | 新问题定义、评测设计 | ownership 划分、关键分歧、指标选择、局限 |
| Agentic Uncertainty Quantification | 长时程可靠性、系统设计 | 直接贡献、失败路线、协作、部署边界 |
| SAC3 hallucination detection | 从研究到生产、可测影响 | 精确部署角色、采用证据、incident 与迭代细节 |
| PhaseEvo / SEE prompt optimization | 优化与产品化 | 本人负责哪个 artifact、取舍、用户反馈、失败 |
| Enterprise deep research | multi-agent 与系统设计、跨职能工作 | 角色、架构决定、生产约束、未解决风险 |
| 超算上的大规模分布式学习 | 规模、事故、基础设施判断 | 具体项目、硬件与 run 事实、瓶颈、个人动作 |
| DOE Generative-AI-for-Science 工作 | 领导力、项目组合优先级 | 具体项目、decision right、团队与资源事实、结果 |
使用前必须核实:
- 公开描述仍然准确;
- 精确 authorship 与 leadership role;
- 哪些数字允许披露;
- 事件是否包含题目要求的真实张力;
- 合作者是否会认可归属公平。
D8.3.1 · 把论文变成 deep-dive 候选
性质。个人填写表。
回答结构。
「不要从论文摘要开始,而要找一个自己直接负责的决定:[决定]。再恢复替代方案、当时可用证据、 失败或意外结果,以及合作者分别负责什么。如果无法从记忆和 artifact 填满这些字段,论文继续留在 库存里,不能成为面试故事。」
个人使用前必须完成;不要发布 private answer。在私下补充决策记录、实验日志、精确 ownership、 披露边界、成本与规模,以及一项论文中没有被润色掉的局限。
D8.3.2 · 把公开 impact 数字变成可辩护证据
性质。个人填写表。
回答结构。
「先核实数字在数什么、时间范围与来源,再窄化自己的因果贡献。采用量不自动等于质量,团队 impact 也不自动等于个人 impact。把数字与机制或独立 outcome 配对,并披露不确定性。如果数字是内部的、 过期的或没有获准公开,就改用定性或相对 baseline 的描述。」
陷阱。重复一个公开数字,却解释不了 denominator。
D8.4 · 让表达自然且可以被打断
不要记句子,只记五个地标:
headline · 张力 · 两项动作 · 结果 · 反思
带打断练习:
- 从决定开始,不从背景开始;
- 直接回答追问;
- 说「我回到结果」,然后真的回去;
- 任何分支都能压成一句;
- 问题回答完就停止。
只有在合适且公开时使用姓名,否则使用角色。用外部工具或搭档练习前,移除保密客户、安全、人员与 未发布研究细节。
D8.4.1 · 被打断后恢复
性质。通用练习题。
回答结构。
「先直接回答插入问题:[回答]。它与故事的关系是 [连接]。回到原问题,这项证据让我的 动作从 [之前] 变成 [之后]。」
练法。让搭档在三十秒后随机打断。第一句回答新问题,并在另外三十秒内回到主线,才算通过。
陷阱。追问明明是 interviewer 选择的分支,却说「后面会讲到」。应该跟随对方信号。
D8.4.2 · 审计故事的编造风险
性质。公开使用前必做。
检查表
- 每个数字都有来源和 denominator。
- 每个「我」动作确实由自己负责。
- 每个「我们」结果公平归功团队。
- 对话要么足够准确,要么明确是意译。
- 因果措辞不超过证据。
- 保密细节被删除,而不是换成编造的具体值。
- 反思有后续行为变化支持。
- 故事经得住「还有谁在场」和「他们会怎么说」。
陷阱。以为每个单句都听起来合理,故事就安全。真正测试是所有追问之间能否一致。
D9 · 反问、沟通 rubric、模拟面试与复盘
最后十分钟和此前一周的练习服务同一个目的:降低对真实工作的不确定性。好反问用于检验对团队的假设; 好 mock 用于检验对自己 failure mode 的假设。
Silvia Sapora 写过,她会针对下一场面试用 LLM 做 mock,练习题与真实问题有出乎意料的重合;同时她也 强调准备高度针对具体岗位 [R10]。OpenAI 官方招聘活动同样建议提前练职业例子,并展示 解决问题的过程 [R5]。用 mock 工具制造压力和追问,不要让它创造个人内容。
D9.1 · 问真正可能改变决定的问题
从未知量生成问题:
| 未知 | 更好的问题 | 要听的证据 |
|---|---|---|
| 成功 | 「入职六个月和十二个月时,什么结果会让这次招聘显然成功?」 | 具体 outcome,不是性格词 |
| 工作构成 | 「上个月团队花时间做了哪些 JD 没写的工作?」 | 真实工作与广告工作之差 |
| 决策权 | 「讲一个近期 research/engineering 取舍,以及谁做了决定。」 | 实际 operating model |
| 评测 | 「研究结果达到什么证据后才会影响产品?」 | 证据与 handoff |
| 失败 | 「团队近期停止了哪个项目?什么证据让它停止?」 | 学习与 sunk-cost 行为 |
| 协作 | 「Research、engineering、product 和 safety 最常在哪些地方有分歧?」 | 真实 interface |
| 资源 | 「现在先卡住的是 data、compute、eval、deployment 还是 headcount?」 | 机会表面 |
| 管理 | 「优先级怎样改变?异议通过什么路径上行?」 | 心理安全与决策安全 |
| 岗位 fit | 「哪项优势在这里特别有价值?哪个缺口很难被支持?」 | 诚实匹配 |
不要问网站已经直接回答的问题,除非想检验公开说法在实践中怎样运行。可以向多位 interviewer 问同 一个核心未知;回答差异本身就是数据。
D9.1.1 · 向 researcher 了解团队质量
性质。通用练习题。
示例问题
- 「过去一年团队改变了哪项重要信念?什么证据改变了它?」
- 「哪项结果离线很有希望,却没有影响 deployment?」
- 「负结果怎样保存并复用?」
- 「目前仍然存在的技术分歧是什么?」
- 「一个项目在这里被采用容易或困难的决定因素是什么?」
追问动作。听到泛泛回答后,请对方给最近的具体例子。
陷阱。问「文化怎么样」,然后接受一组形容词。
D9.1.2 · 向 hiring manager 了解岗位
性质。通用练习题。
示例问题
- 「你希望我最先负责什么问题?为什么它现在还没有 owner?」
- 「十二个月后,强 hire 与合格 hire 的区别是什么?」
- 「我的背景里,你最想雇的是哪一部分?仍在评估的担忧是哪一项?」
- 「在正式管理职责之前,这个岗位拥有什么 decision authority?」
- 「从写 JD 到今天,什么已经改变?」
陷阱。把提问时间变成第二次推销。先问、认真听,再更新判断。
D9.2 · 用可观察行为给沟通打分
使用六维 rubric,每题结束后打 0 到 3:
| 维度 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| Frame | 没有决定 | 只有背景 | 有决定和假设 | 新证据出现时正确更新 frame |
| 结构 | 无法跟随 | 事实清单 | 地图与转场清楚 | 压缩或展开时不丢地图 |
| 深度 | 口号 | 只有一层技术 | 机制加证据 | 扛住三层 why/how |
| 判断 | 只说看情况 | 列维度不选择 | 有选择和取舍 | 有反转条件与敏感性 |
| 校准 | bluff 或拒绝 | 模糊 caveat | 区分事实与假设 | 明确更新置信度 |
| 协作 | monologue 或防御 | 偶尔确认 | 使用 interviewer 信号 | 共同解决并干净改向 |
再加两个二元检查:
- 是否回答字面问题?
- 回答完整后是否停止?
不要用平均分抹掉一个零。技术很深却始终没回答问题的答案,不是通过的讨论答案。
D9.2.1 · 诊断「清楚但浅」
性质。通用练习题。
回答结构。
「地图有效,但每个分支都停在标签。我会选一句主张,强迫回答机制、证据、替代解释和 failure mode。 下一项练习不是再做完整 mock,而是围绕这个分支连续追问五分钟,不允许添加新顶层话题。」
陷阱。增加类别来显得全面。深度是更长的链,不是更宽的清单。
D9.2.2 · 诊断「很深但跟不上」
性质。通用练习题。
回答结构。
「技术内容存在,但听者找不到决定。我要练 headline-first;预告不超过三个分支;每个分支结束后 checkpoint:『这排除了 data leakage;下一步检验 optimization。』具体练法是先把答案压到三十秒, 再展开。」
陷阱。把所有细节都删掉。修的是导航,不是把答案变浅。
D9.3 · 运行能复现真实轮次的 mock
三个有用形式:
三十分钟 technical discussion
- 2 分钟:出题与澄清;
- 15 分钟:深入一个设计或实验分支;
- 8 分钟:两次改变假想结果;
- 5 分钟:反馈并重复一次。
四十五分钟 project deep dive
- 5 分钟:项目版本;
- 25 分钟:interviewer 选择决定、ownership、失败与证据;
- 10 分钟:反事实和 future work;
- 5 分钟:事实缺口与 rubric。
四十五分钟 behavioral round
- 一次一道,共四题;
- 每题至少两个追问;
- interviewer 拒绝一个不匹配故事,要求换例子;
- 最后才给反馈,保留真实 retrieval 压力。
轮换 interviewer persona:技术同级、怀疑型 researcher、hiring manager、跨职能 partner。Rubric 固定,追问风格变化。
D9.3.1 · 安全地提示 AI mock interviewer
性质。练习模板。
模板
你是一名怀疑但愿意协作的 [岗位] 面试官。
只使用我提供的 JD、round description 和 source material。
每次只问一道题。不要替我写答案,也不要编造我的经历。
听完回答后,选择其中一个主张,连续追问三层。
至少一次改变约束,或提供一个假想结果。
在我说面试结束前不要给反馈。
结束后只按可观察行为打分:framing、结构、技术深度、
判断、校准、协作、是否回答字面问题,以及简洁度。
每项扣分都引用造成判断的原句。
安全规则。删除保密数据和未发布项目细节。Mock 不需要这些内容来测试结构。
陷阱。自己还没尝试 retrieval,就让模型先生成理想答案。Recognition 会取代练习。
D9.3.2 · 用好真人 mock
性质。通用练习题。
回答结构。
「给 interviewer 一页 contract:目标岗位、轮次类型、时长、rubric,以及允许打断。不要给对方 自己准备的答案。请记录他第一次跟丢的位置,以及最强的无证据主张。结束后先追问证据——哪句话或 哪个行为造成这个判断——再讨论建议。」
陷阱。只找已经熟悉自己项目背景的近距离合作者。至少加入一位必须靠你的解释才能理解的人。
D9.4 · 把复盘压成小型错误分类
十分钟内先记录事实,避免记忆重写:
- 真实题目与追问;
- 选择了哪个答案,从哪里分支;
- interviewer 改向或困惑的位置;
- 没能检索出的事实;
- 缺证据的主张;
- 过度自信或无必要道歉;
- 自己问了什么,收到了什么证据;
- 精力与时机,但不把感受直接变成绩效判断。
给第一个失败分类:
- 检索:知道却取不出来;
- 知识:真的不知道;
- Framing:解决了错误决定;
- 深度:追问后只剩标签;
- 证据:主张超过支持;
- 沟通:听者丢了地图;
- 故事匹配:例子没回答题目;
- 校准:bluff、拒绝推理,或不更新;
- 后勤:环境、音频、时长或疲劳。
每一类修法不同。读更多无法修 story fit;做更多 mock 也无法补一个缺失技术概念。
D9.4.1 · 把失败答案变成一个 drill
性质。通用练习题。
回答结构。
「把第一个可观察失败写成行为:『我用了两分钟才说目标』,而不是『我紧张』。再选一个有约束的 修复:做五次四十五秒开场,每次必须含决定与 baseline。练完只重复一次原题。如果行为没有改变, 就重新诊断。」
陷阱。每次面试后都建十项改进计划。日志变成另一个逃避练习的地方。
D9.4.2 · 避免过拟合一场面试
性质。通用练习题。
回答结构。
「把一次性题目与重复 failure 分开。只有它出现在即将到来的明确 loop、在可靠来源反复出现,或 暴露基础缺口时,才把新主题加入核心计划;否则放进 wildcard log。但像『没有澄清决定』这样的 process failure,无论原题会不会再来都要修。」
陷阱。围绕情绪上最鲜明的一道题,重建整个学习计划。
D9.5 · 做最终 readiness review
轮次前四十八小时确认:
- 从 recruiter 处确认精确形式、tool policy、时长和 interviewer 角色;
- 两个候选项目各有两分钟、五分钟与十五分钟版本;
- 八张故事卡没有编造的空格;
- 一篇当前论文或系统能够概括、批评并设计扩展;
- 一次 system-design 和一次 experiment-design mock;
- incident 框架可以冷启动说出;
- 根据 interviewer 类型准备反问;
- 完成保密信息删除;
- 睡眠和环境安排好,并对最后时刻扩张设硬停止。
目标不是让自己感觉准备好,而是移除可以预防的 failure mode。
D9.5.1 · 决定最后不学什么
性质。通用练习题。
回答结构。
「停止增加宽泛新主题,只复习 recruiter 明确的 loop、个人故事中的事实缺口,以及 mock 错误短表。 只有新论文或新题能修一个已知且高度可迁移的缺口,才允许进入计划。前一晚,retrieval quality 和 睡眠的价值高过多读一章。」
陷阱。把缓解焦虑误当成提高面试 expected value。
D10 · 只在证据边界内做 lab-specific 准备
公司准备应该是一个 overlay,不是第二种人格。从同一套项目、科学推理与 story bank 出发,再更新:
- 精确岗位与团队;
- recruiter 给出的 round list;
- 官方 tool 与 AI policy;
- 与团队相关的近期官方工作;
- 产品 action surface 与风险特征;
- interviewer 角色;
- 检验双向 fit 的问题。
使用来源层级:
- 针对本人已安排 loop 的 recruiter 指令;
- 官方候选人和 careers 指南;
- 精确 JD 与团队论文或产品;
- 具名一手经历,但只能标成经历,不能标成 policy;
- 聚合报告只当弱 prior;
- 忽略匿名精确数字、内容农场价值观和题目清单。
Policy 会改变。下面事实检查于 2026-08-13;真实面试前必须重新核对。
D10.1 · 先建立 recruiter packet
用一封简洁信息一次问清:
- 每轮名称、时长和 interviewer function 是什么?
- 每轮主要评估什么?
- 允许哪些工具、语言、editor、whiteboard 或 AI assistant?
- 项目讨论是 presentation、对话式 deep dive,还是两者都有?
- 论文是否提前提供?
- 什么可以预先准备或带入?
- Loop 是否针对具体岗位或团队调整?
- 是否现在就应该提出 accommodation 或日程约束?
给回答记录日期。如果公开指南和 recruiter 冲突,就澄清,不要选择自己更喜欢的版本。
D10.1.1 · 不越界地询问精确 loop
性质。通用后勤模板。
模板
「为了针对你们真正想评估的工作准备,可以分享 round 名称、大致时长和每轮主要 signal 吗?我也 想确认 tool/AI policy,项目或论文讨论是否需要预先材料,以及是否有 role-specific guidance。我 理解具体细节可能因 interviewer 而变化。」
陷阱。索要泄漏题。目标是形式与评估 signal。
D10.1.2 · 调和互相冲突的报告
性质。通用练习题。
回答结构。
「对已安排 round,以 recruiter 为准;官方公开指南提供默认值;具名经历只提示可能追问。我不会把 一个人经历过的 OOP、system design 或 values 问题变成公司 policy。应该为 wildcard 留预算,而 不是拼出一套实际上没人经历过的 universal loop。」
陷阱。把互相矛盾报告平均成一套细节丰富、但没有候选人真正经历过的流程。
D10.2 · OpenAI:先按官方流程,再按具体团队
OpenAI 发布了 interview guide。它要求候选人准备讨论工作与学术经历、motivation 和 goal;了解近期 工作,尤其与面试团队相关的部分;并预期由团队决定的 skills-based assessment,例如 pair coding、 take-home 与 technical test。最终面试通常是四到六小时、与四到六个人在一到两天内完成。对工程岗, 它列出设计质量、代码质量、性能和 test coverage;跨轮次则强调沟通、协作,以及展示怎样解决问题 [R4]。
OpenAI 官方招聘活动还给出实用沟通建议:表达清楚且有意图;展示过程;主动确认假设;与 interviewer 一起解决而不是进入 monologue;提前准备职业例子;用有思考的问题展示好奇心 [R5]。
这些内容支持一种准备方法,不支持一份 universal OpenAI question list。
D10.2.1 · 建立 OpenAI discussion overlay
性质。基于官方指南。
填写表
- 岗位与团队:[已经确认的精确 JD 和当前团队]
- 近期官方工作:[与岗位直接相关的两项 artifact]
- 个人连接:[每项 artifact 对应一个真实项目或决定]
- 项目把手:[ownership、困难选择、失败、证据、规模]
- 沟通 drill:[画地图、问假设、做选择、设计测试、根据结果更新]
- 反问:[团队成功、decision right、证据怎样进入 deployment]
- 需要 recruiter 确认:[形式、工具、presentation、AI policy]
陷阱。把「OpenAI」作为一个整体主题学习,却忽略 JD 和 recruiter call 里真正命名的团队。
D10.2.2 · 不编造 fit 地回答「Why OpenAI」
性质。个人填写表;官方指南确认会讨论 motivation。
回答结构。
「从 [自己反复选择的问题] 开始,用 [自己工作中的真实证据] 支持,再连到 [面试团队近期的官方工作],并说出 [可以贡献的已核实能力]。结尾留下 [想对岗位验证的不确定性]。没有确认过的 scale、人员或研究自由,不能写进答案。」
个人使用前必须完成;不要发布 private answer。在私下补充真实目标岗位与团队、当前官方 artifact、个人证据,以及离开或改变环境的诚实原因。
D10.3 · Anthropic:policy 很明确,按字面遵守
Anthropic 的 candidate AI guidance 规定:
- application 第一稿由本人写,之后可以用 AI 润色;
- take-home 默认不用 AI,除非明确允许;
- 可以用 AI 做公司研究、口头练习和准备反问;
- live interview 默认不用 AI,除非明确允许;
- 不能用 AI 创造经历,必须保持真实思考和透明 [R1]。
其 careers 页面说,技术面试使用 live coding tool;候选人可查基础信息;面试会问经历、motivation, 并留时间反问。页面还说公司看重能做什么,而不只从哪里学到;researcher 会做 engineering,engineer 也会做 research [R2]。
Anthropic 当前公开原则包括:为全球福祉行动、同时看见收益与风险、做有效的简单方案、helpful / honest / harmless,以及 mission first [R3]。要读当前官方原文与实际工作,不要把每个 故事硬塞进 slogan;展示真实决定,其中包括张力与反证。
D10.3.1 · 在 Anthropic 准备中正确使用 AI
性质。官方 policy。
回答结构。
「可以用 AI 解析 JD、制造追问压力、找缺口和批评自己的草稿;底层经历和第一稿必须自己写。删除 保密内容,验证每项事实,并在没有辅助时练习。任何 assessment 或 live round 都按该轮明确指令; 没有说明时,live interview 不用 AI,take-home 也不用。」
陷阱。以为做 AI 的公司一定希望评测时也使用 AI。
D10.3.2 · 准备 Anthropic 的 research–engineering 边界
性质。基于官方 careers 页面。
填写表
「每个项目都同时准备 research claim 与 operational artifact:hypothesis、evidence、实现、 failure、scale 和维护。选择一个简单方法胜过复杂方法的真实例子,再选择一个 safety 或 reliability 改变设计的真实例子。如果没有,就留空,不要从公司 principle 倒推出故事。」
练习追问。简单方法为什么赢、engineering 暴露了什么 research 问题、接受了什么 safety cost、 不同意某项公开方法的哪里。
陷阱。表演公开 principle,而不是用它推理。
D10.4 · Meta:role-specific 材料与 AI policy 才是准绳
Meta 官方 hiring 页面说,面试形式和准备材料按岗位变化;recruiter 与 Career Profile 会提供适用 schedule 和 guide。它还说,部分技术岗位在 CoderPad 内使用授权 AI assistant,外部 AI tool 不允许;适用时,候选人应该在提供的环境练习 [R6]。
Meta 有官方 ML initial-interview 页面,描述一次与 engineer 的四十五分钟交流 [R7];ML full-loop 页面描述最多六次、每次四十五分钟的交流 [R8]。这些页面证明官方准备材料存在,不证明所有 research loop 都相同。个人 Career Profile 与 recruiter 仍是权威。
D10.4.1 · 建立 Meta discussion overlay
性质。基于官方指南。
填写表
- 下载并阅读 Career Profile 中的精确 guide;
- 列出每场已安排 conversation 及其 signal;
- 使用公司提供的 practice environment;
- 分别确认每轮是否授权 AI;
- policy 未明确前,同时准备有 AI 与无 AI 的 coding/system discussion;
- 把项目故事映射到技术深度、impact、协作和 role fit;
- 分别为 peer、cross-functional partner 和 leader 准备反问。
陷阱。把公开页面里的「部分岗位」AI policy 泛化到所有 research interview。
D10.4.2 · 为授权 AI-native round 调整
性质。Meta 官方指南说只适用于部分岗位。
回答结构。
「练精确工具和授权模型,同时保持推理可见。Prompt 前先定义问题与测试;检查生成代码;运行有针对 性的 check;解释接受或拒绝什么。把 assistant 当成不可靠的 collaborator,最终 output 由自己负责。 不使用外部工具。如果该轮没有明确授权 AI,就完全不用 AI 练习。」
追问。模型给出可信但错误代码、tool latency、interviewer 询问 prompt 理由、design discussion 使用 Mermaid。
陷阱。优化 prompt 小技巧,却放弃问题分解、验证与 ownership。
D10.5 · 公司差异必须停在证据边界
能够支持的比较很窄:
| 实验室 | 官方支持的准备事实 | 故意不推断 |
|---|---|---|
| OpenAI | motivation 与 goal、面试团队近期工作、形式可变的 assessment、沟通与协作 | universal OOP、项目或 values 题集 |
| Anthropic | 明确 AI policy、经历与 motivation、live coding、公开原则、research–engineering 重叠 | 每位 interviewer 都按 slogan 打分,或存在一套标准 values round |
| Meta | role-specific guide、最多六场 ML full-loop 交流、部分技术岗位授权 AI | 所有 ML/RS loop 一样或都允许 AI |
具名一手材料可以增加假设,但必须标注。「一位候选人报告遇到 X」诚实;「Lab Y 总会问 X」不诚实。
D10.5.1 · 制作一页 lab brief
性质。必填个人 worksheet。
岗位、级别、团队:
Recruiter 确认的 round 与日期:
官方 tool / AI policy,检查日期:
两项近期团队 artifact:
一个真实认同点:
一个有证据的真实问题或分歧:
最匹配岗位的两个项目:
最可能使用的四个故事:
需要修复的技术缺口:
按 interviewer 类型分类的反问:
仍未确认的事实:
个人使用前必须完成;不要发布 private answer。每一个字段都在私下完成。Generic company brief 无法回答 team-specific loop。
D10.5.2 · Recruiter 改变 loop 时更新 brief
性质。通用练习题。
回答结构。
「把新 schedule 当成证据,不当成麻烦。重新映射准备到真实 round,只保留高迁移工作,把没有支持 的 company lore 移出核心计划。如果出现 wildcard,就使用可复用 discussion frame,而不是现场编 company-specific script。」
陷阱。因为旧计划已经投入很多时间,就继续执行它。
D10.6 · Google DeepMind:以 role-specific packet 为准,不猜固定题库
Google DeepMind 官方 careers 页面给出 typical process,同时明确说精确步骤会随岗位变化,获邀候选人 会收到详细 role-specific preparation。当前 overview 是:
- 三十分钟 recruiter call,讨论 background、experience、motivation、候选人问题和下一阶段;
- 可能增加 hiring-manager interview,讨论相关 capability 并了解面试团队近期工作;
- 两到三场 skills interview,按岗位成功所需 competency 评估,并与潜在 peer 交流;
- final interview 会见 Team Lead 与 leadership,包括潜在 manager,从团队目标、future plan、 culture、mission 与 values 的视角继续评估 core skill;
- decision 与 offer。
这些内容支持流程准备,不支持固定 Google DeepMind question set [R33]。对个人已安排 loop,recruiter 与 role-specific packet 才是权威。
D10.6.1 · 建立 Google DeepMind discussion overlay
性质。基于官方 careers guidance。
填写表
- Recruiter call:[九十秒 career spine、为什么现在选该岗位、反问]
- 可能的 hiring manager:[两个匹配项目、capability 证据、团队未知量]
- Skills interview:[packet 命名的 competency、每种形式一次 cold mock]
- Final interview:[团队目标、future research direction、协作与判断故事]
- 面试团队近期工作:[两项当前官方 artifact]
- 权威信息:[recruiter 确认的 round、tool、presentation、AI policy 与检查日期]
- 故意保留的未知:[官方页面没有说明的任何内容]
练习追问。省略 hiring-manager stage;skills packet 与公开复盘不同;final 前团队改变;leadership interviewer 询问准备项目之外的 research direction。
陷阱。把「typical overview」当成保证顺序,或根据 stage name 推断精确 technical、behavioral、 coding 或 values 题。
参考文献
实验室 policy 和面试形式会变化。以下官方页面检查于 2026-08-13;真实面试前,应重新核对 recruiter 指令与当前页面。一手复盘描述的是个人经历,不是普遍公司 policy。
[R1] Anthropic. Guidance on Candidates’ AI Usage. 2025 年 7 月 10 日更新。官方候选人指南
[R2] Anthropic. Careers: How We Hire. 官方 careers 与面试指南
[R3] Anthropic. Company. 官方使命与公开原则
[R4] OpenAI. OpenAI Interview Guide. 官方面试指南
[R5] OpenAI Forum. Careers at the Frontier: Hiring the Future at OpenAI. 官方招聘活动回放。活动页面与文字记录
[R6] Meta Careers. Meta Hiring Process. 官方招聘与 AI 面试指南
[R7] Meta Careers. Preparing for Your Initial Machine Learning Interview. 官方指南入口
[R8] Meta Careers. Preparing for Your Full Loop Machine Learning Interview. 官方指南入口
[R9] Liu, Alisa. Notes on the Industry Job Search. 2026 年 6 月。具名一手复盘
[R10] Sapora, Silvia. ML Job Interviews: The Ultimate Guide. 2026 年 6 月。具名一手复盘
[R11] Zheng-Xin, Yong. Surprising Lessons from My Research Scientist Job Search. 2026 年 6 月 24 日。具名一手复盘
[R12] Lambert, Nathan. Job Hunt as a PhD in AI / ML / RL: How It Actually Happens. 2022 年 7 月。具名候选人一手建议
[R13] Meng, Yuan. MLE Interview 2.0: Research Engineering and Scary Rounds. 2026。具名一手复盘
[R14] Jaiswal, Mimansa. LLM (ML) Job Interviews — Resources. 2024–2025。具名准备记录
[R15] Grigorev, Alexey. AI Engineering Field Guide. 持续更新的 repository;访问于 2026-08-13。可追溯的聚合 field guide
[R16] Huyen, Chip. Introduction to Machine Learning Interviews. 2021。开放面试书
[R17] Bekman, Stas. Machine Learning Engineering Open Book. 开放工程参考
[R18] Google. Rules of Machine Learning: Best Practices for ML Engineering. 官方工程指南
[R19] Breck, Eric, Shanqing Cai, Eric Nielsen, Michael Salib, and D. Sculley. The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction. Proceedings of IEEE Big Data, 2017。DOI: 10.1109/BigData.2017.8258038。Google Research 官方论文页面
[R20] Keshav, S. How to Read a Paper. ACM SIGCOMM Computer Communication Review, 2007。作者手稿
[R21] NeurIPS. Paper Checklist Guidelines. 官方作者检查表
[R22] Kohavi, Ron, Diane Tang, and Ya Xu. Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing. Cambridge University Press, 2020。作者配套网站
[R23] NIST/SEMATECH. Engineering Statistics Handbook. 官方稳定项目页
[R24] Sculley, D., et al. Hidden Technical Debt in Machine Learning Systems. NeurIPS, 2015。论文页面
[R25] Zhang, Jiaxin. Personal Research Homepage. 公开简介与精选工作
[R26] Zhang, Jiaxin. Publications. 公开论文目录
[R27] Anthropic. Scaling Managed Agents: Decoupling the Brain from the Hands. 2026 年 4 月 8 日。官方工程文章
[R28] Anthropic. Effective Harnesses for Long-Running Agents. 2025 年 11 月 26 日。官方工程文章
[R29] Model Context Protocol. Specification. 2026-07-28 版本。官方 specification
[R30] A2A Protocol Project. Agent2Agent Protocol Specification. 1.0.0 版本。官方 specification
[R31] Booth, Harold, William Fisher, Ryan Galluzzo, and Joshua Roberts. Accelerating the Adoption of Software and Artificial Intelligence Agent Identity and Authorization. NIST NCCoE concept paper,2026 年 2 月 5 日。NIST 官方页面
[R32] OpenAI. Computer Use. 官方开发者指南
[R33] Google DeepMind. Careers: Our Interview Process. 访问于 2026-08-13。官方 careers 页面