面灵AI→

小红书算法岗面经合集:传统机器学习、大模型架构与推荐检索

轮次
多轮面试合集
时间
2026-10
来源
牛客网

《面试题目》

面经 01 · 小红书 算法岗(2026-06-02)

  1. 分词和 NER 的常见算法有哪些?
  2. 分类和回归的区别是什么?
  3. XGBoost 和 LightGBM 的区别是什么?
  4. 监督学习、无监督学习和强化学习的区别是什么?
  5. K-Means 的原理和适用场景是什么?
  6. 介绍一下你做过的最有挑战的 AI 项目。
  7. 选型为什么是这个方案?对比过哪些?
  8. 项目踩了哪些坑?怎么解决的?
  9. 关键指标有哪些?北极星指标是什么?
  10. 项目里是怎么用的?
  11. 详细讲讲自注意力机制。
  12. RoPE 是什么?和绝对位置编码比有什么优势?
  13. MoE 的原理和优势是什么?
  14. GQA、MHA、MQA 的区别是什么?
  15. LayerNorm 和 RMSNorm 的区别是什么?
  16. 预训练和后训练的区别是什么?
  17. 弱 AI 和强 AI 的区别是什么?
  18. 为何现在的大模型大部分是 Decoder-only 结构?
  19. Encoder 编码器与 Decoder 掩码有什么区别?
  20. 为什么要进行 LN(LayerNorm)?
  21. 介绍一下 RAG 的整体流程。
  22. 文档切片粒度怎么定?切大切小各有什么风险?

面经 03 · 小红书 算法岗(2026-05-06)

  1. 模型优化细节(问得很细):基线模型结构、具体优化点、专家数量、输入维度、参数量计算、特征分配策略分别是什么?
  2. 参数量增加后,计算量增加了多少?FLOPs 和训练速度分别怎么变化?
  3. 新增的存储属于什么类型?在 PS 中仅增加存储是否影响训练推理速度?
  4. 相同的机器下,训练速度慢了多少?或者增加了多少机器才能让训练速度持平?
  5. 手撕代码:求数组中第 K 大的数,时间复杂度要求 O(N)。

面经 04 · 小红书 算法岗(2026-04-12)

  1. 当时为什么选择去做这个工作?召回同样有一些其他的工作,做了哪些前置的工作吗?
  2. 可以简单介绍一下数据集吗?比如数据的形式、它对应的业务背景?
  3. NDCG 具体怎么算的呢?TopK 中的 K 通常怎么选择?
  4. 项目具体的训练优化过程?
  5. 数据预处理具体是做的什么?
  6. 负采样是会限定同一个用户还是 batch 内随机做负采?
  7. 你做了一个改动之后,观测的指标是只看 NDCG 还是会看一些 case?有做偏直观的分析吗?
  8. 全局的负样本为什么不考虑做一个综合的?既用 in-batch 内其他 user 的,然后又去让它同时学习同 user 的困难负样本。
  9. 效率和生态意义上如何平衡推荐?
  10. 高热打压问题如何处理?
  11. AUC 的原理讲一下。
  12. 二分类的 loss 是什么?
  13. 手撕:螺旋矩阵(Hot 100 原题)

面经 05 · 小红书 算法岗(2026-04-11)

  1. 码本坍塌怎么解决?
  2. 怎么衡量生成的 sid 的质量?
  3. 生成式推荐出现幻觉怎么解决?
  4. 介绍 OneRec v1、v2、Think。

面经 06 · 小红书 算法岗(2026-04-11)

  1. 手撕:立方根
  2. 为什么用树模型,没考虑 DNN 模型?
  3. 怎么衡量特征重要性?
  4. Transformer 中的 q、k、v 怎么理解?
  5. 计算注意力分数时为什么要除 dk 的平方根?了解更前沿的控制尺度的方法吗?

面经 07 · 小红书 算法岗(2026-04-11)

  1. 手撕:岛屿数量
  2. 如果把树模型升级为 DNN 模型,你会怎么做?
  3. DIN 的核心结构是什么?
  4. 用户的行为训练在训练的时候需要补齐吗?
  5. embedding 如何得到的?
  6. 推荐系统整体链路了解吗?
  7. 召回、粗排、精排各有什么经典模型?

