某中小厂导航业务AI算法工程师岗位一面面经
趁对话记忆还没丢失分享一波,5-10年经验面试前一刻回看JD才发现是算法岗(好在有神奇的AI,资料扔一波让AI总结,可惜只有10分钟了粗略看了下心里有了数),基本都是些项目上的问题扩展了一下算法,几乎没有八股。
面经问题
- 自我介绍 + 最近做过得项目介绍
- 项目里的一些技术栈都是怎么搭的(主要问了python和java的部分)
- 项目为什么不用Spring Cloud Alibaba,你知道Spring Cloud Alibaba一些特性吗?
- LangChain和LangGraph在项目里的技术实现是什么样,你简历提到的StateGraph实现是如何运作的
- 讲一下具体拆分的文档类型,文档拆分的规则具体讲一下
- 面试官追问了下PDF拆分涉及到哪些算法和过滤规则
- 讲一下文档是如何一步步存到向量数据库的,涉及到哪些算法具体说一下
- 大模型的非确定性输出可能导致生产事故,你们在生产环境是如何确保输出安全的
- 你项目里用户提供的上下文是如何运转的
- 讲一下项目数据处理一些重要节点,以及LangGraph对应结构
- 刚才提到的持久化,还做了哪些数据持久化,分别是怎么保存不同类型数据
- RAG知识准确率什么指标,是怎么测试的得到这个指标的
- 有了解pytorch嘛,项目中有用到吗,具体说说?
- 有没有参与项目选型,具体的考量是是什么指标
- 有大模型微调的经验吗,微调用到什么算法
- 一些性能指标优化问题,这里不展开了
- 未来优化点在哪,可以进一步提高AI agent相关的效率? ...... (先列举这么多问题,后面回忆起来再补充)
我的面试总结
我先进行了自我介绍,并简要介绍了最近参与的项目,这部分没有过多展开项目所有技术细节方便面试官追问。关于技术栈,我说明了项目Java+Springboot主体部分的架构,以及Python分别实现了哪些功能及其作用。Spring Cloud Alibaba的问题算是为数不多的八股,我简述了我所了解的该框架特性,并解释了项目中未采用的原因。
对于LangChain和LangGraph,我提前做了准备,详细说明了它们在项目中的技术实现,包括StateGraph的运作方式,最后总结了我们为什么选择LangChain和LangGraph来规划Agent,以及它们各自发挥的具体作用。文档拆分部分,我举了拆分PDF和Word的例子来讲规则;当追问PDF拆分涉及的算法和过滤规则时,我把之前做AI超级智能体残存的RAG文档拆分记忆整理了一下做了回答。
关于文档存入向量数据库的流程,我把从解析、分块到emebedding、索引以及如何打metadata标签完整步骤说了一遍,既然是算法岗,也把涉及到的具体算法和运算公式铺开讲清楚了(这部分不熟面对追问有的问题会懵一下,造成不必要的重复回答,其实应该思考一下再回答)。大模型非确定性输出的风险问题很经典,我大致说明了生产环境中我们采用的校验、规则过滤与后处理等安全兜底方案。对于用户上下文的运转,当时稍有些困倦,我讲了多轮对话历史如何持久化,如何做过滤、筛选和拦截,以及在提交给大模型之前如何对上下文进行补全。
数据处理的关键节点和LangGraph对应结构我事先有准备,展开做了介绍。在持久化方面,除了刚才提到的上下文,我根据项目情况补充了其他数据持久化方式,以及不同类型数据的分别保存方法。RAG知识准确率指标这一块我了解不算很深,大致描述了我们的测试方式以及如何得到该指标。PyTorch虽然没有在我的项目里使用,但我结合自己所了解的其他Python相关技术做了关联说明。
项目选型上,我参与了Embedding模型的选型,详细说明了考量的各项指标,也在追问中解释了线上、线下场景的差异。微调经验方面,我重点介绍了LoRA微调算法,并扩展讲解了如何从小范围低秩适配映射到全量参数的原理。性能优化问题上,我分享了引入AI Agent的优化、数据库接口优化以及RAG的扩展优化等实际案例。对未来可以进一步提升AI Agent效率的优化点,我也简要谈了自己的思路。
写在最后
全程大概花了一小时,虽然安排在下午有点犯困,但结果比我预想的要好不少,算是我近期AI Agent方向含金量最高的一次面试。面试官最后指出我可以先停顿思考,组织总结后再回答,避免内容重复——我虚心接受,也会在后续面试准备中再加强。从反馈来看,这一面通过的机会应该很大,静待二面通知。
PS:面试完踏踏实实睡了个午觉,健身时脑子里还回荡着面试的对话,面试官确实有水平,问题都被他认真听进去了。不管结果如何,这都是一次“战斗爽”的面试经历
