主题
第 22 周 · Day 6:模拟面试(项目深挖)——让每个技术决策经得起三层追问
对应手册任务:学习「模拟面试:项目深挖」,动手「找朋友或用 AI 模拟面试官,追问『为什么用 LangGraph』『死循环怎么防』」,当日产出「模拟面试记录」。本篇只解决一个问题:项目是你亲手建的,决策是你拍的,可一旦被连环追问三层,「为什么用 LangGraph」这种你以为最熟的问题也会答得发虚,今天用一场高压模拟,把这些发虚的地方提前翻出来晒太阳。
今日目标
- 说得清模拟面试练的是什么:不是补知识,是练把网状的知识压成线性的话
- 抄走一段直接能用的面试官 system prompt,知道每条规则为什么这么写
- 过完 20 问追问链,完成一场 40 分钟录音模拟,按 checklist 回听复盘,产出模拟面试记录
概念讲解:为什么简历写得出来,面试讲不下去
简历上的项目描述是一堆结论:「基于 LangGraph 构建 Agent」「使用 pgvector 实现 RAG」。每个字你都写得出,因为活都干过。问题在于面试不考结论,考结论底下的决策链。
看一个典型现场。面试官第一问:为什么用 LangGraph?你答了。第二问:那为什么不用 CrewAI?你也答了。第三问:LangGraph 那点状态管理,我自己写个 while 循环加个字典也能做,凭什么算技术选型?第三问之后,多数人开始含糊。每一层你其实都「知道」,但从没在被打断、被质疑的压力下,把三层串成一段有先后的话。
这里有个关键区分:答不上来分两种。一种是不知道,属于知识缺口;另一种是知道但没串过,属于表达缺口。知识在脑子里是网状的,讲出来必须是线性的,面试还要求你第一句就给结论。模拟面试只能治第二种,但它能把第一种精确地找出来。
还有个残酷事实:任何问题第一次讲,一定是最差的版本。与其把最差版本留给真面试,不如今天先讲掉。Day 1 说过,系统设计面试考「从需求推方案」;项目深挖正好反着来,从你已经做出来的方案倒推回每个决策:为什么成立,代价是什么,边界在哪。方向相反,考的东西一样:取舍意识,以及你是不是真做过。
核心知识
1. AI 模拟面试官:一段直接能用的 system prompt
朋友当面试官最好,真人的语气、节奏、不耐烦都是真的。但人不好约,AI 面试官的优势是随叫随到、绝不心软,前提是 prompt 写得够狠。下面这段直接复制进任意一个够强的对话模型:
text
# 角色
你是一位资深 AI 平台面试官,在某大厂负责 Agent 平台的架构与面试评估,面过上百个候选人,风格严厉但公正。你见惯了简历上光鲜的项目描述,你的本职就是从中找出候选人没想清楚的地方。
# 面试规则
1. 我会在下一条消息贴上简历中的项目描述,面试从你读完它开始。
2. 一次只问一个问题。我回答后,你针对我的回答追问下一层,而不是换话题。
3. 追问原则:我的回答里出现「性能更好」「更合适」「业界主流」这类没有解释机制的模糊表述时,你必须抓住它追问,直到我说清具体机制,或者承认没想过。
4. 每个话题追问 2 到 3 层后换下一个,全场覆盖 4 到 5 个话题。
5. 我答不上来时,不要给答案,不要安慰,记下「此处卡壳」,继续下一问。
6. 全部结束后输出面试报告:每个话题的回答质量打 1 到 5 分,附卡壳问题清单和被你抓住的模糊表述清单。
# 输出风格
- 每个问题一到两句,像真面试官的口头追问,不输出任何讲解和总结。
- 不客套,不鼓励,不中途纠正我。
- 全程用中文。这段 prompt 有三处设计,改的时候别改丢。
一次一问,模拟真实节奏。真面试官不会一次甩三个问题,你要练的正是单点作答:听清这一问,只答这一问。模型默认爱列清单,这条规则把它摁住。
抓住模糊表述追问,整段 prompt 的灵魂。真面试官可怕之处不是问题难,是他听得出哪里虚。「性能更好」是虚的,「QPS 从 40 到 110,瓶颈在向量检索不在 LLM」是实的。这条规则让 AI 干真面试官干的活。
答不上来不给答案,底线。它一旦开始教你,你就从考生变成了看讲解的学生,整场模拟作废。
用法三步:新开对话贴 prompt;下一条消息把简历里的项目描述原样贴进去,注意是原样,别临时美化;手机开录音,开始被拷打,答满 40 分钟。朋友版的做法:把下面的 20 问清单发给他,让他挑着问、答完往下钻,你不知道他会问哪几个,这才像面试。
2. 20 问追问链:每问附好答案要点
先说清「好答案要点」是什么:不是台词,是自查清单。先凭本事裸答,答完对照看漏了哪条,而不是把要点背下来往上念。20 问分四组。
选型拷打(考「为什么是它」)
- 为什么用 LangGraph,不用裸 while 循环加 if/else?
- 先承认 while 能跑通主流程,装「离了框架不行」只会被追打死
- 增量说实:checkpoint 持久化、中断恢复、human-in-the-loop,裸写都得自己造
- 落到自家系统:审批挂起后恢复运行,这个功能直接吃了框架红利
- 为什么不用 CrewAI?
- 定位差异:它偏角色协作快速搭原型,控制粒度粗
- 我们要的是路由、重试、状态流转的精细控制权
- 迁移成本和团队熟悉度也是真实因素,可以认,但别只说这个
- Supervisor 为什么硬路由,不放开让 LLM 自己决定下一步?
- 硬路由等于白名单动作集,行为可枚举、可测试、可复现
- LLM 自由决策会飘:同一输入两次走向不同,排障是灾难
- 骨架硬、节点内自由:结构化输出定路由,内容生成交给模型
- RAG 为什么用 pgvector,不用 Milvus?
- 数据本来就在 Postgres,事务、备份、运维一套全复用
- 给量级判断:百万级以内向量够用,别为简历堆组件
- Milvus 的主场是亿级向量加高 QPS,说清「我不到这个量」
- 评估为什么先做离线,不直接上线看效果?
- 离线可批量回归、可重复、便宜,改一版跑一遍
- 没有离线基线,上线后连变好还是变坏都说不清
- 路径:离线建基线,上线小流量,再人工抽检校准
- 为什么用结构化输出锁 Schema,不在 prompt 里求模型输出 JSON?
- 约束解码在解码层面保证合法,prompt 求格式是概率性的
- 校验加重试是兜底,不该当主力
- 一份 Schema 两端用:模型生成和代码校验共用同一个定义
稳定性拷打(考「出事怎么办」)
- Agent 死循环怎么防?三层具体怎么落?
- 模型层:prompt 禁止重复调用,工具返回携带「已做过」状态
- 框架层:recursion_limit 设上限,说出你设的具体数字
- 业务层:步数和 token 双预算,超限熔断并降级回复
- recursion_limit 触发之后发生什么?异常还是正常结束?
- 抛 GraphRecursionError,不会优雅停下
- 外层要接住:兜底话术、记录现场、告警
- 只说「设个上限」不算答案,说清触发后的行为才算
- LLM 接口超时或挂掉,请求怎么处理?
- 超时加带退避的重试,重试有上限
- 想过幂等:重试会不会重复扣费、重复写库
- 有降级预案:换模型、排队、明确告知失败,别让用户干转圈
- 多租户隔离,哪个存储漏配会出事?
- 先数全存储面:Postgres、向量表、Redis 缓存、对象存储、日志
- 最容易漏的是缓存和日志,key 不带租户前缀就是串号事故
- 讲验证方式:专门写越权测试用例,而不是「应该没问题」
- 语义缓存误命中怎么办?
- 先定义清楚:不同问题命中同缓存,返回错误答案,这是正确性问题不是性能问题
- 缓解:相似度阈值调高、缓存 key 加关键实体、高敏场景直接关
- 说监控:用评测集持续测误命中率,不是设完就不管
效果与成本拷打(考「数字从哪来」)
- Token 成本怎么优化?先说从哪下手。
- 先计量后优化:按环节记账,看钱花在哪再动手
- 分级路由:简单任务小模型,难的才上大模型
- 控上下文长度:历史裁剪,最贵的是无脑全量历史
- RAG 召回效果差,怎么排查?
- 先有评测集,否则「感觉差」变不成可定位的问题
- 分层查:query 改写、切块、embedding 模型、top-k、重排序
- 一次只动一层,跑评测对比,别五个旋钮一起拧
- Human-in-the-loop 在你系统里怎么落的?
- 说清哪些动作必须过人工,为什么是这些
- 状态持久化让「等人工」成为可能:挂起数小时后能恢复
- 审批通过与拒绝后的流转,以及审批人不在时的超时策略
- 简历上的量化成果(准确率提升 X%)怎么测的?
- 口径说得清:样本量、时间范围、判定标准、谁标注
- 说不出口径的数字,等于告诉面试官是编的
- 主动讲局限:小样本、单一场景,如实说反而加分
开放拷打(考「你这个人」)
- 项目里最难的一个 bug?
- 完整叙事:现象、排查路径、根因、修复、怎么防再犯
- 排查有逻辑:假设、验证、排除,不是「后来突然好了」
- 别把团队功劳讲成自己单人破案
- 流量涨一百倍,哪里先崩?
- 先指有状态的部分:会话 checkpoint 存储和 LLM API 配额
- 水平扩容的前提是无状态化,说清哪些状态已外置
- 有顺序的降级:排队、限流、非核心功能先停
- 你在这个项目里的个人贡献边界在哪?
- 诚实划界:团队做的、自己做的、自己主导的,分开讲
- 面试官不怕你只做一部分,怕你吹,吹破一处处处存疑
- 自己那部分的深度,比整个项目的广度值钱
- 重做一遍,你会改什么?
- 至少两条具体的,「都挺满意」是最差答案
- 好例子:评估集应该第一周就建;死循环防护应该设计期就进
- 这题考复盘能力,真被坑过的人才答得出细节
- 用 MCP 比直接写工具有什么收益?成本在哪?
- 收益:统一协议下工具跨项目跨模型复用,生态里有现成 server
- 解耦:工具实现和 Agent 分开演进,各自发版
- 成本也老实认:多一层抽象和部署,调试链路变长;俩工具就硬上 MCP 属于过度设计
3. 复盘方法:录音回听 checklist
模拟完不回听,等于白模拟。回听只查四件事:
- 口头禅计数:「然后」「就是说」「其实」各出现几次,前三名写下来,下次开口前用停顿替代,停顿比口头禅体面得多
- 30 秒法则:逐个回答掐表,30 秒内先给结论了吗?超时还没重点的标红。你铺垫到第 40 秒时,真面试官已经在想下一个追问了
- 卡壳清单:停顿超五秒的、答非所问的、直接说不知道的,逐条记下
- 模糊表述:对照面试报告里被抓的表述,合并自己回听时心虚的地方,去重
回答的标准结构三段:一句话结论,两三条理由,一个具体例子,全程一到两分钟。用 20 问清单把它练成肌肉记忆。
迭代闭环:卡壳问题分两类处理。知识缺的,回对应周重学:LangGraph 的图与状态回第 12 周,Supervisor 和 human-in-the-loop 回第 13 周,pgvector 回第 14 周,RAG 评估回第 15 周,评估方法论回第 16 周,MCP 回第 18 周,多租户隔离回第 20 周,死循环防御和语义缓存回第 21 周。表达缺的,把要点压成三行提纲,隔天重答重录。收工标准只有一个:20 问里不再有卡壳标记。
动手任务:跑一场 40 分钟模拟面试
第 1 步:选面试官。 AI 版直接用上面的 prompt;朋友版把 20 问清单发给他,交代一句:挑着问,答完往下钻,别客气。
第 2 步:开场。 新开对话贴 prompt,第一条消息原样贴项目描述,开录音。
第 3 步:答满全程。 答不上来就说「这个我没想过」,别糊弄着混过去,混过去的坑会留到真面试再爆。
第 4 步:拿面试报告。 AI 版让模型按规则 6 输出;朋友版自己回听录音整理出同等内容。
第 5 步:复盘产出记录。 按 checklist 回听,写模拟面试记录,格式照抄:
text
# 模拟面试记录(第 N 场)
日期 / 面试官(AI 或朋友姓名)
覆盖话题与评分:话题 - X 分
卡壳清单:……
模糊表述清单:……
回炉计划:问题 -> 对应周的 Day -> 重学日期别只练一场
第一场一定会被打得很惨,这是设计使然。答不好的问题回炉对应周的 Day 复习,隔天再来第二场。通常两到三场才能清零。
常见踩坑
坑 1:AI 面试官太温和。 有的模型自带谄媚,问两句就开始夸你。在 prompt 末尾补一句:「你的职责是找出我答不上的地方,不是陪我练自信。」还温和就换模型。
坑 2:把要点当台词背。 要点是自查清单,不是背诵材料。背出来的答案圆润但没细节,真面试官一层追问就碎。正确顺序:裸答,对照,补漏,隔天重答。
坑 3:只挑自己强的练。 顺风局只提供情绪价值。第一场覆盖全部四组话题,弱项暴露之后再专项练卡壳的那些。
坑 4:记录写完就归档。 模拟面试记录的价值在下一场之前。真面试前一晚,只过错题清单;清单清零之前,这份记录是活的。
自测问题
先自己答,再展开对照。答不上来的,回对应小节看一遍。
- 「知道」和「面试时说得出」差在哪?模拟面试治哪一种?
参考答案
差在输出形态:知识在脑中是网状的,面试要求实时压成线性、结论先行的话。模拟面试治「知道但没串过」;对「真不知道」,它的作用是帮你精确定位,然后回对应周补课。
- 面试官 prompt 里「抓住模糊表述追问」这条为什么是灵魂?
参考答案
真面试官的核心能力就是听出哪里虚。「性能更好」这类表述没解释机制,是多数候选人的通病。这条规则让 AI 复制这个行为,把模拟从问答游戏变成压力测试。
- 「死循环怎么防」只答「设个步数上限」缺了什么?
参考答案
缺分层和落地细节。好答案分模型层、框架层、业务层三层,每层有具体手段,还说得出 recursion_limit 的具体值和触发后的行为。单说设上限,说明只见过概念,没真防过。
- 30 秒法则查的是什么毛病?怎么修?
参考答案
查答太长没重点。30 秒内没给结论,面试官注意力就散了。修法是固定「结论、理由、例子」三段结构,结论永远放第一句。
- 卡壳问题分两类,分别怎么处理?
参考答案
知识缺:回对应周的 Day 重学,从源头补。表达缺:把好答案要点压成三行提纲,隔天重答重录,直到流畅。两类混在一起练是浪费。
延伸阅读
- LangGraph 官方文档,第 12 周的老朋友,面试前把 State、条件边、recursion_limit 三处再翻一遍,「为什么用 LangGraph」的弹药都在里面
- MCP 官方文档,「为什么用 MCP」这题的原始出处,收益和成本写在协议设计里
- pgvector 仓库,README 里的性能数字,能帮你把量级判断说得更实
今天的产出模拟面试记录留好。下周进入面试冲刺,这份卡壳清单就是那时最值钱的复习提纲。Day 1 的系统设计走场加上今天的追问链,硬面的一半你已经预演完了。