面经 08 · 小红书 算法岗(2026-03-29)

  1. 模型具体是如何使用的呢?
  2. 介绍一下你的具体业务场景,目标是什么?

《参考解析》

传统机器学习:把「差在哪」讲清楚比背结论重要

分类与回归的区别不只是标签连续与否,更实际的是输出空间、损失函数与评估口径:分类输出离散类别、用交叉熵或合页损失,评估看准确率、精确率召回率、F1、AUC 与校准;回归输出连续值、用平方或绝对值损失,评估看 MAE、RMSE 与残差分布。回归模型接一个 sigmoid 就能做分类(逻辑回归的来历),分类模型也能输出概率做阈值化,真正的差异在于「错误的代价」怎么定义——RMSE 重罚大偏差,MAE 对异常值更稳。三类学习范式要落到「信号从哪来」:监督学习从带标签样本学映射;无监督学习没有标签,学的是数据结构(聚类、降维、密度估计,自监督对比学习也算现代形态);强化学习没有标准答案,靠与环境交互的奖励学策略,还要处理探索与利用、延迟奖励与信用分配。XGBoost 与 LightGBM 同属 GBDT,差别在工程实现:LightGBM 用直方图分箱把连续特征离散化,找分裂点的代价从 O(样本数) 降到 O(箱数),并用 leaf-wise 生长代替 level-wise,收敛更快、内存更省,但数据量小时容易过拟合;XGBoost 用预排序加近似分位数、对稀疏与缺失值友好、正则更完整,成熟稳定。K-Means 是「固定中心与重新分配」的 EM 式迭代,等价于最小化簇内平方误差,前提是簇近似球形、大小相近、欧氏距离有意义;它对初始化敏感(k-means++ 缓解)、要预先定 k(肘部法、轮廓系数)、对异常值与量纲敏感,非凸或类别型数据该换 DBSCAN、谱聚类或高斯混合。分词与 NER 传统上是词典分词加 CRF 序列标注,现在是预训练模型加标注头、再让大模型做零样本抽取;分词粒度会直接影响下游——细则召回高、语义稀,粗则语义完整但可能切错。

大模型架构:自注意力、位置编码与 Decoder-only

自注意力讲成「三步加一个缩放」:输入经三组线性变换得到 Q、K、V,用 Q 与 K 的点积衡量两两相关性、做缩放与 softmax 归一化,再用权重对 V 加权求和。除以根号 dk 是因为点积方差随维度线性增长,不缩放会让 softmax 饱和、梯度消失。RoPE 与绝对位置编码的差别在「位置信息作用在哪」:绝对编码把位置向量加到输入 embedding 上,模型要自己学相对关系;RoPE 直接对 Q、K 做与位置相关的旋转,使内积只依赖相对距离,因此相对位置建模、外推性与长度泛化更好,也便于和 KV 缓存配合。MoE 是「多专家加路由」:每个 token 经门控选出 top-K 专家计算,总参数量很大而单 token 激活算力只与 K 有关,代价是负载不均(要加负载均衡损失与容量因子)、专家并行的通信开销、以及训练不稳。MHA、MQA、GQA 的区别在 KV 的共享程度,目标是压缓存与访存:MQA 全体共享压缩最狠但掉点,GQA 分组共享是折中,MHA 不共享质量最好但缓存最大。LayerNorm 与 RMSNorm 的差别是前者减均值再除标准差、后者只除均方根,少一次统计与若干加法,同等效果下更快更省;LN 之所以必要,是因为它把每层激活的尺度稳定下来、避免深层网络数值爆炸或衰减,也让训练对学习率与初始化更宽容。Decoder-only 成为主流可以从训练目标与工程两方面讲:自回归的下一 token 预测统一了预训练、微调、上下文学习与生成,一个结构通吃;因果掩码让训练可并行、推理可复用 KV 缓存;Encoder-Decoder 在翻译这类输入输出差异大的任务上有优势,但要维护两套结构、交叉注意力增加开销。Encoder 与 Decoder 的差别在掩码:Encoder 双向看整句,Decoder 用因果掩码只能看左侧、多一层交叉注意力。预训练在超大规模无标注语料上自监督,决定能力上限与知识面;后训练(SFT、偏好优化、RL)用规模小得多的数据塑形行为与安全边界。弱 AI 指只在特定任务上达到或超过人的系统,强 AI 指具备跨任务泛化与自主目标的通用智能,当前大模型属于窄而强的工具。

