← [ BACK_TO_NOTES ]

BodySense 项目面试题库

围绕 BodySense 三服务架构、Agent Runtime、BodyState、RAG、Safety、Eval、SSE、发布与真实证据边界组织的项目深挖题库。

#synthesis #growing #ai #bodysense #interview

[!info] related notes

BodySense 项目面试题库

使用规则

  • 先折叠题卡闭卷口述,再展开答案;
  • 题源 只描述问题如何进入题库,答案依据 单独描述技术正确性;
  • NC-H 代表近期公开面经主题交叉出现,不代表公司官方题库;
  • AI-D 明确表示 AI 衍生的高价值追问;
  • 完整知识只维护在相关长期笔记,本页保存面试表达;
  • 项目题必须在面试前回动态 evidence index 核验,不临场编数字。

题源定义见 面试题来源、置信度与答案依据;回答方法见 技术面试回答框架。

项目总览

[!question]- P0 BS-001 请介绍一下 BodySense。 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:BodySense 项目 MOC

30 秒回答 BodySense 不是单轮健康问答,而是长期体态管理场景。我把系统拆成三层:React 工作台负责流式交互;Go 负责用户、会话、Run、事件和长期 BodyState 等业务数据;Python LangGraph/PydanticAI 负责模型、工具和可恢复工作流。知识侧有 ASR、切分、Embedding、pgvector 检索和引用,安全侧把红旗症状放在普通建议之前,质量侧有版本化离线 Eval。这样即使 Agent 中断、恢复或模型切换,长期业务事实仍然有独立可追踪的状态。

展开要点 / 原始迁移内容 追问重点:为什么这样拆、为什么不是一个 FastAPI 全做、怎么恢复、怎么验证。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的代码和决策边界是什么?
  • 失败路径和真实限制是什么?
  • 哪一项证据能证明已经实现?

[!question]- P0 BS-002 为什么这个场景需要 Agent,不直接写固定 Workflow? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Agent · Agent Runtime · Agentic Workflow Patterns

30 秒回答 并不是所有路径都需要 Agent。红旗安全、权限、最终落库这些我更倾向确定性流程;但用户咨询需要根据现有症状决定继续追问、检索什么知识、是否调用工具、何时要求人工补充,这部分路径在运行前无法完全固定,适合受约束的 Agent。整体上是“确定性 Workflow 包围有限 Agent 自主性”,而不是把所有事情交给模型。

展开要点 / 原始迁移内容 知识点:Agent vs Workflow、bounded autonomy、guardrail。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-003 为什么 React + Go + Python,不做成单服务? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Agent · Agent Runtime · Agentic Workflow Patterns · React

30 秒回答 拆分依据是职责和变化频率,不是为了堆技术栈。Python 生态更适合 LangGraph/PydanticAI、模型与评测;Go 作为业务 API 负责鉴权、持久化、稳定事件契约和长期业务真值;React 只消费稳定协议。这样 Agent Runtime 可以快速演进,而业务数据模型和客户端契约不会跟着模型框架一起漂移。代价是跨服务契约、部署和观测更复杂,所以需要共享 contract、requestId/trace 和统一测试入口。

展开要点 / 原始迁移内容

反问自己

如果面试官说“小团队这么拆是不是过度设计?”

如果只是 Demo,我会单服务。这个拆分只有在长期状态、独立 runtime 演进、生产发布和跨语言工具链已经成为真实需求时才合理。我的回答应该承认拆分成本,而不是说微服务天然更高级。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

Agent Runtime / LangGraph

[!question]- P0 BS-004 LangGraph 里的 state、node、edge、thread、checkpoint 分别是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:LangGraph · Interrupt / Resume 生命周期

30 秒回答

  • state:一次 graph 执行过程中被节点读取和更新的结构化状态。
  • node:执行单元,可能是模型调用、工具、校验或纯函数。
  • edge:节点间转移规则,包含固定和条件分支。
  • thread:一条可持续多轮执行的逻辑上下文,用 thread_id 找到对应历史 checkpoint。

展开要点 / 原始迁移内容

  • checkpoint:图在执行步骤上的持久化快照,用于恢复、HITL、故障恢复等。

