字节 Agent 日常实习一面:Coding项目与记忆(2026 年 8 月)
面经与参考答法
字节 Agent 日常实习一面:Coding项目与记忆(2026 年 8 月)
公司:字节跳动;招聘方向:Agent;项目焦点:Coding Agent;招聘场景:日常实习。原文记一面 8.13、二面 8.16,未在日期文字中注明年份;帖子发表于 2026 年 8 月。二面没有公开具体题目,只按一次应聘过程登记。
背景、经历及提问范围来自候选人自述,未独立证实。原题按可见记录归纳;各题下的答题思路为教学整理,不代表作者实际作答或企业标准答案。
教学演算:先走一次具体任务
教学小任务是只允许修改src/sum.ts,把sum(2,3)期望5的失败修复。初态验收结果为actual=23;模型读取函数发现字符串连接,提出对输入做数字转换,执行器先检查允许路径再编辑,在隔离夹具运行测试。若工具返回expected=5,actual=5,仍要检查diff及其他边界;若返回NaN,就把错误、输入和attempt写入状态再决定澄清或修正,不能说完成。超过预算保存失败原因;没有新证据时不重复无效修改,但允许按合同重试失败读请求。此为未执行的教学设定,原帖未给该任务。
(1)怎样介绍 Coding Agent 项目与整体架构?
用“目标—主链路—关键状态—质量指标”回答:用户任务先进入规划或决策节点,再由模型选择工具,执行器隔离副作用,观察结果写回状态,循环至完成或触发终止条件。说明代码检索、编辑、测试、审批各由谁负责,以及 run、step、tool call 如何追踪。最后给出任务成功率、平均轮次、延迟和成本,避免只罗列框架。
延伸阅读:Coding Agent 的架构与执行循环。
(2)ReAct 与 Plan 模式有什么区别?
原文只称Plan模式;以下用Plan-Execute作为教学解释,不认定作者框架采用该实现。
ReAct 每轮根据最新观察决定下一步,适合环境反馈强、路径难预估的探索任务,但容易重复尝试。Plan-Execute 先拆分步骤再执行,适合依赖关系清晰的长任务,代价是初始计划可能过时。工程上常采用混合模式:先产出粗计划,每步执行后校验,并在证据变化、连续失败或依赖失效时局部重规划。
延伸阅读:ReAct:推理与行动循环、任务规划、分解与动态重规划。
(3)上下文超限时怎样压缩,又怎样避免遗忘需求?
先为系统约束、用户目标、未完成计划、关键决策和最新工具证据预留硬预算;可重取的大段日志、重复对话和已完成过程只保留摘要与引用。压缩结果应结构化记录“不可丢约束、事实、待办、证据位置”,并用原始消息 ID 回溯。压缩后做一次约束核对,重要需求还应进入独立任务状态,而不是只藏在自然语言摘要里。
延伸阅读:上下文压缩、摘要与裁剪。
(4)路径震荡和重复尝试为什么发生?
常见原因是目标或成功判据不清、工具错误没有分类、观察结果未进入状态,以及每轮都从相同信息重新决策。可以为动作生成稳定指纹,发现没有新证据的重复失败;合法状态轮询与有界幂等重试不能一概阻止,副作用另需稳定幂等身份;记录失败原因与已尝试方案;设置最大轮次、超时和成本预算;连续失败时切换工具、重规划或交给人工。终止条件必须由可验证结果驱动,而非模型自称完成。
(5)完整的 Agent 记忆系统怎样设计?
短期记忆保存当前会话消息、计划和工具结果;长期记忆保存跨会话仍有效的偏好、事实和经验。写入前要提取、分类、去重、做权限与时效判断;检索时结合语义相似度、时间、重要性和用户范围;使用后记录引用,支持纠错、遗忘和审计。上下文是本次推理的工作集,长期记忆是可检索存储,二者不能等同。
延伸阅读:Agent 记忆系统架构设计、短期记忆、长期记忆与检索。
(6)MCP 调用工具的流程是什么,工具很多或返回过大怎么办?
客户端先发现服务器暴露的工具及输入 Schema,模型选择工具并生成参数,宿主先鉴权,再由MCP client发tools/call请求,MCP server执行被允许工具并返回结果,宿主关联调用并交给模型。工具多时先按任务或权限做候选召回,只注入少量描述;结果过大时在工具侧分页、过滤、聚合,把原文存为可追踪引用。任何裁剪都要保留错误码、关键证据和继续读取所需的游标。
延伸阅读:MCP / A2A 智能体通信协议、工具发现、选择与路由。
(7)为什么用小模型处理记忆、压缩或初步召回?Prompt Cache 又如何提效?
分类、摘要和粗排往往目标明确、可校验,小模型可降低延迟与成本;但需用抽样评测约束事实遗漏,并把低置信结果升级给大模型。这里只说明前缀计算复用的共有概念,不给缓存命中时长、费用或跨模型可复用保证。以Claude平台官方当前文档为一个实现参考,缓存按其请求结构和模型支持范围配置;稳定部分放前、动态输入放后仍需满足所选接口规则。原帖未披露供应商/型号,不能据此认定作者项目。
原帖还问车载Agent为何可能用小模型作初步召回:车载延迟、算力和连接约束下可先筛候选,但必须以实际领域查询验证漏召回和最终任务;小模型不自动更准或总是更快。完整模型、设备和性能未公开,不补造。知识导航:RAG 评估与优化、模型能力评估与选型。
(8)Multi-Agent 怎样分工、通信并避免文件冲突?
按能力与副作用边界划分职责,由协调者分配带输入、验收条件和预算的任务。通信使用结构化消息或共享状态,明确消息 ID、版本和超时,避免互相转发而无人负责。并发改文件时可按目录声明所有权、使用隔离工作区,合并前检查基线版本;冲突时由单一整合者处理,不能让多个 Agent 覆盖同一工作树。
延伸阅读:多 Agent 消息、共享状态与协作协议。
(9)优化 Coding Agent 应先看哪些方向?
先用真实任务集定位瓶颈,再依次检查上下文有效性、工具选择与参数正确率、失败恢复、循环收敛、沙箱安全、延迟和成本。一次只改变一个主要变量,比较任务成功率与回归样本;没有评测闭环的 Prompt 或模型升级,很难证明是真优化。
(10)怎样判断一棵二叉树是否平衡?
后序遍历同时计算高度;任一子树已失衡,或左右高度差大于 1,就向上返回失败标记,避免对每个节点重复求高。
下面为未在完整项目运行的代码示意。
function isBalanced(root: TreeNode | null): boolean {
function height(node: TreeNode | null): number {
if (!node) return 0;
const left = height(node.left);
if (left === -1) return -1;
const right = height(node.right);
if (right === -1 || Math.abs(left - right) > 1) return -1;
return Math.max(left, right) + 1;
}
return height(root) !== -1;
}
时间复杂度为 $O(n)$,递归栈空间为 $O(h)$。
面试口述与教学追问
口述要点:模型根据观察改计划,执行器检查权限,测试和业务要求判终态;工具结果回到状态才有下一步依据,缓存或压缩不能省略验收与约束。
下面是模拟变条件追问,不是来源面经原题:
- 某工具返回超大日志,直接截断前一千字够吗?——保留错误位置、证据引用和读取游标,按问题选择内容,再验证缺失信息是否影响验收。
- 模型说完成但测试失败,可以终止为成功吗?——读取实际验收结果并保留失败状态,模型自述不等于服务端终态。
整理答案的核验资料
核验于 2026-10-02。LangGraph 为滚动文档;MCP使用2026-07-28规范,MySQL使用8.4。未声称执行了作者的项目或复现其面试。
- MCP 工具调用合同
- LangGraph persistence
- ReAct原论文:观察与行动循环(2022研究范围,不是所有工程取舍定律)
- Claude Prompt caching:请求结构与缓存条件(滚动文档,核验于2026-10-02,未采用默认时长或价格)