面试面经 · 黑芝麻智能
【黑芝麻智能】【Agent 开发】【暑期实习一面】面经(八股+大模型项目+手撕)
海外一年制硕士,投递黑芝麻智能 Agent 开发暑期实习,一面约 60 分钟,技术面为主,面试官是团队里做 Agent 平台的工程师,全程共享屏幕写代码。
题目摘要
- Go 语言基础:
slice的底层结构、扩容规则,以及append在函数传参场景下的经典坑(值传递 + 底层数组共享导致调用方看不到长度变化)。 - Go 并发:
channel有缓冲/无缓冲的区别,select的随机性,context如何做超时取消并向下游传递。 - MySQL 八股:聚簇索引与二级索引的区别,回表是什么,什么情况下会走覆盖索引;
EXPLAIN里type字段从好到坏的排序。 - Redis 八股:缓存穿透/击穿/雪崩的区别与各自解法,
SETNX实现分布式锁为什么要配过期时间、为什么解锁要用 Lua。 - Agent 项目深挖:RAG 检索链路的分块策略与召回评估、Function Calling 的工具描述怎么写、多轮对话的上下文裁剪与推理成本优化。
- 手撕算法:LRU 缓存(LeetCode 146)。题意是设计一个容量为
capacity的缓存,支持get(key)和put(key, value),两者都要求 O(1)。关键思路是哈希表 + 双向链表:哈希表存 key 到链表节点的映射,双向链表维护访问顺序,头部是最近使用、尾部是最久未使用,get命中后把节点移到头部,put时若容量超了就删尾节点并从哈希表移除对应 key。面试官额外追问了「为什么不用单链表」和「Go 里怎么用container/list快速实现」。
项目深挖
简历上写了一段基于 RAG 的文档问答 Agent,面试官基本是顺着简历往下钻,问得比较细。
追问一:你的分块策略是什么,为什么这么选?
参考回答方向:先说清楚文档类型(比如是产品手册还是技术文档),再说分块不是固定字数切,而是按标题层级做语义分块,超长段落再按句子边界二次切分,块之间保留一定 overlap 防止语义被截断。然后主动补一句「我们对比过固定 512 token 和按结构分块,后者在召回率上有提升,但块数量变多、检索延迟上升」,把权衡讲出来,比只讲做法更有说服力。如果被问到怎么评估,就说构造了一批「问题-标准答案所在块」的评测集,看 Hit Rate 和 MRR,而不是只看最终回答对不对。
追问二:Function Calling 的工具你是怎么定义的?模型调错工具怎么办?
参考回答方向:工具描述要写清楚「什么时候用」,而不只是「这个工具干什么」。比如查天气的工具,描述里要写明「当用户询问某城市当前或未来天气时调用」,参数用 JSON Schema 约束类型和枚举值,减少模型自由发挥。模型调错工具通常有三个原因:工具之间职责重叠、描述模糊、参数缺失。解法是合并语义相近的工具、在描述里加反例、对必填参数做校验并在缺失时把错误信息回传给模型让它重试。可以补一句「我们限制了单轮最大工具调用次数,防止死循环烧 token」。
追问三:多轮对话上下文越来越长,你怎么控制成本和延迟?
参考回答方向:分几层讲。第一层是裁剪,保留 system prompt + 最近 N 轮 + 与当前问题相关的历史片段,历史片段用向量检索挑,而不是无脑全带。第二层是压缩,把久远的对话用模型总结成摘要,摘要随轮次滚动更新。第三层是缓存,system prompt 和固定知识用 prompt caching 命中缓存,只对变化部分付费。最后提一句监控:记录每轮的 input/output token 数和首 token 延迟,设阈值告警,不然成本是悄悄涨上去的。
准备建议
- 八股不要背结论,要能讲出「为什么」。比如被问回表,不要只答「二级索引查完要回聚簇索引再查一次」,要能说清楚 InnoDB 二级索引叶子节点存的是主键值,所以非覆盖索引查询必须回表,以及为什么
SELECT *容易导致回表、SELECT id, name可能走覆盖索引。面试官很爱在结论后面追一句「为什么」。
- Agent 项目准备一个「可量化的故事」。不要只说「我做了个 RAG」,要准备好三组数字:检索召回率大概多少、端到端延迟多少、单次调用 token 成本多少,以及你做了什么优化让某个指标变好。哪怕数字是估算的,也要能说清测量方法。面试官对「我优化了性能」这种空话完全不买账。
- 手撕题按「先讲思路再写代码」的节奏练。LRU 这种题思路不难,但现场容易在链表指针操作上写错。建议提前用 Go 手写一遍哈希表 + 双向链表版本,再用
container/list写一遍,面试时先花 30 秒说清楚数据结构和操作复杂度,再动手。写完主动跑一两个边界用例(容量为 1、连续 put 同一个 key),比等面试官挑错加分。
一面整体偏基础 + 项目,没有问太偏的分布式或系统设计。面试官反馈「项目讲得比较清楚,八股再扎实一点」。一面通过,3 天后约了二面。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。