项目连接:BodySense 的 checkpoint 是 Agent 执行连续性的真值,但不是长期 BodyState 的真值。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 恢复时哪段代码可能重新执行?
  • interrupt 前的副作用如何保证幂等?
  • 同一 thread 并发 resume 怎么防重?

[!question]- P0 BS-005 interrupt / resume 是怎么工作的? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:LangGraph · Interrupt / Resume 生命周期

30 秒回答 LangGraph interrupt 会暂停图并依赖 checkpointer 保存可恢复状态;恢复时用相同 thread_id 再次调用图,并把 Command(resume=...) 的值返回给 interrupt()。工程上不能把它理解成操作系统线程从某一源码行精确续跑:包含 interrupt 的 node 可能重放其前置逻辑,因此 interrupt 前的外部副作用必须幂等,或者移到确认后的独立节点。

展开要点 / 原始迁移内容 interrupt 会暂停 graph,并依赖 checkpointer 保存状态。外部拿到待确认的信息后,用户提交输入,再用同一 thread 恢复。关键细节是:恢复时节点可能从头重新执行,而不是从源代码的 interrupt 下一行“继续线程”,所以 interrupt 之前的副作用必须幂等,或者把副作用放到确认之后的独立节点。

这是很容易被追问穿的点。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 恢复时哪段代码可能重新执行?
  • interrupt 前的副作用如何保证幂等?
  • 同一 thread 并发 resume 怎么防重?

[!question]- P0 BS-006 为什么不能把 checkpoint 直接当业务数据库? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:LangGraph · Interrupt / Resume 生命周期

30 秒回答 checkpoint 主要回答“Agent 执行到哪里、下一步怎么继续”,结构会跟 runtime/graph 演进;业务数据库回答“用户当前有哪些可信事实、会话记录是什么、哪个结果被用户确认”。如果混在一起,模型中间推理、临时工具结果可能被误当长期事实,而且 runtime 升级会绑死业务数据。BodySense 因此把 Python checkpoint 与 Go 的 Conversation/Run/BodyState 等持久化分开。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 恢复时哪段代码可能重新执行?
  • interrupt 前的副作用如何保证幂等?
  • 同一 thread 并发 resume 怎么防重?

[!question]- P0 BS-007 如果同一 thread 同时收到两个 resume 请求怎么办? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:LangGraph · Interrupt / Resume 生命周期

30 秒回答

  1. 需要把“resume”看成状态变更命令,而不是任意请求。
  2. 由业务侧校验 interaction/run 当前状态,只允许从 waiting_for_input 等合法状态转移。
  3. 使用版本号/乐观并发、唯一约束或事务保证一次确认只成功一次。
  4. 重复请求返回已处理结果或幂等响应,而不是再次执行副作用。

展开要点 / 原始迁移内容 5. runtime 内部的 checkpoint 不能替代业务幂等控制。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 恢复时哪段代码可能重新执行?
  • interrupt 前的副作用如何保证幂等?
  • 同一 thread 并发 resume 怎么防重?

[!question]- P1 BS-008 Agent 怎么避免死循环或工具重复调用? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:Agent · Agent Runtime · Agentic Workflow Patterns

30 秒回答 不依赖模型“自己知道停”。可以组合最大 step/tool-call 数、每工具 timeout、重复 action 指纹、状态不前进检测、显式终止条件和预算上限。对确定性任务可以把 loop 变成 graph 上的受限边;高风险动作必须经过 approval。真正线上还要记录每步原因和工具结果,便于识别路径震荡。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • schema 通过后为什么仍不能执行?
  • 如何做 authorization、timeout 和 idempotency?
  • 工具失败是重试、降级还是转人工?

[!question]- P1 BS-009 ReAct 和 Plan-and-Execute 怎么选? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:Agent · Agent Runtime · Agentic Workflow Patterns · React

30 秒回答 ReAct 是边观察边决定下一步,适合环境反馈强、路径动态的任务;Plan-and-Execute 先形成较完整计划再执行,适合目标可分解、希望减少频繁大模型决策的任务。实际系统常混合:先粗计划,再在局部步骤里 ReAct;重要的是有停止条件、状态和工具约束,而不是框架名称。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 BS-010 PydanticAI 在项目里有什么价值? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能区分模型决策、运行时控制与业务系统权威。 相关知识:Python MOC · Python GIL 与线程 · Python 异步编程

