Skip to content

第 22 周 · Day 6:模拟面试(项目深挖)——让每个技术决策经得起三层追问 ​

对应手册任务:学习「模拟面试:项目深挖」,动手「找朋友或用 AI 模拟面试官,追问『为什么用 LangGraph』『死循环怎么防』」,当日产出「模拟面试记录」。本篇只解决一个问题:项目是你亲手建的,决策是你拍的,可一旦被连环追问三层,「为什么用 LangGraph」这种你以为最熟的问题也会答得发虚,今天用一场高压模拟,把这些发虚的地方提前翻出来晒太阳。

今日目标 ​

  1. 说得清模拟面试练的是什么:不是补知识,是练把网状的知识压成线性的话
  2. 抄走一段直接能用的面试官 system prompt,知道每条规则为什么这么写
  3. 过完 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 问分四组。

选型拷打(考「为什么是它」)

  1. 为什么用 LangGraph,不用裸 while 循环加 if/else?
    • 先承认 while 能跑通主流程,装「离了框架不行」只会被追打死
    • 增量说实:checkpoint 持久化、中断恢复、human-in-the-loop,裸写都得自己造
    • 落到自家系统:审批挂起后恢复运行,这个功能直接吃了框架红利
  2. 为什么不用 CrewAI?
    • 定位差异:它偏角色协作快速搭原型,控制粒度粗
    • 我们要的是路由、重试、状态流转的精细控制权
    • 迁移成本和团队熟悉度也是真实因素,可以认,但别只说这个
  3. Supervisor 为什么硬路由,不放开让 LLM 自己决定下一步?
    • 硬路由等于白名单动作集,行为可枚举、可测试、可复现
    • LLM 自由决策会飘:同一输入两次走向不同,排障是灾难
    • 骨架硬、节点内自由:结构化输出定路由,内容生成交给模型
  4. RAG 为什么用 pgvector,不用 Milvus?
    • 数据本来就在 Postgres,事务、备份、运维一套全复用
    • 给量级判断:百万级以内向量够用,别为简历堆组件
    • Milvus 的主场是亿级向量加高 QPS,说清「我不到这个量」
  5. 评估为什么先做离线,不直接上线看效果?
    • 离线可批量回归、可重复、便宜,改一版跑一遍
    • 没有离线基线,上线后连变好还是变坏都说不清
    • 路径:离线建基线,上线小流量,再人工抽检校准
  6. 为什么用结构化输出锁 Schema,不在 prompt 里求模型输出 JSON?
    • 约束解码在解码层面保证合法,prompt 求格式是概率性的
    • 校验加重试是兜底,不该当主力
    • 一份 Schema 两端用:模型生成和代码校验共用同一个定义

稳定性拷打(考「出事怎么办」)

  1. Agent 死循环怎么防?三层具体怎么落?
    • 模型层:prompt 禁止重复调用,工具返回携带「已做过」状态
    • 框架层:recursion_limit 设上限,说出你设的具体数字
    • 业务层:步数和 token 双预算,超限熔断并降级回复
  2. recursion_limit 触发之后发生什么?异常还是正常结束?
    • 抛 GraphRecursionError,不会优雅停下
    • 外层要接住:兜底话术、记录现场、告警
    • 只说「设个上限」不算答案,说清触发后的行为才算
  3. LLM 接口超时或挂掉,请求怎么处理?
    • 超时加带退避的重试,重试有上限
    • 想过幂等:重试会不会重复扣费、重复写库
    • 有降级预案:换模型、排队、明确告知失败,别让用户干转圈
  4. 多租户隔离,哪个存储漏配会出事?
    • 先数全存储面:Postgres、向量表、Redis 缓存、对象存储、日志
    • 最容易漏的是缓存和日志,key 不带租户前缀就是串号事故
    • 讲验证方式:专门写越权测试用例,而不是「应该没问题」
  5. 语义缓存误命中怎么办?
    • 先定义清楚:不同问题命中同缓存,返回错误答案,这是正确性问题不是性能问题
    • 缓解:相似度阈值调高、缓存 key 加关键实体、高敏场景直接关
    • 说监控:用评测集持续测误命中率,不是设完就不管

