NiceOffer

面试面经 · 腾讯

【腾讯】【Agent 开发】【暑期实习一面】面经(八股+大模型项目+手撕)

腾讯面经Agent 开发实习

海外一年制硕士,投递腾讯 CSIG 某 Agent 平台组暑期实习,3 月中旬线上一面,时长 70 分钟,面试官是组里做 Agent 框架的资深工程师。

题目摘要

  1. Go 语言基础:slice 的底层结构、扩容规则;defer 与返回值的执行顺序(命名返回值陷阱);map 并发读写为什么 panic,如何用 sync.Map 或分片锁规避。
  2. MySQL / Redis 八股:MySQL 联合索引最左前缀 + 回表 + 覆盖索引;RR 隔离级别下间隙锁怎么加;Redis 缓存穿透/击穿/雪崩的区分与对应方案;Redis 分布式锁为什么要用 Lua 保证原子性、看门狗续期怎么实现。
  3. Agent 项目深挖:RAG 检索链路(切分策略、embedding 选型、rerank、召回评估);Function Calling 的工具注册、参数校验、多轮工具调用循环终止条件;长对话上下文管理(摘要压缩、滑动窗口、token 预算分配);推理成本优化(prompt 缓存、小模型路由、批处理)。
  4. 手撕算法:LRU 缓存。题意:设计一个容量为 capacity 的缓存结构,支持 get(key) 和 put(key, value),两者都要求 O(1) 时间复杂度,超出容量时淘汰最久未使用的键。关键思路:哈希表 + 双向链表,哈希表存 key 到链表节点的映射,链表头放最近使用、尾部放最久未使用;get 命中后把节点移到头部,put 时若 key 存在则更新并移到头部,不存在则新建插入头部,超容则删尾节点并同步删哈希表项。面试官追问了并发场景下怎么加锁(分段锁 or 读写锁)、以及能不能用 container/list 直接实现。

项目深挖

简历上写了一个「基于多工具调用的智能客服 Agent」,面试官基本全程围绕这个问,三个追问印象最深。

追问一:你的 RAG 召回率怎么评估的?
参考回答方向:不能只说"效果不错"。要给出评估集构造方式——从历史工单里抽 200 条真实 query,人工标注标准答案文档,算 Recall@5 和 MRR。然后说明调优动作:一开始固定 512 token 切分导致跨段语义断裂,改成按标题层级 + 语义边界切分,召回率从 0.62 提到 0.78;加了 bge-reranker 做二阶段精排后 MRR 提升明显。面试官会顺着问"rerank 增加了延迟你怎么权衡",要能答出:只在 top-20 召回后做精排,控制 rerank 输入规模,延迟增加约 80ms 可接受,或者对简单 query 走快路径跳过 rerank。

追问二:Function Calling 多轮循环怎么保证一定会停?
参考回答方向:这是 Agent 落地最容易出 bug 的地方。要答出三层防护——第一,设置最大迭代轮数(比如 8 轮)硬截断;第二,检测工具调用结果是否与上一轮重复,重复则判定进入死循环并强制让模型基于已有信息作答;第三,在 system prompt 里明确"信息足够时直接回答,不要为了调用而调用"。还可以补充:工具返回错误时不要把原始堆栈丢给模型,而是包装成结构化错误信息,否则模型容易反复重试同一个失败工具。

追问三:上下文越来越长,token 成本怎么压?
参考回答方向:分几块讲。历史对话用"最近 N 轮原文 + 更早轮次摘要"的混合策略,摘要由小模型异步生成;工具描述和 system prompt 这种固定前缀走 prompt caching,命中缓存的部分按更低价格计费;简单意图识别和槽位抽取用小模型(如 7B 级别)路由,只有复杂推理才走大模型。要能给出量级,比如优化后单次会话平均 token 从 6k 降到 2.5k,成本下降约 60%。面试官如果追问"摘要会不会丢信息",答:摘要只压缩闲聊和已确认信息,关键实体(订单号、用户诉求)用结构化字段单独存,不依赖摘要。

准备建议

  1. 八股要能"往下追两层"。比如被问 Redis 分布式锁,不要停在 SETNX + 过期时间,要主动讲清楚:为什么 value 要存唯一标识(防止误删别人的锁)、为什么释放锁要用 Lua、锁过期但业务没执行完怎么办(看门狗续期或 fencing token)。面试官几乎必然会追问第二层,提前把每个八股的"为什么"和"边界情况"过一遍。
  1. Agent 项目准备一版"数据化叙事"。把项目里的每个技术决策都配上前后对比数字:召回率、延迟、token 成本、准确率。没有真实数据的,面试前用测试集跑一遍补上。面试官对"我用了 RAG"没兴趣,对"我为什么这么切分、效果差多少、怎么改的"才有兴趣。
  1. 手撕题按题型刷,不要按题号刷。LRU、LFU、线程安全单例、生产者消费者、限流器这几类在 Agent/后端岗高频出现,每类手写 2-3 遍到肌肉记忆,重点练边界(容量为 0、重复 put 同一个 key、并发读写)。腾讯手撕通常要求可运行、边界正确,写完主动说一遍时间复杂度和测试用例,能加分。

一面通过,3 天后约了二面(交叉面,偏系统设计)。

想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。