30 秒回答

  • Python 侧模型/工具输入输出结构化。
  • 利用 schema 校验降低“看起来像 JSON 但不可执行”的错误。
  • 类型只是第一层:通过 schema 以后仍要做业务权限、范围和状态校验。 不要回答成“用了 PydanticAI 所以模型不会幻觉”。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的代码和决策边界是什么?
  • 失败路径和真实限制是什么?
  • 哪一项证据能证明已经实现?

Runtime Truth 与长期 BodyState

[!question]- P0 BS-011 为什么聊天历史不能直接当 BodyState? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:BodySense 项目 MOC

30 秒回答 聊天是事件流,里面既有用户原话,也有模型猜测、被否定的信息和过期状态。长期 BodyState 是经过来源、状态、revision 管理的业务事实。比如用户先说“右腿疼”,后来修正为“左腿”;如果只把整段历史塞给模型,两个事实同时存在。BodyState 会把当前有效事实与历史 revision 分开,并保留 provenance,让用户修正优先于旧 AI 提取。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-012 BodyState 为什么需要 revision? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:BodySense 项目 MOC

30 秒回答 健康状态会变化,并且分析结果必须知道自己基于哪一版事实。revision 可以让 Diagnosis/Treatment 绑定明确的输入版本,避免用户更新状态后旧分析看起来像是针对新状态生成的。同时也便于乐观并发和审计。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-013 用户和 AI 同时更新 BodyState 怎么处理? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:BodySense 项目 MOC

30 秒回答 用户明确修正优先级更高。写入时带 revision 做 optimistic concurrency;如果基础 revision 已变化,不能静默覆盖,而应该重新合并或提示冲突。AI 抽取更适合作为 candidate/proposal,经过规则或用户确认后再进入长期状态。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 BS-014 长期 Memory 与 Context 有什么区别? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Memory、Context 与 Knowledge · React · React useEffect

30 秒回答 Memory 是被持久化、以后可能再次利用的信息;Context 是本次模型调用实际放进上下文窗口的内容。长期数据不应该全部塞进 prompt,而要按任务选择、检索、压缩。BodyState 是长期事实层的一部分,实际调用时只选与当前咨询相关的 revision 和证据。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

RAG / pgvector / 引用

[!question]- P0 BS-015 BodySense 的 RAG 完整链路? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness · BodySense 项目 MOC

30 秒回答 知识源先经过 ASR/文本解析,做语义切分并保留 source metadata;对 chunk 生成 embedding 写入 PostgreSQL/pgvector;查询时对用户问题做检索,返回 chunk、分数和来源;必要时可以继续做过滤、混合检索或 rerank;生成阶段要求答案使用检索证据,并把 citation 作为独立事件传给前端。无足够证据时应该允许 no-result,而不是强行生成。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你会先看哪一层指标定位退化?
  • 证据不足时系统如何 no-result?
  • 索引更新时如何防版本混读?

[!question]- P0 BS-016 为什么用 pgvector? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:pgvector

30 秒回答 当前知识规模和业务数据本来就在 PostgreSQL,pgvector 可以让向量和 metadata/业务关系一起事务化管理,部署复杂度低。它不是“永远比专用向量库好”;如果未来数据规模、索引吞吐、跨地域或高级检索需求明显增长,再评估独立向量服务。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-017 Chunk 怎么切?固定长度是不是最简单? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness

30 秒回答 固定 token 长度易实现,但可能把一个完整动作或条件拆开。更合理的是先按文档结构/语义边界切,再设最大 token 限制和适度 overlap。Chunk 越小召回粒度越细但上下文可能碎;越大信息完整但 embedding 主题混杂、成本也更高。应该用检索评测集调,而不是凭感觉固定一个值。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你会先看哪一层指标定位退化?
  • 证据不足时系统如何 no-result?
  • 索引更新时如何防版本混读?

[!question]- P0 BS-018 向量相似度高,为什么结果仍然不相关? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness

