面试面经 · 微众银行
【微众银行】【Agent 开发】【暑期实习HR面】面经(八股+大模型项目+手撕)
海外一年制硕士,投递微众银行 Agent 开发暑期实习,HR 面约 40 分钟,技术问题占比意外地高,记录如下。
题目摘要
- Go 语言基础:slice 与 array 的区别、slice 扩容机制、map 是否并发安全、如何实现一个并发安全的 map。
- MySQL/Redis 八股:MySQL 索引为什么用 B+ 树而不是 B 树;事务隔离级别与 MVCC 的关系;Redis 缓存穿透、击穿、雪崩的区别与各自解法;Redis 分布式锁的续期问题。
- Agent 项目深挖:RAG 链路里检索召回率低怎么排查;Function Calling 的工具描述怎么写才不容易被模型误调用;多轮对话上下文超长时的裁剪策略。
- 推理成本优化:线上 Agent 单次请求 token 消耗大,从哪些层面降本。
- 手撕算法:LRU 缓存。题意是设计一个数据结构,支持
get(key)和put(key, value),容量满时淘汰最久未使用的键,要求两个操作均 O(1)。关键思路是哈希表 + 双向链表:哈希表存 key 到链表节点的映射,双向链表维护访问顺序,get 命中后把节点移到头部,put 时若超容量则删尾节点。面试官要求手写双向链表的节点定义和指针操作,不能只写伪代码。
项目深挖
追问一:你简历里写 RAG 系统提升了回答准确率,具体怎么量化的?
参考回答方向:不要只说"感觉变好了"。要说清评测集怎么构造——是从真实用户 query 里采样了多少条、人工标注了标准答案,还是用 LLM 做 pairwise 对比。指标上分两层:检索层看 Recall@k 和 MRR,生成层看答案是否包含 ground truth 关键信息点。然后说明改动前后的对比数字,比如 Recall@5 从 0.62 提到 0.81,是加了 query 改写还是换了 embedding 模型还是加了 rerank。面试官想听的是你有没有真正做过 A/B 对比,而不是堆技术名词。
追问二:Function Calling 里模型选错工具或者参数填错,你怎么处理?
参考回答方向:先分清楚是工具描述的问题还是模型能力的问题。工具描述层面,name 要语义明确,description 要写清楚"什么时候用、什么时候不用",参数用 enum 限定取值范围,必填项标 required。工程层面加一层校验:参数类型和范围在调用前做 schema 校验,不合法就回传给模型让它重试,而不是直接抛错给用户。再往上可以做 fallback,比如模型连续两次选错工具就降级到规则匹配。可以补一句:工具数量超过 10 个以后误调用率明显上升,所以做了工具分组,先让模型选大类再选具体工具。
追问三:多轮对话上下文越来越长,你怎么控制?
参考回答方向:分几种策略讲。一是滑动窗口,只保留最近 N 轮,但会丢早期关键信息;二是摘要压缩,把早期对话用模型总结成一段话保留;三是关键信息抽取,把用户提到的实体、约束条件结构化存下来,每轮拼进 prompt。实际用的是组合策略:近 3 轮原文保留,更早的做摘要,同时把结构化槽位单独维护。还要提一句 token 计费和延迟的权衡——上下文越长首 token 延迟越高,所以不是无脑塞。
准备建议
- 八股要能往项目上引。背 MySQL 索引和 Redis 缓存问题的时候,想清楚自己的 Agent 项目哪里用到了这些。比如 RAG 的向量库和业务库怎么配合、对话历史存 Redis 用什么数据结构、缓存和数据库一致性怎么保证。HR 面问八股往往不是考背诵,是看你能否把基础知识落到实际系统里。
- 把 Agent 项目的每个技术选型都准备好"为什么"。为什么用这个 embedding 模型、为什么用向量检索而不是关键词、chunk size 怎么定的、rerank 模型选的哪个。面试官会顺着你的回答往下钻两层,答不上来比没做过还减分。
- 手撕算法按 O(1) 设计类题目重点准备。LRU、LFU、设计限流器、设计线程安全队列这几类高频。Go 的话把 container/list 的用法和手写双向链表的指针操作都练熟,面试时不要依赖标准库,面试官可能要求手写底层结构。
一面通过,5 天后约了二面(技术面)。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。