字节跳动 Agent 算法 一面二面:RAG、记忆分层与上下文压缩
- 轮次
- 一面、二面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 选一个你参与最深的 Agent 项目,讲清楚它的用途和你的工作。
- 项目里最难处理的问题是什么?你具体改了哪里?
- 如果现在重新做这个 Agent,你会优先重构哪一部分?
- 你会用什么标准判断一个 Agent 已经具备企业使用的条件?
- ReAct 和 Plan-Execute-Replan 的执行过程有什么区别?
- 怎样比较 DeepSeek harness 和 pi 的设计?
- 什么情况下给 Agent 接入 RAG,什么情况下适合把知识整理成 Skill?
- 从用户提出问题开始,完整走一遍项目里的检索流程。问题怎样进入检索链路?
- 文档切块大小是怎样确定的?你依据哪些因素设置 Chunk 的范围?
- 一个 Chunk 同时包含相关内容和大量无关内容时,你会怎样处理?
- 拿到一批格式杂乱、缺少统一结构的外部文档,怎么整理成可检索的知识?
- 多种检索方式同时使用时,最终结果怎样选出来?
- 你怎样证明检索效果达到了项目要求?
- 你会怎样给 Agent 的记忆分层?每一层保存什么信息,分别服务于哪些场景?不同层之间有哪些使用约束?
- 项目里的上下文压缩是怎样实现的?在什么情况下开始压缩?压缩过程具体做什么?
- 哪些信息必须在压缩后继续保留?结合记忆分层说明保留规则。
- 对于不能压缩或不能丢失的信息,你怎样在实现中落实这些约束?
- 你对 Claude Code 的上下文压缩机制了解多少?
- Computer Use 放到云电脑上运行时,整条交互链路是什么样的?
- 用一个实际开发任务,介绍你的 AI Coding 工作流。从接到需求到完成实现,你在哪些环节使用 AI?
- 如果进一步围绕 Agent 的能力安排开发过程,你会怎么改?
- 你怎样理解 SDD?实际用过哪些相关工具?
- 团队是否自己搭建过 AI Coding 或 SDD 相关框架?
- 让 AI 参与性能测试时,你怎样设计 Prompt 和验证方案?
- 你认为 AI Coding 最难做好的是哪个环节?用亲身例子解释困难在哪里,以及你尝试过哪些改进。
《参考解析》
Agent 项目与范式:讲项目先定边界:用户是谁、输入输出是什么、哪些步骤由模型决策、哪些由代码保证、失败怎么恢复。ReAct 是「推理—行动—观察」循环,适合边查边改、工具反馈能指导下一步的任务;Plan-Execute-Replan 先出计划再执行,适合步骤多、依赖清晰、需要人工审核计划的任务,缺点是计划可能过时。企业可用标准不是「能跑」,而是权限可控、结果可评估、失败可恢复、成本可预算、行为可审计。
RAG 与 Skill:RAG 适合知识量大、更新频繁、需要引用的场景;Skill 适合流程固定、需要模型按步骤执行的方法论。两者可以组合:Skill 规定「怎么查、怎么验」,RAG 提供「查什么」。切块要按文档结构、语义完整性和检索粒度定,不能只按固定字数;一个 chunk 混入大量无关内容时,可以做父子块、句窗检索、重排或让模型先抽取再索引。多路召回后用 RRF、加权分数或 cross-encoder 重排融合,最终用标注集看 recall@k、MRR、答案正确率和引用准确率。
记忆与压缩:记忆可以分三层:工作记忆保留当前任务的状态和最近对话;情景记忆存历史交互和工具结果,按时间/重要性检索;语义记忆存稳定事实、用户偏好和领域知识。压缩前先保留系统约束、用户显式要求、未完成任务、关键实体和工具返回值;压缩后要能回查原文。不能丢的信息用结构化状态机或外部存储兜底,而不是指望摘要模型。Claude Code 的压缩本质也是保留近期消息、工具结果摘要和关键文件上下文,细节可以按「保留什么、丢弃什么、怎么恢复」讲。
Computer Use 与 AI Coding:云电脑链路是模型看截图/DOM/可访问性树,输出坐标或结构化动作,执行层在云主机上点击/输入,再把新状态回传,循环直到完成;要处理分辨率、延迟、弹窗、权限和失败重试。AI Coding 工作流可以按「需求澄清—方案—拆任务—生成—测试—review—提交」讲,重点是人在哪些节点把关。SDD 的价值是把需求和验收标准变成可执行契约。AI 最难的是跨文件上下文、隐式约束和验证闭环,改进方向是缩小任务、补测试、让模型先解释再改。