NiceOffer

面试面经 · 网易

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

网易面经Agent 开发实习

海外一年制硕士,投递网易某事业部 Agent 开发暑期实习,一面约 60 分钟,视频面,面试官是组内做 Agent 平台方向的工程师,全程共享屏幕写代码。

题目摘要

  1. Go 语言基础:slice 的底层结构与扩容策略,append 在什么情况下会触发底层数组复制;map 是否并发安全,sync.Map 的适用场景。
  2. MySQL:聚簇索引与二级索引的区别,什么情况下会走覆盖索引;EXPLAIN 里 type=range 和 type=index 的含义差异。
  3. Redis:缓存穿透、击穿、雪崩三者的区别与对应方案;ZSET 的底层实现(跳表 + 哈希表)以及为什么不用红黑树。
  4. Agent 项目深挖:RAG 链路里检索召回率低怎么定位;Function Calling 的工具描述(tool schema)怎么写才不容易让模型选错工具;多轮对话上下文超长时的裁剪策略。
  5. 推理成本优化:如何在保证效果的前提下降低单次请求的 token 消耗,有没有做过 prompt 缓存或结果缓存。
  6. 手撕算法:给一个整数数组 nums 和一个整数 k,求所有和为 k 的连续子数组个数(元素可正可负)。关键思路:前缀和 + 哈希表,遍历时用 map[prefixSum] 记录前缀和出现次数,对每个位置查 prefixSum - k 是否出现过,时间复杂度 O(n)。面试官追加要求:如果数组全是正数,能不能用滑动窗口,并说明两者适用边界。

项目深挖

简历上写了一段基于 RAG 的知识库问答 Agent,面试官基本围着这一段问了 20 多分钟,追问密度很高。

追问一:你说检索召回率提升了,具体怎么衡量的?

参考回答方向:不要只说"感觉变好了"。要给出可量化的口径,比如构造了一个 100~200 条的评测集,每条标注了标准答案所在的 chunk,用 Recall@5 和 MRR 来衡量。然后说明改动点:一是 chunk 切分从固定长度改成按语义/标题层级切,二是加了 query 改写(把用户口语化问题改写成检索友好的 query),三是混合检索(向量 + BM25)后做 RRF 融合。每项改动分别带来多少提升要能说清楚,哪怕数字不精确,也要有对比实验的意识。

追问二:Function Calling 里模型选错工具,你怎么解决?

参考回答方向:先定位是工具描述问题还是模型能力问题。常见做法是:工具名和 description 写清楚"什么时候用、什么时候不用",参数用 enum 收敛取值范围,减少自由文本参数;工具数量多的时候做分层路由,先用一次轻量调用判断意图类别,再在子集里选工具;对高频错误加 few-shot 示例。还可以提一句:如果模型支持并行工具调用,要在 prompt 里明确约束调用顺序和依赖关系,避免它把有依赖的两个工具并行执行。

追问三:上下文超长了怎么处理?

参考回答方向:分层说。第一层是滑动窗口保留最近 N 轮;第二层是对早期对话做摘要压缩,把摘要作为 system 或首轮上下文注入;第三层是把工具返回的大结果(比如长文档)只保留关键字段或做二次摘要,不要把原始 JSON 全塞回去。要强调裁剪策略要保住"当前任务的目标和已确认的约束",否则模型会反复问已经确认过的信息。如果做过 token 计数和预算分配(比如 system 占多少、历史占多少、检索结果占多少),可以展开讲。

准备建议

  1. 八股按"能画图 + 能说边界"准备。MySQL 索引和 Redis 数据结构这两块,不要背结论,要能在纸上画出 B+ 树和跳表的插入过程,并且能回答"为什么这里不用另一种结构"。面试官很爱在你说完结论后追问一句"那为什么"。
  1. Agent 项目准备一份"问题—定位—方案—验证"四段式讲稿。每个技术点都按这个结构组织,尤其是 RAG 和 Function Calling,面试官几乎必问"你怎么知道改有效"。提前想好 2~3 个失败案例和你怎么排查的,比只讲成功经验更加分。
  1. 算法保持手感,重点练前缀和、滑动窗口、双指针、二叉树遍历。网易一面手撕通常一道中等题,要求写完能跑通并说清复杂度,可能追加一个变体。LeetCode Hot 100 刷熟即可,但每道题要能口述思路再动手,避免边写边想。

一面通过,三天后约了二面。

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