30 秒回答

  • embedding 把“语义相似”误当“答案相关”。
  • chunk 同时包含多个主题。
  • query 太短/歧义。
  • metadata/filter 缺失。

展开要点 / 原始迁移内容

  • top-k 太大,噪声进入上下文。
  • 领域术语关键词很重要但向量没抓住。
  • embedding 模型与语种/领域不匹配。

优化顺序:先评测样本 → 看 query/chunk → filter → hybrid → rerank → 再考虑换 embedding。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-019 混合检索和 RRF 是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness

30 秒回答 混合检索通常把 dense vector retrieval 与 BM25/全文关键词检索组合。前者擅长语义相似,后者擅长精确术语、编号、专有名词。RRF(Reciprocal Rank Fusion)不强依赖不同检索器分数可比,而是根据各自排名做融合,因此是实用的多路结果融合方法。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-020 Rerank 为什么放在召回后? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness

30 秒回答 第一阶段目标是高 recall,用便宜的向量/关键词方法从大量文档拿几十个候选;reranker 用更昂贵但更精确的 cross-encoder/LLM 等方法重新判断 query-document 相关性,最后只给模型少量高质量证据。这样在成本和准确率之间折中。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你会先看哪一层指标定位退化?
  • 证据不足时系统如何 no-result?
  • 索引更新时如何防版本混读?

[!question]- P1 BS-021 Query Rewrite / HyDE 怎么理解? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness

30 秒回答

  • Query Rewrite:把上下文相关、口语、歧义 query 改成更适合检索的查询;风险是改错用户意图。
  • HyDE:先让模型生成“假想答案/文档”,用其 embedding 去找真实语义相近文档;对短 query 可能有效,但也可能把模型先验偏差带入检索。
  • 两者都要用离线 retrieval 指标验证,不能因为概念新就默认开启。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 谁拥有这份状态的真值?
  • 并发 mutation 如何防旧响应覆盖新状态?
  • 失效范围过大或过小会怎样?

[!question]- P0 BS-022 有 citation 就算 grounded 吗? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能从 ingestion、retrieval、generation 到 eval 逐层定位质量问题。 相关知识:RAG · RAG Grounding / Faithfulness · CI/CD MOC

30 秒回答 不算。Citation 只说明展示了来源;grounded/faithful 要求具体结论能被引用证据支持。常见错误是引用内容主题相关但并不支撑结论。因此评测要检查 answer claim 与 evidence 的蕴含关系,而不是只统计“有没有引用”。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

安全与 Eval

[!question]- P0 BS-023 红旗症状为什么在建议生成之前? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能把模型效果变成版本化、可回归、可上线判断的证据。 相关知识:BodySense 项目 MOC

30 秒回答 因为安全优先级不能与普通建议平级竞争。如果让一个通用生成节点同时“判断危险 + 给训练建议”,模型可能被对话上下文带偏。更稳的方式是先做高风险识别和必要追问,命中就进入安全路径,不再让普通建议覆盖它。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-024 你怎么评测 BodySense? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能把模型效果变成版本化、可回归、可上线判断的证据。 相关知识:Agent 测试与评估 · Agent Evals MOC · BodySense 项目 MOC

30 秒回答 可以直接使用当前真实证据:

展开要点 / 原始迁移内容 我把评测分成资格/回归集,而不是宣称大规模临床指标。当前 Diagnosis 有 7 条资格用例,其中 4 条是高风险安全用例;Diagnosis 和 Treatment 各有 9 条证据策略用例;知识候选还有 9 条检索/引用/grounding 资格用例,其中 6 条正例和 3 条 no-result,目前这些资格集是全绿。它们用于阻止策略/Prompt/检索改动引入明显回归。下一步需要从真实日志继续扩充困难样本,不能把几十条 case 当成统计意义上的效果证明。

这个回答的关键是:诚实描述样本规模和用途。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 数据集从哪里来,如何避免只测 happy path?
  • 关键指标如何设置 hard gate?
  • 离线结果与线上指标不一致怎么办?

[!question]- P0 BS-025 RAG Eval 应该拆哪些指标? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能把模型效果变成版本化、可回归、可上线判断的证据。 相关知识:RAG · RAG Grounding / Faithfulness · Agent 测试与评估 · Agent Evals MOC