模型规模化的账:FLOPs、存储与训练速度

参数量增加带来的计算量增长按结构推:前向 FLOPs 大致正比于参数量乘 token 数,Transformer 训练约 6ND(前向 2ND 加反向 4ND),所以参数量翻倍、其余不变时单步计算量也大致翻倍;实际训练速度还受显存带宽与通信限制,算力没打满时不会等比例变慢,一旦遇到显存或通信瓶颈就会明显掉速。存储要分清三类:参数与梯度的存储随参数量线性增长;优化器状态是大头(Adam 每个参数额外存一阶与二阶动量,通常是参数量的两倍);激活值随 batch 与序列长度增长,可用重计算换显存。参数服务器架构下只增加存储(参数多而访问稀疏)通常不会直接拖慢计算,但会加大通信量并可能造成热点分片;如果新增的是稠密参数、每个 batch 都要同步全量梯度,网络带宽就成了瓶颈。所以「多少机器才能让训练速度持平」不是定数,要按算力利用率与通信计算比来估,并考虑数据并行、张量并行、流水并行与专家并行的组合;线性度取决于通信能否被计算掩盖,加速比到 80% 以上就算不错,规模再往上收益递减。回答时最好给出自己的估算口径(单卡算力乘卡数乘利用率除以总 FLOPs),并指出瓶颈在哪项资源。

RAG 的整体流程与切片粒度

RAG 的链路分离线索引与在线检索生成两段。离线做文档解析(PDF、PPT、图片、网页分别要 OCR、版面还原、表格与公式处理)、清洗去噪、切片、embedding 编码入向量库,同时保留元数据(来源、标题层级、版本、时间、权限);在线做 query 理解与改写、向量召回(常配关键词检索做混合召回)、重排精排、上下文组装与压缩,最后交给模型生成并附引用。改进方向分布在每一段:索引侧调切片与元数据、检索侧换 embedding 与加混合召回、排序侧加重排、生成侧约束引用与拒答。切片粒度的取舍有两面风险:切得太大,向量被多个主题稀释、相似度区分度下降、还挤占上下文预算;切得太小,语义不完整、指代与条件丢失、同一段知识被拆散导致检索到半句话。实用做法是按标题、段落、列表、代码块这类天然结构切,固定长度只作为兜底并加 10% 到 20% 重叠;更进一步是父子块或小块检索大块生成,以及给每个块补上所属章节标题这类上下文前缀,缓解切碎带来的语义漂移。切片长度最终要用评测说话:在同一套问题集上比较 Recall@K 与答案正确率,而不是凭直觉定。

推荐链路、指标、负采样与高热打压

召回、粗排、精排、重排的分工要一句话说清:召回从百万级候选按多路策略取回几百到几千条、追求覆盖率与效率;粗排用轻量模型降到几百、兼顾精度与算力;精排用较重的模型做精细打分与多目标融合;重排再处理多样性与业务规则。经典模型要能点名:召回有 ItemCF、UserCF、双塔、图召回、序列召回(MIND、SDM);粗排有双塔与轻量结构;精排有 Wide&Deep、DeepFM、DIN 与 DIEN、MMoE 与 PLE;重排有 DPP、MMR。NDCG 的算法是每个位置的相关性做增益(通常 2^rel - 1)、除以 log2(位置+1) 得折损增益,累加后除以理想排序的 DCG 归一化,因此它同时惩罚漏排与排太靠后;TopK 的 K 取决于候选池、上下文长度与延迟,一般用 Recall@K 曲线找边际收益拐点再用业务指标验证。AUC 是正负样本对的排序正确率,可通过排序位置求和 O(n log n) 算出;二分类用交叉熵,输出概率可用于阈值与计费。负采样是召回训练的核心工程:in-batch 负采样实现简单、能复用同批 embedding 计算,但样本偏差明显(热门物品被过度采样、不同 batch 分布不同);显式负采样能控制难度分布,两者结合的思路是「batch 内提供大量易负例、再注入同用户的困难负样本提供梯度方向」,代价是要处理分数尺度不一致与假负例。评测上除 NDCG 还要抽样看 case、做分层分析,避免均值掩盖问题。高热打压处理的是热门内容挤占曝光:训练侧对热门降采样或加权惩罚、排序目标里加多样性或覆盖度约束、召回层做配额与打散,代价是短期点击指标可能下降,所以要用长期留存与多样性指标做权衡。

