本文以作者面试腾讯大模型算法岗的经历为基础,详细复盘了面试中涉及到的RAG系统、大模型训练优化、推荐算法及基础能力(如SQL和代码)等核心内容。作者不仅介绍了自己的思考过程和遇到的问题,还分享了事后的反思和解决方案。文章旨在帮助读者系统构建RAG方向的知识体系,为准备类似岗位的程序员提供参考和指导。

面试完腾讯大模型算法岗,人傻了!

最近金三银四,后台不少读者留言让我聊聊大模型方向的面试经验。恰好上个月我完整经历了某鹅的大模型用算法岗面试,从一面到三面,整整三轮技术轰炸,出来的时候感觉脑子都被掏空了。

但不得不说,这场面试让我对自己过去两年的技术积累有了全新的梳理。今天我就把面试中被拷问到的问题整理出来,不是简单的题目罗列,而是我当时真实思考的过程、卡壳的地方,以及事后复盘时想明白的点。如果你正在准备类似岗位,或者想系统构建RAG方向的知识体系,这篇文章值得你静下心来看完。

面试复盘:从RAG到推荐,再到SQL和代码,一个都不能少

面试官的问题层层递进,从项目细节一路深挖到数学原理和手写代码,覆盖面极广。我把它们分成了几个核心板块,咱们逐一攻克。

板块一:RAG系统,你的地基稳不稳?

这是大模型应用落地最火的方向,自然是面试的重头戏。

1. 介绍RAG项目,整体架构和实现思路

  • 我的思路: 我没有上来就背概念,而是从我实际做的一个智能客服知识库助手项目入手。我画了一个简单的流程图(在脑子里):
  • 离线部分: 首先,我们把海量的企业内部文档(PDF、Word、网页)进行清洗、切片。然后,使用先进的 embedding 模型(比如bge-large)将这些片段向量化,存入向量数据库(比如Milvus)。
  • 在线部分: 当用户提问时,我们实时将问题向量化,去向量库中检索最相似的Top-K个知识片段。接着,我们将原始的问题和检索到的知识片段,按照一个精心设计的 Prompt 模板组合起来,最后一起喂给大模型(比如Qwen-max),让模型基于提供的知识生成最终答案。
  • 难点与反思: 关键在于**“连接”**。如何让检索、排序、生成各个环节无缝协作,尤其是设计Prompt,既要让模型理解指令,又要防止它被无关的检索结果误导。

2. RAG中的检索模块召回错误结果时,你会如何处理?

  • 我的思路: 这是一个很实际的工程问题。召回错了,后面生成的就可能是一本正经的胡说八道。
  • 第一道防线: 在检索后加入一个重排序(Rerank)环节。用一个更精细的交叉编码器模型,对召回的Top-K结果进行重新打分,把最不相关的排在后面或者直接过滤掉。
  • 第二道防线:Prompt层面给模型“打预防针”。明确告诉它:“如果提供的资料无法回答用户问题,请直接说‘我不知道’或‘资料库中未找到相关信息’,不要自行编造。”
  • 第三道防线: 引入可解释性。在返回答案的同时,把作为依据的知识片段也展示给用户,让用户来判断答案的可信度。
  • 难点与反思: 这个问题考察的是对RAG系统鲁棒性的理解。没有完美的检索,系统必须具备容错和纠错机制。

3. RAG出现漏召的情况,你会如何优化检索模块?

  • 我的思路: 漏召,就是最相关的知识没被找出来。这是检索模块的核心痛点。
  • 优化数据质量: 检查知识切片的方式是否合理。是不是把一段完整逻辑切断了?尝试不同的切片策略,比如重叠切片、按语义段落切片。
  • 优化embedding模型: 当前的通用embedding模型可能不擅长我们的垂直领域。可以收集一些领域内的问答对,对embedding模型进行微调(Fine-tune),让模型更懂我们的业务语言。
  • 多路召回策略: 不要只依赖向量检索这一条路。可以结合关键词检索(比如ES的BM25算法),把两种方式的结果合并起来,再统一重排序。向量负责语义相似,关键词负责字面匹配,两者互补,能极大地提高召回率。
  • 难点与反思: 漏召和错召往往需要权衡。优化的目标是提高“查全率”的同时,尽量不损失“查准率”。