30 秒回答

  1. Retrieval:Recall@K / Hit Rate / MRR / nDCG 等。
  2. Context quality:相关性、冗余度。
  3. Generation:faithfulness/groundedness、answer relevance、引用正确性。
  4. Safety:高风险召回、误报、漏报。

展开要点 / 原始迁移内容 5. End-to-end:任务完成、用户是否需要反复追问、延迟、成本。

小数据阶段可以用结构化人工规则 + LLM judge 辅助,但关键安全项最好有确定性或人工标注基准。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你会先看哪一层指标定位退化?
  • 证据不足时系统如何 no-result?
  • 索引更新时如何防版本混读?

[!question]- P0 BS-026 为什么要做 no-result case? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能把模型效果变成版本化、可回归、可上线判断的证据。 相关知识:BodySense 项目 MOC

30 秒回答 一个 RAG 系统如果只测“有答案时能不能找到”,很容易训练成什么都召回、什么都回答。no-result 用例检查在证据不足时能否拒绝错误引用或明确说明缺少依据,对降低幻觉很重要。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 BS-027 LLM-as-a-Judge 有什么风险? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能把模型效果变成版本化、可回归、可上线判断的证据。 相关知识:Agent 测试与评估 · Agent Evals MOC

30 秒回答

  • judge 模型本身有偏差与非确定性。
  • 可能偏好更长、更像标准答案的文本。
  • prompt / position / self-preference 会影响评分。
  • judge 与被评模型同源时可能产生相关偏差。

展开要点 / 原始迁移内容

应对:固定 rubric、校准人工样本、重复/多 judge、关键安全指标用规则或人工 gold、保存模型和 prompt 版本。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 数据集从哪里来,如何避免只测 happy path?
  • 关键指标如何设置 hard gate?
  • 离线结果与线上指标不一致怎么办?

[!question]- P1 BS-028 Shadow / Canary / Non-inferiority 分别是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查是否能把模型效果变成版本化、可回归、可上线判断的证据。 相关知识:Agent 测试与评估 · Agent Evals MOC · CI/CD MOC

30 秒回答

  • Shadow:新策略接收镜像流量但结果不直接影响用户,用于观察。
  • Canary:小比例真实用户使用新策略,监控指标后逐步扩大。
  • Non-inferiority:不是要求每个指标都绝对变好,而是关键指标不能差过预设容忍边界,同时新策略可能在成本、能力等方面有收益。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

SSE 与前端 Runtime

[!question]- P0 BS-029 为什么用 SSE,不用 WebSocket? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:前端流式响应模式 · 前端 SSE 消费设计 · AI 对话与流式界面

30 秒回答 当前核心流量是“用户发起一次 Run,服务端持续向客户端推 token、tool、citation、状态”,方向高度偏 server→client,SSE 与 HTTP 基础设施、鉴权和代理更容易整合,文本事件也符合场景。WebSocket 更适合真正高频双向实时交互。用户补充输入/interrupt resume 可以继续走普通 POST,不需要为了双向能力把整条链路换成 WebSocket。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 一次 reader.read 为什么不等于一个 event?
  • 断线后如何恢复且不重复渲染?
  • Run 的 durable state 与连接状态如何分开?

[!question]- P0 BS-030 原生 EventSource 为什么不适合 POST SSE? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:前端流式响应模式 · 前端 SSE 消费设计 · AI 对话与流式界面

30 秒回答 浏览器 EventSource API 主要建立 GET 型 SSE 连接,不能像 fetch 一样自由设置 POST body。AI chat 常需要一次 POST 携带较大的请求体然后直接流式读响应,所以可以用 fetch + ReadableStream 自己解析 SSE framing,或者使用支持 fetch-based SSE 的客户端库。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 一次 reader.read 为什么不等于一个 event?
  • 断线后如何恢复且不重复渲染?
  • Run 的 durable state 与连接状态如何分开?

[!question]- P0 BS-031 TCP chunk / fetch chunk 和 SSE event 是一回事吗? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:RAG · RAG Grounding / Faithfulness · 前端流式响应模式 · 前端 SSE 消费设计