生成式推荐:码本坍塌、sid 质量与幻觉

生成式推荐的骨架是把物品离散成语义 ID 当词表,用自回归模型生成推荐序列。码本坍塌指向量量化训练中只有少数码字被使用、大量码字闲置,等于码本容量被浪费、量化误差上升;常见解法是用 EMA 更新码本并周期性重置长期未使用的码字、对使用率加熵正则或负载均衡损失、用分层或残差量化把信息分摊到多层码本、用较小码本配更细的多层结构,以及初始化时用聚类而不是随机。衡量 sid 质量看三件事:量化重建误差(原始 embedding 与由 sid 重建向量的相似度)、码本使用率与分布均匀度、同一物品在不同上下文中生成的 sid 是否稳定;最终还要用下游的召回率与效果验证,并检查是否出现一个 sid 对应多个物品的冲突。生成式推荐里的幻觉表现为生成出不存在、已下架或不合适的物品,治理靠「约束解码加校验」:把词表限制在有效物品集合内、用前缀树或状态机约束解码路径、生成后做存在性与库存、合规过滤,对超出分布的输出回退到检索式基线,并专门监控「生成结果不在库中的比例」这类幻觉率。OneRec 系列的演进逻辑:v1 把召回排序统一成生成式序列建模,v2 在结构与算力效率上改进(更大规模、更好的语义 ID),Think 版本引入显式推理——先生成用户意图与偏好再出推荐,复杂场景效果更好、代价是推理成本上升。要补一句工程约束:生成式方案对算力、可控性与冷启动要求更高,落地常是「生成式做召回加传统精排兜底」。

树模型与 DNN、DIN、embedding 与手撕

为什么用树模型而不是 DNN,要从数据与场景答:表格数据、特征维度不高、样本有限时,GBDT 对特征单调性、缺失值、量纲都不敏感,训练快、可解释、调参成本低,往往不输甚至优于 DNN;DNN 的优势在高维稀疏特征、海量样本与需要表征学习的场景。升级路径要具体:特征工程模板化(数值分桶、类别 embedding)、把 GBDT 的叶子索引作为特征喂给 DNN 或做蒸馏、先加宽加深的 MLP 再引入交叉结构,并配套改造特征中心化与在线推理延迟。特征重要性的衡量与前文一致,重点是给出指标与方差。DIN 的核心是注意力加激活单元,把兴趣建模成随候选变化的动态表示;DIEN 引入兴趣演化,SIM 用检索式建模解决长序列。行为序列训练时要统一口径(按时间取最近 N 条、不足补零并加 mask),并保证特征的时间正确性、避免标签泄漏;embedding 的来源有 ID 特征的 embedding 表端到端学、Word2Vec 或 Item2Vec 与图嵌入先学再微调、内容侧的文本或图像编码器、以及用下一物品预测做自监督。手撕题方面,螺旋矩阵考边界控制与方向切换,用上下左右四个边界逐步收缩最不易错,注意单行单列的退化;O(N) 求第 K 大用快速选择(partition 后只递归一侧,随机化 pivot 防最坏)或桶排序;立方根用二分或牛顿迭代,注意负数、精度终止条件与 0 附近收敛;岛屿数量用 DFS 或 BFS 泛洪并原地标记,或用并查集,注意边界检查与栈深度。