4. 如何评估RAG系统的效果?有哪些评估指标?

  • 我的思路: 评估是个系统工程,不能只看单一指标。我会从两个维度来评估:
  • 答案准确性: 可以借助更强大的模型(如GPT-4)作为裁判,来评估生成答案是否忠实于检索到的知识(忠实度),以及是否正确回答了用户问题(答案相关性)。

  • 传统指标: ROUGE/BLEU分数,但这些指标对语义理解能力有限,只能作为参考。

  • 命中率: 在前N个检索结果中,是否包含标准答案片段。

  • NDCG: 不仅看有没有召回到,还要看标准答案排在第几位。

  • 检索模块评估:

  • 生成模块评估:

  • 难点与反思: 这个问题的深度在于能否认识到,RAG的最终目的是“生成”,所以最终评估必须回归到答案的质量上,而不仅仅是检索得好不好。
板块二:大模型训练与优化,你的内功深不深?

从微调技术到模型顽疾,这是对理论功底的考验。

5. 解释LoRA高效参数微调的原理,为什么要用低秩分解?

  • 我的思路: 我试着用最通俗的语言解释。LoRA的核心思想是“以简驭繁”。
  • 原理: 它假设大模型在适应新任务时,权重的改变量(ΔW)其实本身是“低秩”的。因此,我们不需要直接去更新庞大的原始权重矩阵W,而是去训练两个非常小的矩阵A和B,让它们的乘积(A×B)来近似这个改变量ΔW。最终,模型的前向传播变成了 h = Wx + BAx
  • 低秩分解的意义:
  1. 参数量极小: 因为A和B的尺寸远小于W,所以训练的参数大幅减少,显存占用低,训练速度快。
  2. 部署灵活: 训练完成后,只需要保存这几个小矩阵。对于不同的任务,可以训练不同的LoRA模块,在使用时动态地加载或卸载,不影响底座的原始模型。
  • 难点与反思: 需要理解“秩”的概念,以及为什么模型适应新任务往往只需要在一个低维空间中进行。

6. DPO训练中模型输出变长是什么原因?如何解决?

  • 我的思路: 这是一个非常细节且实战的问题。DPO直接优化偏好,可能导致模型为了让自己更“讨喜”而变得啰嗦。
  • 长度正则化: 在计算DPO的loss时,显式地加入一个对输出长度的惩罚项,让模型在追求偏好和保持简洁之间找到平衡。

  • 数据清洗: 检查偏好数据对,确保“优”和“劣”的区分不在于长度,而在于质量和内容的准确性。比如,可以找一些长度相近但质量不同的样本。

  • 指令约束: 在Prompt中明确指示,例如“请用不超过200字简要回答”。

  • 原因: DPO的优化目标是让模型更倾向于生成被标记为“优”的回答。而人类的偏好里,有时候会不自觉地认为“更长、更详细”的回答就是更好的。模型在训练中捕捉到了这个隐含信号,于是学会了通过增加输出长度来提高被选中的概率。

  • 解决方法:

  • 难点与反思: 这个问题展现了DPO在实际应用中的“副作用”,考验的是对算法原理和实际现象的联合分析能力。

7. 大模型出现复读机现象的原因是什么?有哪些解决方法?

  • 我的思路:
  • 解码策略调整: 这是最直接的干预。可以使用频率惩罚重复惩罚,在模型计算下一个词的概率时,对已经出现过的词进行降权。调整top_ptop_k等参数也能增加随机性,打破循环。

  • 训练数据优化: 检查预训练或SFT数据中,是否存在大量包含重复模式的低质量文本,教会了模型这种坏习惯。

  • 模型结构改进: 引入一些对重复敏感的位置编码或注意力机制变体。

  • 原因: 这通常是模型陷入了概率陷阱。模型在生成文本时,是逐个词进行预测的。当生成到某个点时,模型预测下一个词的概率分布中,“重复自己刚说过的话”这条路在过去被训练得概率特别高,形成了一个正反馈循环,导致模型跳不出来。

  • 解决方法:

  • 难点与反思: 关键在于理解这是生成过程中的一种“病态”行为,需要从数据、训练、推理多个角度综合治理。