效果与成本拷打(考「数字从哪来」)

  1. Token 成本怎么优化?先说从哪下手。
    • 先计量后优化:按环节记账,看钱花在哪再动手
    • 分级路由:简单任务小模型,难的才上大模型
    • 控上下文长度:历史裁剪,最贵的是无脑全量历史
  2. RAG 召回效果差,怎么排查?
    • 先有评测集,否则「感觉差」变不成可定位的问题
    • 分层查:query 改写、切块、embedding 模型、top-k、重排序
    • 一次只动一层,跑评测对比,别五个旋钮一起拧
  3. Human-in-the-loop 在你系统里怎么落的?
    • 说清哪些动作必须过人工,为什么是这些
    • 状态持久化让「等人工」成为可能:挂起数小时后能恢复
    • 审批通过与拒绝后的流转,以及审批人不在时的超时策略
  4. 简历上的量化成果(准确率提升 X%)怎么测的?
    • 口径说得清:样本量、时间范围、判定标准、谁标注
    • 说不出口径的数字,等于告诉面试官是编的
    • 主动讲局限:小样本、单一场景,如实说反而加分

开放拷打(考「你这个人」)

  1. 项目里最难的一个 bug?
    • 完整叙事:现象、排查路径、根因、修复、怎么防再犯
    • 排查有逻辑:假设、验证、排除,不是「后来突然好了」
    • 别把团队功劳讲成自己单人破案
  2. 流量涨一百倍,哪里先崩?
    • 先指有状态的部分:会话 checkpoint 存储和 LLM API 配额
    • 水平扩容的前提是无状态化,说清哪些状态已外置
    • 有顺序的降级:排队、限流、非核心功能先停
  3. 你在这个项目里的个人贡献边界在哪?
    • 诚实划界:团队做的、自己做的、自己主导的,分开讲
    • 面试官不怕你只做一部分,怕你吹,吹破一处处处存疑
    • 自己那部分的深度,比整个项目的广度值钱
  4. 重做一遍,你会改什么?
    • 至少两条具体的,「都挺满意」是最差答案
    • 好例子:评估集应该第一周就建;死循环防护应该设计期就进
    • 这题考复盘能力,真被坑过的人才答得出细节
  5. 用 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:记录写完就归档。 模拟面试记录的价值在下一场之前。真面试前一晚,只过错题清单;清单清零之前,这份记录是活的。

自测问题 ​

先自己答,再展开对照。答不上来的,回对应小节看一遍。

  1. 「知道」和「面试时说得出」差在哪?模拟面试治哪一种?
参考答案

差在输出形态:知识在脑中是网状的,面试要求实时压成线性、结论先行的话。模拟面试治「知道但没串过」;对「真不知道」,它的作用是帮你精确定位,然后回对应周补课。

  1. 面试官 prompt 里「抓住模糊表述追问」这条为什么是灵魂?
参考答案

真面试官的核心能力就是听出哪里虚。「性能更好」这类表述没解释机制,是多数候选人的通病。这条规则让 AI 复制这个行为,把模拟从问答游戏变成压力测试。

  1. 「死循环怎么防」只答「设个步数上限」缺了什么?
参考答案

缺分层和落地细节。好答案分模型层、框架层、业务层三层,每层有具体手段,还说得出 recursion_limit 的具体值和触发后的行为。单说设上限,说明只见过概念,没真防过。

  1. 30 秒法则查的是什么毛病?怎么修?
参考答案

查答太长没重点。30 秒内没给结论,面试官注意力就散了。修法是固定「结论、理由、例子」三段结构,结论永远放第一句。

  1. 卡壳问题分两类,分别怎么处理?
参考答案

知识缺:回对应周的 Day 重学,从源头补。表达缺:把好答案要点压成三行提纲,隔天重答重录,直到流畅。两类混在一起练是浪费。

延伸阅读 ​

  • LangGraph 官方文档,第 12 周的老朋友,面试前把 State、条件边、recursion_limit 三处再翻一遍,「为什么用 LangGraph」的弹药都在里面
  • MCP 官方文档,「为什么用 MCP」这题的原始出处,收益和成本写在协议设计里
  • pgvector 仓库,README 里的性能数字,能帮你把量级判断说得更实

今天的产出模拟面试记录留好。下周进入面试冲刺,这份卡壳清单就是那时最值钱的复习提纲。Day 1 的系统设计走场加上今天的追问链,硬面的一半你已经预演完了。