30 秒回答 不是。网络读取边界不保证和业务事件边界一致。一个 reader.read() 可能只有半个 SSE event,也可能包含多个 event,所以客户端必须保留 buffer,按 SSE 协议分隔符解析完整事件,再交给 reducer。不能假设一次 read 就是一条 token/event。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你会先看哪一层指标定位退化?
  • 证据不足时系统如何 no-result?
  • 索引更新时如何防版本混读?

[!question]- P0 BS-032 为什么 token / tool / citation / interrupt 要做不同事件类型? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:LangGraph · Interrupt / Resume 生命周期 · Function Calling · Tool Calling 工程化

30 秒回答 它们的生命周期和 UI 行为不同。token 是可追加文本;tool 有 started/success/error;citation 是结构化来源;interrupt 会改变 Run 状态并等待用户输入。如果全部拼成一段 Markdown,前端无法可靠恢复状态、测试失败分支,也无法做可访问的交互。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 恢复时哪段代码可能重新执行?
  • interrupt 前的副作用如何保证幂等?
  • 同一 thread 并发 resume 怎么防重?

[!question]- P0 BS-033 如何处理断线和重复事件? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:BodySense 项目 MOC

30 秒回答 答题思路:

展开要点 / 原始迁移内容

  • 每个 Run/event 有稳定 id 或 sequence。
  • 业务侧持久化 Run/Runtime Event,连接只是投影渠道。
  • 客户端记录最后已应用 event;重连后从 cursor/Run 状态恢复,或重新读取 snapshot 再继续。
  • reducer 按 event id/seq 做幂等应用。
  • 不能把“连接还活着”当成 Run 的唯一真值。

如果当前实现没有完整 cursor 重放机制,要明确说“当前做到哪一层,理想补强是什么”。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-034 为什么流式 turn 用 reducer,而不是 TanStack Query? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:TanStack Query MOC · Server State vs Client State · 前端流式响应模式 · 前端 SSE 消费设计

30 秒回答 TanStack Query 更适合服务端资源快照和缓存一致性;active turn 是大量短生命周期、有序 event 驱动的本地运行态,reducer 更适合按事件做确定性状态转换。Run 完成以后,再把稳定结果并入/失效 server-state query。这样不会让 query cache 承担逐 token 事件日志。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 谁拥有这份状态的真值?
  • 并发 mutation 如何防旧响应覆盖新状态?
  • 失效范围过大或过小会怎样?

[!question]- P0 BS-035 为什么 URL、Zustand、TanStack Query 要分开? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:React · React useEffect · TanStack Query MOC · Server State vs Client State

30 秒回答

  • URL:可分享/刷新可恢复的导航状态,如 active conversation、workspace mode。
  • TanStack Query:服务端真值的缓存和同步。
  • Zustand:纯客户端 UI 偏好,如布局。
  • reducer:当前流式 turn 的短生命周期状态机。

展开要点 / 原始迁移内容

原则:一个事实尽量只有一个 owner。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 谁拥有这份状态的真值?
  • 并发 mutation 如何防旧响应覆盖新状态?
  • 失效范围过大或过小会怎样?

[!question]- P1 BS-036 逐 token setState 有什么性能问题? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查网络 chunk、协议 event 与 UI state machine 能否正确分层。 相关知识:BodySense 项目 MOC

30 秒回答 token 频率高时每个 chunk 都触发 React state update,会造成频繁 render。可以在协议层按较小时间窗口批量 flush、把 event parsing 与 UI 更新解耦、memoize 不相关区域、避免整个消息列表重算。优化前先用 React Profiler / Performance measure 观察,不要盲目 debounce 到让用户感觉卡顿。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

Go 业务层 / 事件模型

[!question]- P0 BS-037 Conversation、Message、Run、Interaction、Runtime Event 为什么要分? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查并发、取消、接口与服务生命周期的基本模型。 相关知识:BodySense 项目 MOC

30 秒回答

  • Conversation:长期会话容器。
  • Message:用户/助手可见消息。
  • Run:一次 Agent 执行实例,有 start/running/interrupted/completed/failed 等生命周期。
  • Interaction:需要用户/人工回应的结构化交互。

展开要点 / 原始迁移内容

  • Runtime Event:执行过程事件,用于投影和诊断。

