月之暗面Kimi大模型应用开发面试经历:RAG+Agent+Prompt Engineering全考察

大模型应用作者: 美历团队

2年AI应用开发经验面试月之暗面Kimi大模型应用开发岗位,三轮技术面详细复盘,涵盖Prompt Engineering实战、RAG系统架构与优化、Agent框架设计等核心考点

背景介绍

我做了2年AI应用开发,之前在一家创业公司负责智能客服和知识库产品的开发,主要用GPT的API做对话系统和文档问答。大模型应用层爆火之后,我一直在研究RAG、Agent这些方向,也自己搞过一些开源项目。月之暗面的Kimi当时风头正劲,长上下文能力特别强,我看到他们在招大模型应用开发工程师,觉得特别对口,就投了。结果三天就约了面试,效率很高。

面试流程复盘

一面:LLM基础 + Prompt Engineering(约1小时)

一面的面试官比较年轻,应该是团队里的核心开发。开场先聊了聊我对大模型应用开发的理解,然后直接进入技术问题。

第一个问题:大模型的Temperature参数对生成结果有什么影响?这个比较基础,我回答了Temperature越高生成越随机、越低越确定,还补充了top-p采样的配合使用。面试官追问了什么场景下该用高Temperature,什么场景该用低Temperature,我说创意生成用高、事实问答用低,他点了点头。

接下来是Prompt Engineering的实战题:给你一个需求,让大模型从一段文本中提取结构化信息,你怎么设计Prompt?我现场写了一个Few-shot的Prompt,包含了角色设定、输出格式要求、示例。面试官看了之后问如果模型输出格式不稳定怎么办,我说了用JSON Mode、添加格式约束、后处理兜底几个方案。

还问了一个很有意思的问题:Chain-of-Thought和Tree-of-Thought的区别是什么?我从推理路径的广度和深度做了对比,CoT是线性推理,ToT是树状搜索,面试官追问什么场景下ToT比CoT更合适,我说了需要多步探索和回溯的复杂推理任务,比如数学证明、游戏策略。

最后问了一个工程题:大模型API的并发限流怎么处理?我说了令牌桶算法、请求队列、多Key轮换、降级策略,面试官觉得方案比较全面。

二面:RAG + 向量数据库(约1.5小时)

二面是RAG方向的技术专家,问得非常深入。

开场就是:请完整描述RAG系统的架构。我从文档解析、分块、向量化、索引构建、检索、重排序、生成一路讲下来,面试官在每个环节都追问了细节。

文档分块策略有哪些?怎么确定chunk size?我介绍了固定大小分块、语义分块、递归分块几种方式,说chunk size要根据模型上下文长度和检索精度来权衡。面试官追问分块时怎么保持语义完整性,我说了用句子边界切分、添加重叠区域、元数据标注等方法。

向量数据库怎么选型?Milvus、Pinecone、Weaviate各有什么特点?我从开源/托管、性能、生态几个维度做了对比。面试官特别关注Milvus的索引类型选择,我介绍了IVF_FLAT、IVF_SQ8、HNSW各自的适用场景,他似乎比较满意。

然后是重头戏:RAG中的检索召回率不高怎么优化?我列了几个方向:混合检索(向量+关键词)、查询改写、多路召回、重排序模型。面试官对混合检索特别感兴趣,让我详细讲了向量检索和BM25检索怎么融合,我说了Reciprocal Rank Fusion(RRF)和加权融合两种方式。

还问了一个很实际的问题:如果用户query和文档的语义gap很大,怎么处理?我说了Query Rewrite、HyDE(假设性文档嵌入)、多步检索,面试官又追问了HyDE的原理和风险,我说了用LLM先生成假设性答案再检索,风险是假设性答案可能有误导。

三面:Agent + 项目深挖(约1.5小时)

三面是团队负责人,聊Agent架构和项目经验。

你对Agent的理解是什么?和普通的LLM调用有什么区别?我说了Agent的核心是自主决策和工具使用,有规划、执行、反思的循环,而普通调用是一次性的。面试官追问ReAct框架的原理,我详细讲了Reasoning+Acting的交替过程。

Agent的工具调用怎么设计?我讲了Function Calling的接口设计、工具描述的编写、多工具编排。面试官问了一个很关键的问题:如果Agent选错了工具怎么办?我说了添加工具选择的反思机制、人工确认环节、工具使用的约束条件。

项目深挖环节,面试官让我讲我做的知识库问答项目。他问得特别细:文档量多大?检索延迟多少?准确率怎么评估的?用户反馈怎么样?我一一回答了,还主动说了项目中的踩坑经验,比如长文档分块后上下文丢失的问题,我用元数据增强和上下文窗口扩展解决了。

最后是系统设计题:设计一个支持多轮对话、多文档、多模态的知识库问答系统。我从架构设计、技术选型、难点分析几个方面说了,面试官说思路清晰,但提醒我要注意多模态检索的精度问题和成本控制。

真题汇总

1. Temperature参数对生成结果的影响

2. Prompt设计:结构化信息提取

3. 模型输出格式不稳定的解决方案

4. Chain-of-Thought和Tree-of-Thought的区别

5. 大模型API并发限流处理

6. RAG系统完整架构

7. 文档分块策略和chunk size确定

8. 向量数据库选型(Milvus/Pinecone/Weaviate)

9. Milvus索引类型选择

10. RAG检索召回率优化

11. 混合检索(向量+关键词)融合方法

12. 用户query和文档语义gap大的处理

13. HyDE的原理和风险

14. Agent和普通LLM调用的区别

15. ReAct框架原理

16. Agent工具调用设计和错误处理

17. 设计多轮对话多文档多模态知识库问答系统

心得建议

1. Prompt Engineering不是玄学:要有系统的方法论,角色设定、格式约束、Few-shot示例这些技巧要熟练掌握,而且要知道每种技巧的适用场景。

2. RAG是大模型应用的核心:从文档处理到检索优化,每个环节都要深入理解,特别是混合检索和重排序,这是实际项目中最常遇到的问题。

3. Agent是未来方向:虽然目前Agent的可靠性还不够,但面试官很看重你对Agent架构的理解,ReAct、Function Calling这些要搞清楚。

4. 工程能力很重要:大模型应用不只是调API,并发控制、降级策略、监控告警这些工程问题面试官也会问。

5. 项目经验要有深度:不只是做了什么,还要说清楚遇到了什么问题、怎么解决的、效果如何,面试官最看重的是解决实际问题的能力。

FAQ

Q:面试对算法要求高吗?
A:不算太高,更偏工程和应用。但基础的算法知识还是要有,比如向量检索的原理、排序算法等。

Q:需要现场写代码吗?
A:一面有写Prompt,二面有画架构图和写伪代码,三面主要是系统设计,没有写完整的项目代码。

Q:月之暗面的技术栈是什么?
A:面试中没直接说,但从问题来看,Python为主,用了Milvus、LangChain这些常见的工具。

Q:对大模型原理需要了解多深?
A:应用层面试不需要深入到训练层面,但Transformer的基本原理、注意力机制这些还是要知道的。

Q:面试结果多久出?
A:每面结束后2-3天给反馈,整体流程大概两周完成。

#RAG#Agent#Prompt Engineering#向量数据库#月之暗面#Kimi#Function Calling#ReAct