现场题(实战)
目标:面试现场常见“白板题”的最小回答要点。
目录
- 题目 1:流式 + 取消
- 题目 2:RAG 设计
- 最小实现示例
- 常见陷阱
- 评分要点(面试官视角)
- 加分点
- 追加题目(可选)
- 题目答案框架(通用)
- 快速画图模板
- 加分回答示例
- 题目 6:Prompt 版本管理
- 题目 7:错误码设计
- 题目 8:成本控制
- 题目 9:引导提问
- 题目 10:多模型路由
- 题目 11:Prompt 模板管理
- 题目 12:日志与可观测
- 现场答题技巧
- 更多现场题(快速练习)
- 题目 13:输出校验流程
- 题目 14:Prompt 模板化
- 题目 15:用户引导设计
- 评分细则(扩展)
- 现场题回答模板
- 示例(RAG 题)
- 评分细则(加分)
- 补充题目清单
- 快速答题顺序
- 现场题加分点
- 现场题收尾
- 现场题注意事项
- 临场表达技巧
- 最后提示
- 现场题追加提醒
- 最后一句
- 结束备注
- 详细答案(示例版)
- 详细回答(逐题展开版)
- 详细答案(逐题完整)
- 完整可运行代码(现场题要点清单)
题目 1:流式 + 取消
要点:
- SSE / fetch 流式读取
- AbortController 取消
- 服务端监听 close 中止上游
题目 2:RAG 设计
要点:
- 切分 → Embedding → 向量检索
- 引用来源 + 评估指标
最小实现示例
流式 + 取消(伪代码)
const controller = new AbortController();
fetch("/api/ai/chat/stream", { method: "POST", signal: controller.signal });
// 取消
controller.abort();
RAG 最小流程(伪代码)
const chunks = split(doc); // 切分
const vectors = embed(chunks); // 向量
const topK = search(vectors, qVec); // 检索
const prompt = buildPrompt(topK); // 拼 Prompt
常见陷阱
- 忘了引用来源 → 面试官会质疑可信度
- 没有评估指标 → 无法证明效果
评分要点(面试官视角)
- 是否考虑鉴权/限流
- 是否考虑引用来源
- 是否有评估指标
加分点
- 有清晰的错误码
- 有成本控制策略
- 有可观测性日志
追加题目(可选)
题目 3:设计成本控制方案
要点:
- max_tokens 限制
- 历史摘要
- 缓存策略
题目 4:错误码设计
要点:
- 统一错误码
- 前端兜底提示
题目 5:引用面板设计
要点:
- 引用编号
- 证据展开
- 原文跳转
题目答案框架(通用)
- 先讲目标
- 再讲关键步骤
- 最后讲指标
快速画图模板
用户 -> 前端 -> 服务端 -> 模型
-> 引用面板 -> 用户
加分回答示例
- “我会增加 traceId,方便定位问题”
- “我会限制 max_tokens 控制成本”
- “我会先召回再重排提升准确率”
题目 6:Prompt 版本管理
要点:
- v1/v2 版本号
- 回滚机制
- 评估指标
题目 7:错误码设计
要点:
- 统一错误码
- 前端兜底
题目 8:成本控制
要点:
- 限制 max_tokens
- 摘要历史对话
题目 9:引导提问
要点:
- 示例问题
- 提示词引导
题目 10:多模型路由
要点:
- 按任务选择模型
- 失败回退
题目 11:Prompt 模板管理
要点:
- 模板文件化
- 版本回滚
题目 12:日志与可观测
要点:
- traceId
- 关键耗时
现场答题技巧
- 先讲流程图
- 再讲关键点
- 最后讲指标
更多现场题(快速练习)
- 设计一个“超时重试”策略
- 设计一个“会话摘要”策略
- 设计一个“引用面板”的 UI
- 设计一个“成本面板”的字段
- 设计一个“错误码规范”
- 设计一个“多模型切换”策略
- 设计一个“输出校验”流程
- 设计一个“拒答模板”
- 设计一个“输入限制策略”
- 设计一个“日志字段”
题目 13:输出校验流程
要点:
- schema 校验
- 失败重试
题目 14:Prompt 模板化
要点:
- system/task/context/output
- 版本号
题目 15:用户引导设计
要点:
- 示例问题
- 引导文案
评分细则(扩展)
- 是否讲清楚流程
- 是否讲清楚数据结构
- 是否讲清楚评估指标
现场题回答模板
- 目标
- 流程
- 风险
- 指标
示例(RAG 题)
- 目标:可追溯回答
- 流程:切分 → 向量检索 → 生成
- 风险:引用不准
- 指标:引用准确率
评分细则(加分)
- 有明确输入/输出
- 有清晰接口
- 有异常处理
- 有评估指标
补充题目清单
- 权限设计
- 成本预算
- 日志脱敏
- 缓存策略
- 灰度发布
快速答题顺序
- 画流程图
- 写关键接口
- 写异常处理
- 给评估指标
现场题加分点
- 讲清楚成本
- 讲清楚稳定性
- 讲清楚评估
现场题收尾
- 强调可落地
- 强调可评估
现场题注意事项
- 画图清晰
- 表述简洁
临场表达技巧
- 先大后小
- 先结论后细节
最后提示
- 用词简洁
- 结构清晰
现场题追加提醒
- 先给结论
- 说清楚步骤
- 给出指标
最后一句
- 讲清楚即可
结束备注
- 结构优先
详细答案(示例版)
题目 1:流式 + 取消(详细)
- 目标:支持流式输出与用户中断
- 步骤:SSE → 前端流式读取 → AbortController
- 风险:中断未关闭上游导致浪费
app.post("/chat", async (req, res) => {
res.setHeader("Content-Type", "text/event-stream");
req.on("close", () => controller.abort());
});
题目 2:RAG 设计(详细)
- 目标:可追溯回答
- 步骤:切分 → 向量检索 → 重排 → 引用
- 指标:TopK 命中率
题目 3:成本控制方案(详细)
- 措施:max_tokens + 历史摘要
- 补充:小模型优先
- 指标:单次成本
题目 4:错误码设计(详细)
- 规范:E_TIMEOUT/E_ABORT/E_UPSTREAM
- 展示:前端兜底提示
题目 5:引用面板设计(详细)
- 结构:编号 + 片段 + 跳转
- 指标:引用点击率
题目 6:Prompt 版本管理(详细)
- 方案:v1/v2 文件化 + 回滚
- 指标:效果提升
题目 7:日志与可观测(详细)
- 字段:traceId/token/latency
- 指标:错误率、TTFT
详细回答(逐题展开版)
题目 1:流式 + 取消
- 目标:流式输出、可中断
- 步骤:SSE → 前端读流 → AbortController
- 指标:TTFT、平均耗时
app.post("/chat", (req, res) => {
res.setHeader("Content-Type", "text/event-stream");
req.on("close", () => controller.abort());
});
题目 2:RAG 设计
- 目标:可追溯回答
- 步骤:切分→检索→重排→引用
- 指标:TopK 命中率、引用准确率
题目 3:成本控制方案
- 措施:max_tokens + 历史摘要 + 缓存
- 补充:小模型优先
- 指标:单次成本、日均成本
题目 4:错误码设计
- 规范:E_TIMEOUT / E_ABORT / E_UPSTREAM
- 展示:前端兜底提示
- 指标:MTTR
题目 5:引用面板设计
- 结构:编号 + 片段 + 跳转
- 交互:折叠/展开
- 指标:点击率
题目 6:Prompt 版本管理
- 策略:v1/v2 文件化 + 回滚
- 流程:A/B → 指标对比 → 上线
- 指标:合格率
题目 7:错误码设计
- 重点:统一枚举、可定位
- 展示:用户可理解文案
- 指标:故障定位时间
题目 8:成本控制
- 策略:预算表 + 降级模型
- 补充:限制历史长度
- 指标:成本下降率
题目 9:引导提问
- 做法:示例问题 + 占位提示
- 风险:引导过强导致偏题
- 指标:提问成功率
题目 10:多模型路由
- 做法:按任务选择模型
- 回退:主备模型切换
- 指标:成功率
题目 11:Prompt 模板管理
- 结构:system/task/context/output
- 版本:v1/v2 回滚
- 指标:效果提升
题目 12:日志与可观测
- 字段:traceId、token、latency
- 告警:错误率阈值
- 指标:MTTR
题目 13:输出校验流程
- 校验:JSON schema
- 失败:重试 + 兜底
- 指标:合格率
题目 14:Prompt 模板化
- 拆分:system/task/context/output
- 原因:可维护/可回滚
- 指标:改动成本
题目 15:用户引导设计
- 方式:示例问题、引导文案
- 目标:提高有效输入
- 指标:有效输入率
详细答案(逐题完整)
说明:每题提供「目标 → 步骤 → 风险 → 指标」的完整回答。
题目 1:流式 + 取消
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
const controller = new AbortController();
fetch(url, { signal: controller.signal });
controller.abort();
详细说明:围绕“流式 + 取消”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 2:RAG 设计
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“RAG 设计”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 3:设计成本控制方案
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“设计成本控制方案”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 4:错误码设计
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
{ "code": "E_TIMEOUT", "message": "请求超时" }
详细说明:围绕“错误码设计”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 5:引用面板设计
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“引用面板设计”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 6:Prompt 版本管理
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“Prompt 版本管理”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 7:错误码设计
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
{ "code": "E_TIMEOUT", "message": "请求超时" }
详细说明:围绕“错误码设计”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 8:成本控制
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“成本控制”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 9:引导提问
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“引导提问”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 10:多模型路由
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“多模型路由”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 11:Prompt 模板管理
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“Prompt 模板管理”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 12:日志与可观测
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“日志与可观测”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 13:输出校验流程
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“输出校验流程”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 14:Prompt 模板化
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“Prompt 模板化”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
题目 15:用户引导设计
- 目标:一句话说明要解决的问题。
- 步骤:列出 3 步以内的最小落地流程。
- 风险:指出最常见的失败场景。
- 指标:给出 1-2 个可量化指标。
详细说明:围绕“用户引导设计”先给出一句话目标,再描述最小可行实现路径。随后补充关键风险点与兜底措施,并用 1-2 个指标说明效果,确保面试官看到“可落地 + 可评估”。
完整可运行代码(现场题要点清单)
源码目录:
docs/demos/portfolio-demo
node docs/demos/portfolio-demo/index.js