8. SFT微调后模型的通用能力出现遗忘,你会如何处理?

  • 我的思路: 这是经典的“灾难性遗忘”问题。
  • 混合训练: 在进行特定任务的SFT时,不要只用任务数据。可以按一定比例(如7:3)混合通用的、多样化的指令数据一起训练。就像学新知识的同时,也要时不时复习旧知识。
  • 基于LoRA的微调: LoRA本身就是一种缓解遗忘的手段,因为它只修改了很少一部分参数,大部分原始模型的通用知识被保留了下来。
  • EWG/EPG: 使用一些更高级的持续学习算法,在计算损失时,对那些对通用能力至关重要的参数施加重大的更新惩罚,保护它们不被“遗忘”。
板块三:推荐算法,你的跨界能力行不行?

大模型Agent经常要和推荐系统打交道,所以这部分也是加分项。

9. Wide&Deep模型的原理是什么?Wide部分和Deep部分分别解决什么问题?

  • 我的思路: 我把它比作一个“理性+感性”的组合决策模型。
  • Wide部分(线性模型,如LR): 负责“记忆”。它擅长从历史数据中学习高频、固定的特征组合规则,比如“安装了A应用的用户,有很大概率会安装B应用”。它的作用是增强模型的**“记忆力”**,确保推荐结果的准确性和可靠性。
  • Deep部分(DNN): 负责“泛化”。它通过 embedding 将稀疏的特征映射为稠密的向量,自动学习特征之间深层的、非线性的交互关系。它的作用是增强模型的**“想象力”**,能够探索用户潜在的兴趣,即使某些特征组合从未在历史数据中出现过。
  • 结合: 将Wide和Deep的输出拼接起来,共同做最终的预测,实现了“记忆”与“泛化”的平衡。

10. DIN模型相比传统推荐模型有什么改进?

  • 我的思路: 传统的Embedding&MLP架构,会把用户历史行为简单池化(比如平均)成一个固定的向量,这会丢失掉每个行为与当前候选商品之间的相关性信息。
  • DIN的改进: 它引入了注意力机制
  • 核心思想: 用户在决定是否点击当前这个商品时,他历史行为中的不同商品对他的影响权重是不一样的。比如,当推荐“篮球”时,用户历史中的“球鞋”行为应该比“T恤”行为更重要。
  • 具体做法: DIN会动态地计算用户每个历史行为商品与当前候选商品的相关性得分,然后用这个得分作为权重,对历史行为进行加权求和,得到一个与当前场景密切相关的、自适应的用户兴趣表达向量。
  • 难点与反思: 这个问题的关键在于理解“局部激活”的概念,即用户兴趣是多样的,只有与当前场景相关的部分兴趣才被激活。

11. L1正则和L2正则的区别是什么?从数学角度解释为什么L1能产生稀疏性?

  • 我的思路:
  • 区别: L1正则项是权重绝对值的和(L1范数),L2是权重平方和(L2范数)。L1能产生稀疏的权重(让很多权重变为0),而L2只能让权重接近0。L2具有旋转不变性,而L1没有。
  • 数学解释(几何角度): 正则化相当于在原始的损失函数上增加了一个约束条件。L1约束是一个菱形(二维),L2约束是一个圆形。优化的过程,就是寻找原始损失函数等值线与这个约束区域首次相交的点。由于菱形有“尖角”(在坐标轴上),等值线更容易先撞上这些尖角,从而产生位于坐标轴上的解,即某些权重为0。而圆形的边界是平滑的,切点很难正好落在坐标轴上,所以权重只能被压缩,但很难为0。
  • 数学解释(导数角度): 在0点处,L1正则的导数是不连续的(左导数为-λ,右导数为λ)。这种“突跳”使得优化过程更容易将权重直接推到0。而L2在0点的导数是0,权重在0附近时受到的推力很小,很难精确为0。
板块四:基础能力,你的基本功扎实吗?

算法工程师的底线,代码和SQL必须手到擒来。

12. SQL:统计每个商家的评论数并去重

  • 我的思路: 这道题看似简单,关键在于理解“去重”指的是什么。
  • 最常见解释: 一个用户可能对同一个商家评论多次,我们需要统计的是有多少个用户发表了评论。```plaintext
    SELECT merchant_id, COUNT(DISTINCT user_id) AS unique_comment_user_countFROM comments_tableGROUP BY merchant_id;

    
    
  • 另一种可能: 如果“去重”是指一个用户的一条重复评论(由于网络原因等),那么就是直接对评论ID去重。```plaintext
    SELECT merchant_id, COUNT(DISTINCT comment_id) AS comment_countFROM comments_tableGROUP BY merchant_id;

    
    
  • 反思: 我向面试官确认了“去重”的具体含义,这很关键,避免了理解偏差。