如果只存 Message,遇到工具执行失败、HITL 中断、恢复、重试时,很难还原“这次运行发生了什么”。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-038 为什么 Go 是业务状态权威? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查并发、取消、接口与服务生命周期的基本模型。 相关知识:BodySense 项目 MOC

30 秒回答 这是项目架构选择,不是 Go 天生更适合。把用户鉴权、长期实体、Run/Interaction、API contract 放在稳定业务服务里,可以让 Python runtime 替换/升级时不影响外部业务语义。Go 负责“可以被产品依赖的事实”,Python 负责“如何推理和执行”。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 BS-039 为什么使用 UUIDv7? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查并发、取消、接口与服务生命周期的基本模型。 相关知识:BodySense 项目 MOC

30 秒回答 UUIDv7 保留 UUID 的分布式唯一生成能力,同时高位包含时间有序信息,相比随机 UUIDv4 对 B-tree 索引局部性通常更友好,也方便按时间顺序分页/事件组织。但不能把 UUIDv7 当严格全局序列;同一时间窗口仍可能需要额外排序字段/sequence 来保证业务事件顺序。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

部署、回滚、可观测性

[!question]- P0 BS-040 为什么要求 Web/API/AI 是同一 Git revision? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:RESTful API

30 秒回答 因为跨服务 contract 有版本关系。如果 Web 是新 DTO、API 是旧 DTO,单个服务健康检查都可能是绿的,但系统仍不可用。将多个服务的镜像标记同一 revision,并在部署前后校验,可以把“到底部署了哪组代码”变成可验证事实。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-041 为什么数据库 schema 变化时不能无脑自动回滚应用镜像? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Function Calling · Tool Calling 工程化 · 输出校验

30 秒回答 应用版本回滚不等于数据库状态回滚。新版本如果已经执行 destructive/incompatible migration,旧应用可能无法读取新 schema。自动回滚只能在 schema backward-compatible 或明确无 schema 变化时安全执行;否则需要 expand-contract migration、向后兼容窗口或数据库专门恢复方案。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 BS-042 什么叫不可变 OCI 产物? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC

30 秒回答 构建出来的镜像通过 digest/SHA 唯一确定,部署时不在服务器上临时修改代码,也不让同一个 tag 漂移到不同内容。这样测试过的产物就是上线产物,回滚也有明确目标。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

[!question]- P1 BS-043 LiteLLM 网关在这里解决什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:BodySense 项目 MOC

30 秒回答 把模型 provider、认证、逻辑模型名、路由/降级和调用观测从业务代码抽离。业务 runtime 调一个稳定的模型接口,不需要到处硬编码厂商 URL/key。它不应该承担业务 Agent 的流程路由,模型网关与业务 orchestration 是两个层次。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

简历最高风险证据题

[!question]- P0 BS-S01 BodySense 中 Redis 当前到底做什么? 题源:RESUME-H(最高风险 Claim) 答案依据:PROJECT-E2/E3(必须面试前重新核验) 考察意图:强制把简历技术栈与真实运行代码对齐,禁止编造缓存用途。 相关知识:BodySense 项目 MOC · Redis

30 秒回答 这道题不能使用通用模板回答。先从当前 compose/config、依赖注入、repository 和运行 trace 确认 Redis 是否用于会话、缓存、队列、限流、锁,还是只是保留依赖;只讲能找到代码与测试证据的用途。若当前版本未使用,应直接说“当前主链路没有依赖 Redis”,并解释为什么简历需要修正。

展开要点 证据至少包括初始化位置、key/schema、读写调用、TTL/失败策略和测试。列了 Redis 但说不出这些,比诚实说明未使用风险更大。

继续追问

  • Redis 不可用时主链路如何表现?
  • 缓存真值属于哪里?
  • 简历 claim 与代码不一致时怎么处理?

覆盖说明

本页由 10-project-bodysense.md 中的 43 道编号题全量迁移,并从近期观察层去重补充 1 道独立高价值题,共 44 道;每题包含题源、答案依据、考察意图、知识链接和追问。近期题目趋势另由 题源注册表 管理,避免再次维护一套重复答案。

创建于 2026/9/2 更新于 2026/9/2
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本