面灵AI→

字节跳动 Agent 算法 一面二面:RAG、记忆分层与上下文压缩

轮次
一面、二面
时间
2026-10
来源
牛客网

《面试题目》

  1. 选一个你参与最深的 Agent 项目,讲清楚它的用途和你的工作。
  2. 项目里最难处理的问题是什么?你具体改了哪里?
  3. 如果现在重新做这个 Agent,你会优先重构哪一部分?
  4. 你会用什么标准判断一个 Agent 已经具备企业使用的条件?
  5. ReAct 和 Plan-Execute-Replan 的执行过程有什么区别?
  6. 怎样比较 DeepSeek harness 和 pi 的设计?
  7. 什么情况下给 Agent 接入 RAG,什么情况下适合把知识整理成 Skill?
  8. 从用户提出问题开始,完整走一遍项目里的检索流程。问题怎样进入检索链路?
  9. 文档切块大小是怎样确定的?你依据哪些因素设置 Chunk 的范围?
  10. 一个 Chunk 同时包含相关内容和大量无关内容时,你会怎样处理?
  11. 拿到一批格式杂乱、缺少统一结构的外部文档,怎么整理成可检索的知识?
  12. 多种检索方式同时使用时,最终结果怎样选出来?
  13. 你怎样证明检索效果达到了项目要求?
  14. 你会怎样给 Agent 的记忆分层?每一层保存什么信息,分别服务于哪些场景?不同层之间有哪些使用约束?
  15. 项目里的上下文压缩是怎样实现的?在什么情况下开始压缩?压缩过程具体做什么?
  16. 哪些信息必须在压缩后继续保留?结合记忆分层说明保留规则。
  17. 对于不能压缩或不能丢失的信息,你怎样在实现中落实这些约束?
  18. 你对 Claude Code 的上下文压缩机制了解多少?
  19. Computer Use 放到云电脑上运行时,整条交互链路是什么样的?
  20. 用一个实际开发任务,介绍你的 AI Coding 工作流。从接到需求到完成实现,你在哪些环节使用 AI?
  21. 如果进一步围绕 Agent 的能力安排开发过程,你会怎么改?
  22. 你怎样理解 SDD?实际用过哪些相关工具?
  23. 团队是否自己搭建过 AI Coding 或 SDD 相关框架?
  24. 让 AI 参与性能测试时,你怎样设计 Prompt 和验证方案?
  25. 你认为 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 最难的是跨文件上下文、隐式约束和验证闭环,改进方向是缩小任务、补测试、让模型先解释再改。