13. 手撕代码:编辑距离

  • 我的思路: 这是经典的动态规划题。我先和面试官确认了题目要求,然后快速在白板上写下了思路和代码。
  • 如果 word1[i-1] == word2[j-1]: dp[i][j] = dp[i-1][j-1]

  • 否则:dp[i][j] = min( dp[i-1][j] + 1 (删除), dp[i][j-1] + 1 (插入), dp[i-1][j-1] + 1 (替换) )

  • 定义dp数组:dp[i][j] 表示 word1 的前 i 个字符转换成 word2 的前 j 个字符所需要的最少操作数。

  • 初始化:dp[0][j] = j (插入j次),dp[i][0] = i (删除i次)。

  • 状态转移方程:

  • 反思: 写完代码后,我主动举了一个简单的例子(如 word1="horse", word2="ros")走了一遍流程,验证了代码的正确性,并解释了时间复杂度和空间复杂度。

最后总结一下:

这场面试下来,我最大的感受是:大模型Agent算法岗,不再只是会调包、会训练模型就够了。 它要求你对从数据检索、模型训练到上层应用的全链路有深刻的理解,能够灵活应对工程实践中的各种“坑”,同时还要具备扎实的代码功底和跨领域知识(如推荐系统)。

希望我的这次“赴死”经历,能帮你把前方的路照得更亮堂一些。如果你觉得这篇复盘对你有用,请不要吝啬,把它分享给你身边同样在奋斗的朋友吧! 你的每一次分享,都是对我最大的鼓励!

祝大家面试顺利,offer拿到手软!我们江湖再见!

最后

对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?

答案只有一个:人工智能(尤其是大模型方向)

当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右

再看阿里、腾讯两大互联网大厂,非“人才计划”的AI相关岗位应聘者,月基础工资也约有3万元,远超其他行业同资历岗位的薪资水平,对于程序员、小白来说,无疑是绝佳的转型和提升赛道。
图片
图片
对于想入局大模型、抢占未来10年行业红利的程序员和小白来说,现在正是最好的学习时机:行业缺口大、大厂需求旺、薪资天花板高,只要找准学习方向,稳步提升技能,就能轻松摆脱“低薪困境”,抓住AI时代的职业机遇。

如果你还不知道从何开始,我自己整理一套全网最全最细的大模型零基础教程,我也是一路自学走过来的,很清楚小白前期学习的痛楚,你要是没有方向还没有好的资源,根本学不到东西!

下面是我整理的大模型学习资源,希望能帮到你。

图片

👇👇扫码免费领取全部内容👇👇

在这里插入图片描述

最后

1、大模型学习路线

img

2、从0到进阶大模型学习视频教程

从入门到进阶这里都有,跟着老师学习事半功倍。

在这里插入图片描述

3、 入门必看大模型学习书籍&文档.pdf(书面上的技术书籍确实太多了,这些是我精选出来的,还有很多不在图里)

在这里插入图片描述

4、 AI大模型最新行业报告

2026最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

img

5、面试试题/经验

img

【大厂 AI 岗位面经分享(107 道)】

img

【AI 大模型面试真题(102 道)】

img

【LLMs 面试真题(97 道)】

img

6、大模型项目实战&配套源码

img

适用人群

在这里插入图片描述

四阶段学习规划(共90天,可落地执行)
第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型

  • 带你了解全球大模型

  • 使用国产大模型服务

  • 搭建 OpenAI 代理

  • 热身:基于阿里云 PAI 部署 Stable Diffusion

  • 在本地计算机运行大模型

  • 大模型的私有化部署

  • 基于 vLLM 部署大模型

  • 案例:如何优雅地在阿里云私有部署开源大模型

  • 部署一套开源 LLM 项目

  • 内容安全

  • 互联网信息服务算法备案

  • 👇👇扫码免费领取全部内容👇👇

    在这里插入图片描述

3、这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
在这里插入图片描述
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