Dos2 level
获赞
1
粉丝
1
关注
3
看过 TA
11
2027
Java
IP属地:北京
暂未填写个人简介
私信
关注
昨天 21:03
已编辑
Java
一、实习 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管够,应该也不是问题。四、业务介绍面试官详细讲了一下去了都做什么业务。五、反问问了一下具体的业务,还有是否能够转正,以及转正后的薪资范围。整体感觉还算简单,面试官人也不错,很尊重人,不管答得怎么样都会做讲解,而且一口一个您,很舒服的一次面试。
查看14道真题和解析
0 点赞 评论 收藏
分享
昨天 20:35
已编辑
Java
一、实习 1.介绍项目2.调用大模型后的返回结果或格式与我们要求的不符,怎么办呢?比如要求返回的是JSON,但是返回格式不理想的情况怎么解决?从System Prompt的角度回答的,可以在系统提示词中规定仅输出纯JSON,并给出JSON结构示例。但面试官不太满意,提出还有其他的解决方法,让我再去研究一下。现在想想还可以从这些方向进行优化:通过结构化输出能力:比如通过JSON Schema限制它只能产出符合 schema 的字段和类型;在程序侧做校验与重试:收到结果先进行检验,失败就把错误信息返回,令其重新生成。3.LLM的常见的训练流程,如pretraining、微调等当时没答上来,后来回答了 Transformer 架构,解释了一下注意力机制此时突然提问Attention中计算QKV时的时间复杂度,没答上来,应为O(n²d)。应为:数据准备(Data Pipeline) -> 预训练(Pretraining) -> 指令微调(SFT)-> 偏好对齐(DPO/RLHF) -> 评测与迭代(Evaluation & Iteration) ->部署后持续优化(Online Feedback Loop)4.RAG主要用来做什么?有哪些应用场景?RAG可以让大模型基于知识库回答,减少胡编的现象。详细说了一下RAG的流程,分片、索引、召回、重排、生成。应用场景:如AI客服等。5.如果发现在我们搭建的RAG中,它的召回率比较高,但是回答仍然不准确,可能的原因都有哪些?从优化输入的角度进行回答,可以先让大模型根据用户的输入生成几条相似的问题,即把原始问题改成多种不同的表述,分别去搜,最后把结果合并去重。后来想了想,还能从这些角度答:Chunk 粒度或切分策略不合理,太大、太小,overlap不足,导致关键句刚好被切开;噪声太大,可能把正确文档召回进来了,但它在 Top-k 中位置靠后,前面塞了大量“看起来相关但无关”的片段,导致生成阶段被噪声干扰;生成阶段没受约束地使用证据,比如在Prompt中没明确说依据给定上下文作答;温度、Top-p参数不合理,导致模型自由发挥程度过大。6.如果在RAG系统中碰到检索的结果存在冲突,怎么办?从提升检索质量的角度进行回答,单纯的语义检索可能得到的结果并不准确,可以结合精确匹配,采用混合检索,最终通过加权或RRF算法得到合并排序后的结果。7.有自己搭建过Agent的项目吗?介绍了一下在公司做过的通用Agent项目,以及简单提到了正在用Python实现的类OpenClaw的Agent,这里并没有后续的追问。二、项目1.介绍一下在点评中都做了哪些具体的内容?讲了一下通过Redis实现的几个功能以及解决的问题、如穿透、击穿、雪崩、超卖等。2.缓存雪崩的解决方案是什么?为不同的Key设置随机TTL;建立Redis集群;采取降级限流措施,如快速失败等方案。3.场景题,后端存在多个Application,前台会打到不同的Service,之前通过Redis保持用户的登录,如果不用Redis,有没有别的方法来解决?可以通过单点登录来解决,建立一个认证中心,所有服务的登录请求都先转发到认证中心,生成全局对话TGT、票据Ticket后,带着Ticket重定向到A服务,A服务向认证中心对Ticket做校验,校验成功后建立局部对话。三、八股,只问了数据库1.inner join和left join的区别是什么?inner join返回的是交集,设A left join B,返回结果会保留A表的所有行,再补上右表匹配的数据。这里答得有点模糊。2.varchar和char的区别?varchar是可变的,char是定长的,varchar更节省空间,而char存取比较快。这里说错了,char是定长的,下意识以为char更节省空间了。3.如果要在数据库中在table上建索引,你有哪些考量?从两个角度进行回答:一是要考虑索引的合理性,是否常用,是否合适;二是要规避掉索引失效的场景,如最左前缀法则、将用于范围查询的索引放到后面,进行索引查询时不要在索引列上进行运算、类型转换以及%开头的模糊查询。整体还算简单,不过个别问题回答的确实不够精准和细致。
查看14道真题和解析
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务