Day 55:第二轮模拟面试 —— 系统设计与场景排查
欢迎来到第五十五天!昨天我们完成了第一轮模拟面试,重点考察基础原理和项目深挖。今天进入第二轮模拟面试,主题是系统设计和场景排查。这类题目在 AI Agent 岗位面试中权重很高,因为它们考察的不是“你背没背概念”,而是“你能不能把技术落地到真实系统里,并在出问题时定位根因”。
本轮建议你先自己口述或写要点(每题 3-5 分钟),再看参考答案。准备一个interview_notes_day55.md,记录自评分和改进动作。
一、今日学习目标
- 掌握 AI Agent 系统设计题的答题框架:场景 → 架构 → 关键取舍 → 指标与风险。
- 学会从“止损 → 定位 → 根因 → 修复 → 复盘”五步法回答线上故障排查题。
- 能设计多智能体协作的代码审查系统、带记忆客服系统、安全代码执行环境。
- 能分析工具调用失败、Token 暴涨、延迟升高、记忆污染等典型场景。
- 完成第二轮面试复盘,形成自己的系统设计素材库。
二、系统设计题答题框架
建议用4S 框架回答:
- Scenario(场景):用户是谁?核心流程是什么?规模大概多少?
- Solution(方案):分层架构、核心组件、数据流。
- Selection(取舍):为什么选 A 不选 B?成本、延迟、准确性如何权衡?
- Signal(指标):如何评估效果?如何监控和告警?
排查题建议用五步法:
- 止损:先限流、降级、回滚,避免影响扩大。
- 定位:看日志、Trace、指标,缩小范围到模型/工具/网络/数据。
- 根因:区分解析错误、工具错误、权限问题、模型决策错误、数据污染。
- 修复:改 Prompt、加重试、修工具、加校验、换模型。
- 复盘:补监控、补测试、补文档,防止复发。
三、系统设计题(6 题)
题目 1:设计一个多智能体协作的代码审查系统
考察点:多智能体分工、流程编排、工具集成、质量闭环。
参考答案要点:
- 场景:代码提交后自动触发审查,输出问题列表、严重等级、修复建议。
- 角色设计:
- 安全审查员:检查注入、硬编码密钥、危险函数(eval/exec/os.system)。
- 规范审查员:检查 PEP8、命名、注释、复杂度。
- 逻辑审查员:检查边界条件、异常处理、空值、并发问题。
- 汇总员:去重、按严重等级排序、生成最终报告。
- 流程:Webhook 触发 → 拉取 diff → 并行三个审查员 → 汇总员合并 → 输出 PR 评论/工单。
- 技术选型:CrewAI 做顺序/层级编排;如果需要辩论式复核,可用 AutoGen GroupChat 做“审查员 vs 作者”辩论。
- 取舍:并行审查降低延迟但增加 Token 成本;只审查 diff 而非全文件,降低成本;高风险仓库才启用多智能体。
- 指标:问题检出率、误报率、平均审查延迟、开发者采纳率。
常见陷阱:只堆角色,不讲触发方式和输出格式;不区分严重等级。
面试官点评:能说出“只审 diff”“并行 + 汇总”“误报率评估”会体现工程思维。
题目 2:设计一个企业级带记忆的客服系统
考察点:记忆分层、多租户、安全合规、可观测性。
参考答案要点:
- 接入层:API 网关、鉴权、会话管理、限流。
- 路由层:意图分类 → 售前/售后/VIP/人工客服。
- 记忆层:
- 短期记忆:Redis 存会话消息,TTL 过期。
- 长期记忆:向量库按
user_id分片存非结构化记忆;关系库存用户画像、订单、工单。 - 记忆抽取:异步队列处理,避免阻塞主流程。
- Agent 层:专业 Agent + 工具(订单、物流、退款);工具做权限隔离和参数校验。
- 安全合规:敏感信息脱敏、用户可删除记忆、审计日志、多租户隔离。
- 可观测性:LangSmith/LangFuse 追踪、Token/延迟监控、记忆命中率。
- 取舍:同步注入记忆延迟低但可能拖慢响应;异步抽取成本低但有延迟;缓存高频问答降成本。
常见陷阱:只讲 Agent 不讲存储、权限和监控。
面试官点评:能提到“异步记忆抽取”“多租户隔离”“用户可删除记忆”是高级加分项。
题目 3:如何让 Agent 安全地执行用户代码?
考察点:沙箱、权限、资源限制、审计。
参考答案要点:
- 隔离:Docker 容器/微虚拟机(Firecracker/gVisor),禁止网络访问,只挂载临时目录。
- 权限:非 root 用户运行;只读文件系统;禁止危险系统调用。
- 资源限制:CPU/内存/磁盘配额,执行超时(如 10 秒),进程数限制。
- 代码校验:静态扫描危险函数(eval/exec/os.system/subprocess),但静态扫描不能替代沙箱。
- 审计:记录代码、输入、输出、资源消耗;异常行为告警。
- 降级:高风险代码只做静态审查,不执行。
- 指标:执行成功率、超时率、沙箱逃逸告警数。
常见陷阱:只说“用 Docker”但不讲网络隔离和资源限制。
面试官点评:能区分“静态审查”和“动态沙箱”两层防线,是安全意识的体现。
题目 4:设计一个 RAG 知识库问答系统,要求高准确率和低幻觉
考察点:RAG 全链路、检索优化、幻觉控制。
参考答案要点:
- 数据层:文档清洗、按类型切分(Markdown 按标题、FAQ 按问答对)、元数据(来源、时间、权限)。
- 索引层:Embedding 选型(中文优先 BGE/智谱)、向量库(Chroma/FAISS)、混合检索(BM25 + 向量)。
- 检索层:元数据过滤、相似度阈值、MMR 多样性、Rerank 重排序。
- 生成层:Prompt 要求“只根据上下文回答,不知道就说不知道”;引用来源;低温度。
- 评估层:构建问答测试集,计算 Recall@K、答案准确率、幻觉率;LLM-as-Judge + 人工抽检。
- 取舍:Rerank 提升准确率但增加延迟;混合检索提升召回但增加复杂度。
常见陷阱:只讲“切分 + 向量检索”,不讲评估和幻觉控制。
面试官点评:能说出“引用来源”“阈值过滤”“Rerank”会显得有实战经验。
题目 5:设计一个多智能体“迷你软件公司”,如何保证生成代码可运行?
考察点:多智能体闭环、工具执行、迭代修复、质量门禁。
参考答案要点:
- 角色:产品经理、架构师、程序员、评审员、测试员。
- 流程:需求 → 设计 → 编码 → 评审 → 测试 → 不通过则修复迭代。
- 质量门禁:
- 编码后先做语法检查(
py_compile)。 - 评审员检查规范和安全。
- 测试员用沙箱执行代码,跑测试用例。
- 编码后先做语法检查(
- 迭代控制:最大迭代次数 3 次;每轮把测试报告注入修复任务;保留上一版代码支持回滚。
- 取舍:迭代次数多质量高但成本高;只生成 MVP 降低复杂度。
- 指标:首次测试通过率、最终通过率、平均迭代轮数、Bug 密度。
常见陷阱:只讲角色不讲“代码实际执行验证”。
面试官点评:能说出“语法检查 → 评审 → 沙箱测试 → 迭代修复”的层层门禁,是加分项。
题目 6:设计一个 Agent 的可观测性体系
考察点:日志、Trace、指标、告警、评估。
参考答案要点:
- Trace:记录每次 LLM 调用、工具调用、Agent 决策步骤;用 LangSmith/LangFuse/OpenTelemetry。
- 日志:结构化日志(user_id、session_id、step、tool、latency、tokens、error)。
- 指标:QPS、P95 延迟、Token 消耗、工具成功率、解析错误率、记忆命中率、任务完成率。
- 告警:工具失败率突增、Token 成本超预算、延迟 P95 超阈值、死循环检测。
- 评估:离线测试集 + 线上抽样 + LLM-as-Judge + 人工复核。
- 隐私:日志脱敏,敏感字段加密。
常见陷阱:只说“看日志”,没有指标和告警。
面试官点评:能区分“Trace 定位单次问题”和“指标发现趋势问题”是系统思维。
四、场景排查题(4 题)
题目 7:线上 Agent 突然大量调用工具失败,如何排查?
参考答案要点(五步法):
- 止损:限流、降级到纯问答、回滚最近变更。
- 定位:看工具失败率曲线、错误码分布、Trace 中失败步骤。
- 根因分类:
- 工具侧:API 超时、鉴权过期、限流、返回格式变更。
- Agent 侧:Prompt 变更导致参数错误、模型版本变更、工具描述被改。
- 数据侧:订单号格式变化、脏数据。
- 网络侧:DNS、代理、证书。
- 修复:加超时和重试、修参数校验、回滚 Prompt/模型、加降级兜底。
- 复盘:补工具健康检查、参数校验、告警、混沌测试。
常见陷阱:一上来就改 Prompt,不先看错误码。
面试官点评:先止损再定位,体现线上意识。
题目 8:Agent 的 Token 消耗突然暴涨,怎么查?
参考答案要点:
- 看 Trace:哪类请求 Token 高?是输入长还是输出长?
- 常见根因:历史消息未裁剪、检索注入记忆过多、CoT 输出过长、工具返回大段文本、死循环重复调用。
- 修复:滑动窗口/摘要、限制检索 k 和单条长度、限制 max_tokens、压缩工具返回、设置 max_iterations。
- 监控:按用户/会话/工具维度统计 Token,设预算告警。
常见陷阱:只说“换便宜模型”,不定位输入还是输出。
面试官点评:能说出“工具返回大段文本”是常见隐藏成本。
题目 9:用户投诉 Agent“胡说八道”,如何定位和修复?
参考答案要点:
- 复现:拿到会话 ID,看 Trace 中的检索结果、Prompt、模型输出。
- 分类:是检索没召回?还是召回了但模型没用?还是工具返回错误?还是模型幻觉?
- 修复:加强“只根据上下文回答”的约束;加引用来源;提高检索召回;加相似度阈值;低温度;对高风险问题加人工审核。
- 评估:构建幻觉测试集,统计幻觉率。
常见陷阱:只调温度,不查检索和工具。
面试官点评:能区分“检索失败”和“生成幻觉”是核心。
题目 10:多智能体系统里两个 Agent 反复争论,无法收敛,怎么办?
参考答案要点:
- 止损:设置 max_round、最大辩论轮数。
- 机制:裁判 Agent 阶段性总结;自定义发言选择函数控制节奏;要求每次发言必须提出新论据,禁止重复。
- 终止:检测“最终裁决”关键词;连续两轮无新信息则终止。
- 根因:角色 Prompt 过于对立、缺少事实依据、裁判职责不清。
- 修复:给双方注入共享事实数据;裁判提前介入;引入“事实核查员”。
常见陷阱:只加最大轮数,不解决“为什么吵”。
面试官点评:能说出“共享事实”“新论据检测”是高级思路。
五、复盘表与自评
| 题号 | 类型 | 主题 | 自评分 1-5 | 卡壳点 | 改进动作 |
|---|---|---|---|---|---|
| 1 | 系统设计 | 多智能体代码审查 | |||
| 2 | 系统设计 | 企业级记忆客服 | |||
| 3 | 系统设计 | 安全代码执行 | |||
| 4 | 系统设计 | RAG 高准确率 | |||
| 5 | 系统设计 | 迷你软件公司质量门禁 | |||
| 6 | 系统设计 | Agent 可观测性 | |||
| 7 | 排查 | 工具大量失败 | |||
| 8 | 排查 | Token 暴涨 | |||
| 9 | 排查 | 幻觉投诉 | |||
| 10 | 排查 | 多智能体不收敛 |
自评 ≤3 分的题:回到对应 Day 的代码和笔记,写 200 字改进答案,并找一个项目中的证据支撑。
六、今日总结与作业
今天你完成了:
- ✅ 完成第二轮模拟面试的 10 道系统设计与场景排查题。
- ✅ 掌握了 4S 系统设计框架和五步排查法。
- ✅ 建立了系统设计素材库和故障排查清单。
- ✅ 通过自评发现了需要补强的工程知识点。
今日作业(必做):
- 将 10 道题的答案要点整理到
interview_notes_day55.md,标注自评分和待补强点。 - 选一道系统设计题(推荐“企业级带记忆客服”或“多智能体代码审查”),画一张文字架构图,包含接入层、路由层、Agent 层、记忆层、工具层、可观测性。
- 选一道排查题,写出“止损 → 定位 → 根因 → 修复 → 复盘”的完整排查清单,至少 8 条检查项。
- (思考题)如果面试官追问“你的方案里,哪个环节最可能成为瓶颈?你会怎么优化?”,请针对你画的那张架构图,写出一个瓶颈点和优化方案。
明日预告:我们将进入第五阶段的综合实战——把前四个阶段的项目整合成一个“个人 AI Agent 作品集网站”或“项目演示脚本”,并准备 5 分钟的项目讲解。请准备好你的 GitHub 仓库和简历,我们明天继续!
欢迎评论交流!