Agent面经
Hello!好久没见,这段时间在准备期末周并且进行了一场Agent面试,这篇帖子就分享一下。先说一下背景吧,本人本科大二,当时做的是一个面向开源社区的重复 Issue 智能分诊项目。项目核心还是 RAG:通过混合检索和重排,判断新 Issue 属于 duplicate、similar 还是 new,并返回相关 Issue。
1. 自我介绍——介绍一下你的项目。
2. 为什么用混合检索? 纯 BM25 或纯向量会造成什么问题?
3. 版本号多的 issue(如 Python 项目指定库版本),更适合 BM25 还是 BGE 向量?为什么?
- ↳ 追问:如果版本号/前置条件占了 issue 的 50%-70%(为了让别人复刻),真正讲问题的内容很短,这种情况怎么办?
4. 你的 chunk 本身是什么粒度?切块策略是什么?
5. 混合检索时,你用的粒度是怎么对齐的?
- ↳ 追问:有些 issue 被切成 3 个 chunk、有些 1 个,会有重复;一边返回 Top30 issues、一边返回 Top30 chunks,一个 chunk ≠ 一个 issue,这怎么处理?
6. issue 的结构化字段(title、number、tags 如 "good first issue")你有没有做专门处理?
- ↳ 追问 a:字段和 issue 正文,你给同样的权重吗?
- ↳ 追问 b:你具体提取了哪些元数据?
- ↳ 追问 c:元数据是放在每一个 chunk 里面吗?
7. 数据清洗做了什么? 基于 GitBugs,你做了哪些前期清洗?
8. 低置信度触发条件边,具体怎么做的?(LangGraph 四节点)
- ↳ 追问:置信度怎么评估?什么样的答案算不好、什么样算及格?
9. 只有一句话的极短 issue(想提建议 / 懒得写长)怎么办?
- ↳ 追问:内容就几个字,丢给 LLM 扩写,怎么保证不出现幻觉?(引入 LLM 就有幻觉风险
10. 重写 query 一定会有更好的结果吗? 什么样的数据会触发重写?
- ↳ 追问 a:低置信度的原因不只是 query 写得不好,也可能是 rerank 或 BM25/向量那一步不对,不是吗?
- ↳ 追问 b:你反思重写的 prompt 是什么?有没有把上一轮 Top5 的失败结果喂给 LLM?
- ↳ 追问 c:你说"重排序靠前的比较好"——这个有没有一个评估标准?
11. 你有没有构建负样本(negative 样本)? 或专门构造一批"检索出来是不好的"样本?
二、通用 Agent 八股
12. 说说你对 Harness 的了解。
13. 讲讲 Skills——解决了什么问题?又带来什么问题?(优缺点)
14. Skills 多了,如何避免召回精度下降,可以采用那些方法?