北京某小厂AI后端实习生面经

(鼠鼠处女面,感觉自己说的磕磕绊绊的,逻辑不够清晰,面试官居然说回答的还好。好开心~一面秒过。)

面试问题与回答要点

1. 自我介绍 & 项目概览

2. Go语言与Raft项目考察
面试官提问:
看到你简历说用Go实现了Raft,是有Go的开发经验吗?
对Go语言了解多少?

我的回答要点:
背景说明: 坦诚说明是为了完成MIT 6.824课程实验,花时间速成了Go语言并完成了项目。
能力边界: 承认目前主技术栈是Java/Python,Go的经验仅限于该项目,很多细节已生疏。
掌握程度: 对Go的基础语法和并发(goroutine, channel)有基本了解。

3. RAG智能问答项目深挖
面试官提问 1:
聊一下你基于RAG的智能问答项目,你在Elasticsearch里主要做了哪些工作?

我的回答要点 (阐述RAG全流程):
离线处理阶段:
数据预处理: 将PDF论文转为Markdown。
文本切块 (Chunking): 采用基于语义的切块方式,保证上下文完整性。
向量化 (Embedding): 使用智谱的Embedding模型将文本块转为向量。
数据入库: 将文本和对应向量一同存入Elasticsearch。
在线检索与生成阶段:
用户问题向量化: 用同样模型处理用户提问。
向量相似度检索: 在ES中召回Top 3最相关的文本块。
构建Prompt: 将召回的文本块作为Context,与用户问题组合成最终的Prompt。
生成答案: 将Prompt发送给大模型(LLM)获取最终回答。

面试官提问 2 :
召回的Top 3数据可能内容相似度很高,但不一定完全符合用户问题,你如何避免给用户错误的引导信息?

我的回答要点:
优化数据源: 关键在于切块质量,保证每个Chunk都是一个逻辑完整的语义单元。
优化召回策略:
扩大召回量: 尝试扩大Top K(如Top 5),为LLM提供更丰富的上下文。
增加多样性: 可以在召回时引入多样性策略(如MMR算法思想),除了最相似的,也召回一些“不那么相似但可能包含新信息”的文本块,避免信息茧房。

4. 基于Redis的多轮对话管理
面试官提问 1:
你提到用Redis做了个性化的多轮对话管理,具体是怎么实现的?

我的回答要点:
持久化方案: 放弃框架默认的内存会话管理,选择Redis做持久化存储。
数据结构: 使用Session ID和User ID作为Key,将用户的多轮对话历史关联起来。
存储格式: 将包含发言人、内容、时间等信息的对话历史序列化成JSON字符串后存入Redis。
读写流程: 当新一轮对话发生时,从Redis取出历史记录,反序列化,追加新内容,再序列化存回去。

面试官提问 2 :
LLM本身有上下文窗口(Context Window)限制,你是怎么突破限制,实现长期记忆的?难道把全部历史记录都传给模型吗?

我的回答要点 (坦诚现状 + 给出解决方案):
承认局限: 首先坦诚目前项目的实现确实是全量传入,在对话轮次很多时会超出上下文限制,这是一个待优化的点。
提出解决方案:
方案一 (摘要压缩): 对时间较早的对话历史进行总结,用一个简短的摘要来代替冗长的原文,从而压缩上下文长度。
方案二 (RAG on History): 将长期对话历史本身也视为一个外部知识库。当用户提问时,先用RAG的方式从历史记录中检索出与当前问题最相关的几轮对话,而不是把全部历史都传进去。

反问环节
我问: 公司的具体业务?
面试官答: AI硬件,做嵌入式芯片,主要应用在玩具中,与用户进行大模型交互。后端技术栈是Go。
我问: 对我本次面试表现的看法和建议?
面试官答: 整体不错,但项目经验偏校园和实验性质,缺乏工业级的深度。
我问: 后续面试流程?
面试官答: 总共2-3轮。
全部评论
华为OD介绍:2019年华为受到美国制裁后,迅速启动产品自研+替换,在研发人员极其短缺的困境下,便开创了OD这种新的用工形式。 OD岗位特点: 1.由华为委托第三方代签劳动合同,4年一签,目前在职人数5万+; 2.管理权限完全归属于华为,包括但不限于招聘录用、薪酬福利、绩效考核、晋升评优等; 3.在华为研究所上班,做华为顶级核心自研项目,鸿蒙智行、鸿蒙终端、ERP、AI芯片、云计算、机器视觉等,稳定性极高(不主动离职可以一直干下去),项目经验优势极其明显,将来跳中大厂更容易; 4.薪资明显高于中小厂(高出20%左右),最高年薪能到50w+; 5.员工作为华为最重要的储备人才,每年都会挑选优秀员工转为正编。
点赞 回复 分享
发布于 08-21 16:36 陕西

相关推荐

1️⃣面试官:上面这个是 RAG 标准流程,实际项目中还有哪些优化技巧?在实际中,召回源会考虑多路召回,例如稀疏召回,语义召回,字面召回等。对于多路召回截断和召回分数对齐的问题,还会采用在召回后面增加一个重排序的阶段,精简召回数并提升召回的质量。另外,其中的 embedding 模型,重排序模型,以及生成模型会根据系统问答的指标情况,会针对性的进行进一步的微调。2️⃣面试官:那生成环节怎么评估效果?首先是量化指标:例如 Rouge - L ,文本相似度,关键词重合度等指标。除了准确度,还可以评估生成答案的多样性,看看模型是否能够生成多种合理且相关的答案。还需要引入人类评估:进行人工评估,一般是负责改项目的产品经理和测试人员,以及内测的普通用户对模型的回答进行质量、准确性和连贯性的评分。还应考虑资源效率:考虑模型的计算复杂性、内存需求和推理速度,尤其是在资源受限的环境中,看看 RAG 是否能够以合理硬件资源效果提供更好的性能。3️⃣面试官: RAG 中为什么会出现幻觉?幻觉问题是大模型的一个通病,出现幻觉问题主要分为两大类,一类是生成结果与数据源不一致,自相矛盾。另一类是用户问题超出了大模型的认知。针对前者可能是训练数据和源数据不一致、数据没对齐或者编码器理解能力的缺陷和解码器策略错误可能导致幻觉。后者则是用户的问题不在语言模型认知范围内。4️⃣面试官:针对幻觉的问题,有什么解决思路?第一个是引入更精准的知识库,消除虚假的数据源,减少数据偏差。另外可以加入一些纠偏规则,比如采用 ReAct 的思想,让大模型对输出的结果进行反思;还有现在比较流行的思路是集成知识图谱,即不再局限于向量数据库匹配,做召回时不仅考虑文档块,同时还考虑图谱的三元组。将知识图谱( KGs )集成到 RAG 中,通过利用知识图谱中结构化且相互关联的数据,可以增强当前 RAG 系统的推理能力。5️⃣面试官:在实际做项目中,经常遇到各种边界的 case ,一般怎么解决?首先是无效问题:如果对于知识库中没有的问题,我们需要做一个准入的判别,判断是否需要回答。一般是一个二分类模型,或者直接用大模型+ prompt 来做,使模型在这种情况下输出一个预设的兜底话术。第二是减少幻觉:对于时间变化的问题,模型回答"我不知道"。在推理模块中添加规则和提示工程技术,使模在不确定时回答"根据当前的信息,不足以回答这个问题"。还有格式错误:模型可能会生成无法解析的答案,例如没有输出预定义格式。
点赞 评论 收藏
分享
评论
7
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务