未必然 Agent开发 一面
一、实习
1.介绍项目
2.拷打了一下实习项目中的细节
3.项目中有涉及过NL2SQL的场景吗?
这里如实回答没有,讲了一下向量搜索的业务场景。
面试官没有继续追问,说没事,还讲了一下什么是NL2SQL,即将用户输入的自然语言转化为sql语句进行查询。
4.讲一下RAG的整体流程吧
详细说了一下RAG的流程,分片、索引、召回、重排、生成。
5.在RAG中都有哪些分片的策略?
比如通过字数、段落、章节,甚至语义进行分片、调整overlap的大小等等。
6.讲一下仅仅通过字数进行分片的优劣吧
优势肯定是技术上实现比较简单,劣势则是这种暴力的切分方法,可能导致文档在语义方面的逻辑不是特别清晰,从而使最终返回的结果质量不理想。
7.那我们有没有什么办法能够避免这种情况?
当然有,首先就是从标点符号、段落、章节等入手进行拆分,比如一个句号包裹的句子一般逻辑性较强、本章节如果结束了就及时停止分片,还有就是调整overlap的大小,使其语义的连贯性得到提升。
8.你在上一段实习中是主要通过代码实现的,还是也有用过一些低代码平台?
主要是通过代码实现的,不过低代码平台也有用过,我们用的是fastGPT。
9.了解过MCP协议吗?
MCP协议是Model Context Protocol,即模型上下文协议,虽然名字带有模型,但实际上和模型并没有直接关联,它其实是分为了MCP Host,像Claude Code、Cursor、VsCode中的Cline等等平台,还有MCP Server,即满足MCP协议的程序,其内部可能有多个方法,MCP其实就是作用于Host和Server之间的交互,并没有规定如何与模型进行交互。
面试官这里用HTTP进行类比,进一步讲解了一下。
10.讲一下Skill吧
Skill其实本质就是说明文档,如果说MCP是给模型提供数据,那么Skill就是教给模型怎么处理数据。在与大模型进行交互时,我们可以把Skill列表一并传过去,让大模型自主决定调用哪个Skill。这里我们通常只传入meta data,即元数据层,名称和描述,当大模型选中特定的Skill后,才会查看其对应的指令层、资源层,这就是渐进式披露机制。
11.你知道为什么需要Skill吗?
这里一上来有点懵,只是说Skill可以让大模型自主决定选用什么样的策略处理数据。
面试官进一步讲解了一下,一是,MCP本质是一个协议,我们在实际做智能体开发的时候,仅仅一个MCP Server可能就暴露上百个工具,如果将所有的Server及其工具都传给大模型,上下文窗口消耗得很快,token很容易爆炸,而Skill有渐进式披露这个机制,能很好地节省token;二是,当MCP Server的工具过多时,可能有成百上千个,即使是最先进的模型也可能无法准确识别出要调用哪个工具,而Skill则将工具的标准调用顺序和逻辑封装为一个技能,模型面对的不是多个工具,而是一个技能,这样就大大提高了其效率和专业性。
二、项目
1.我看到你的简历中有提到一个Coding Agent项目,能不能简单介绍一下?
这是一个Vibe Coding的成果,是一个基于Python实现的Agent,我的目标是想把它打造成一个类似OpenClaw的Agent。
2.我看着就像是OpenClaw,这样,我们聊到哪就问到哪吧,请你详细说一下从用户向OpenClaw下达指令,到其返回最终结果的全流程吧,比如查询天气这个场景。
首先,我们将历史上下文和用户的最新提问进行拼接,然后一并发送给大模型,当然,一并发送的还有工具列表,比如description、schema等,大模型收到用户信息后,决定调用查询天气的工具,并给出具体参数,平台调用具体工具,并将结果返回给模型。一直重复这个循环,直到大模型不再进行工具调用,给出最终结果,我们再将最终的天气信息返回给用户。
3.我看到你提到了历史上下文,也就是记忆,是吗?而且在你的项目中也有上下文压缩的逻辑,你都知道哪些上下文处理的策略,又有哪些具体实践?
我在这个项目中对上下文的处理主要是借鉴的Claude Code的方案,即当上下文达到窗口的95%时,进行压缩处理。我的具体处理逻辑是,保留最近n条对话,再将剩余的上下文交给大模型,让它生成一份摘要,这样既能保证会话的连续性,又能起到节省token的作用。
三、八股
面试官说懒得问,应该是看到我实习中有后端的项目,所以对后端的技术栈比较放心,只是确认了一下增删改查这些基本的sql没有问题吧,还说去了以后token管够,应该也不是问题。
四、业务介绍
面试官详细讲了一下去了都做什么业务。
五、反问
问了一下具体的业务,还有是否能够转正,以及转正后的薪资范围。
整体感觉还算简单,面试官人也不错,很尊重人,不管答得怎么样都会做讲解,而且一口一个您,很舒服的一次面试。
1.介绍项目
2.拷打了一下实习项目中的细节
3.项目中有涉及过NL2SQL的场景吗?
这里如实回答没有,讲了一下向量搜索的业务场景。
面试官没有继续追问,说没事,还讲了一下什么是NL2SQL,即将用户输入的自然语言转化为sql语句进行查询。
4.讲一下RAG的整体流程吧
详细说了一下RAG的流程,分片、索引、召回、重排、生成。
5.在RAG中都有哪些分片的策略?
比如通过字数、段落、章节,甚至语义进行分片、调整overlap的大小等等。
6.讲一下仅仅通过字数进行分片的优劣吧
优势肯定是技术上实现比较简单,劣势则是这种暴力的切分方法,可能导致文档在语义方面的逻辑不是特别清晰,从而使最终返回的结果质量不理想。
7.那我们有没有什么办法能够避免这种情况?
当然有,首先就是从标点符号、段落、章节等入手进行拆分,比如一个句号包裹的句子一般逻辑性较强、本章节如果结束了就及时停止分片,还有就是调整overlap的大小,使其语义的连贯性得到提升。
8.你在上一段实习中是主要通过代码实现的,还是也有用过一些低代码平台?
主要是通过代码实现的,不过低代码平台也有用过,我们用的是fastGPT。
9.了解过MCP协议吗?
MCP协议是Model Context Protocol,即模型上下文协议,虽然名字带有模型,但实际上和模型并没有直接关联,它其实是分为了MCP Host,像Claude Code、Cursor、VsCode中的Cline等等平台,还有MCP Server,即满足MCP协议的程序,其内部可能有多个方法,MCP其实就是作用于Host和Server之间的交互,并没有规定如何与模型进行交互。
面试官这里用HTTP进行类比,进一步讲解了一下。
10.讲一下Skill吧
Skill其实本质就是说明文档,如果说MCP是给模型提供数据,那么Skill就是教给模型怎么处理数据。在与大模型进行交互时,我们可以把Skill列表一并传过去,让大模型自主决定调用哪个Skill。这里我们通常只传入meta data,即元数据层,名称和描述,当大模型选中特定的Skill后,才会查看其对应的指令层、资源层,这就是渐进式披露机制。
11.你知道为什么需要Skill吗?
这里一上来有点懵,只是说Skill可以让大模型自主决定选用什么样的策略处理数据。
面试官进一步讲解了一下,一是,MCP本质是一个协议,我们在实际做智能体开发的时候,仅仅一个MCP Server可能就暴露上百个工具,如果将所有的Server及其工具都传给大模型,上下文窗口消耗得很快,token很容易爆炸,而Skill有渐进式披露这个机制,能很好地节省token;二是,当MCP Server的工具过多时,可能有成百上千个,即使是最先进的模型也可能无法准确识别出要调用哪个工具,而Skill则将工具的标准调用顺序和逻辑封装为一个技能,模型面对的不是多个工具,而是一个技能,这样就大大提高了其效率和专业性。
二、项目
1.我看到你的简历中有提到一个Coding Agent项目,能不能简单介绍一下?
这是一个Vibe Coding的成果,是一个基于Python实现的Agent,我的目标是想把它打造成一个类似OpenClaw的Agent。
2.我看着就像是OpenClaw,这样,我们聊到哪就问到哪吧,请你详细说一下从用户向OpenClaw下达指令,到其返回最终结果的全流程吧,比如查询天气这个场景。
首先,我们将历史上下文和用户的最新提问进行拼接,然后一并发送给大模型,当然,一并发送的还有工具列表,比如description、schema等,大模型收到用户信息后,决定调用查询天气的工具,并给出具体参数,平台调用具体工具,并将结果返回给模型。一直重复这个循环,直到大模型不再进行工具调用,给出最终结果,我们再将最终的天气信息返回给用户。
3.我看到你提到了历史上下文,也就是记忆,是吗?而且在你的项目中也有上下文压缩的逻辑,你都知道哪些上下文处理的策略,又有哪些具体实践?
我在这个项目中对上下文的处理主要是借鉴的Claude Code的方案,即当上下文达到窗口的95%时,进行压缩处理。我的具体处理逻辑是,保留最近n条对话,再将剩余的上下文交给大模型,让它生成一份摘要,这样既能保证会话的连续性,又能起到节省token的作用。
三、八股
面试官说懒得问,应该是看到我实习中有后端的项目,所以对后端的技术栈比较放心,只是确认了一下增删改查这些基本的sql没有问题吧,还说去了以后token管够,应该也不是问题。
四、业务介绍
面试官详细讲了一下去了都做什么业务。
五、反问
问了一下具体的业务,还有是否能够转正,以及转正后的薪资范围。
整体感觉还算简单,面试官人也不错,很尊重人,不管答得怎么样都会做讲解,而且一口一个您,很舒服的一次面试。
全部评论
已通过
相关推荐
查看13道真题和解析