第3章:检索排序算法面试

本章定位:面试中排序算法是搜索引擎技术的核心考点,占技术面题量的30%~40%。你需要同时掌握经典算法原理(BM25、TF‑IDF)与工业级排序链路(粗排→精排→重排),并理解不同公司(百度、字节、阿里)的侧重点差异。

理解问题 核心原理 对比/优缺点 工程实现 调优 & 冷启动 参数怎么定?(k1,b) LTR vs 传统排序 面试官期望:先讲清楚原理,再给出工程对比,最后落到业务调优

📌 常见排序算法对比表

算法核心思想优势劣势公司侧重
TF‑IDF词频 × 逆文档频率简单、可解释性强忽略文本长度、位置传统站内搜索(如知乎搜索)
BM25改进TF‑IDF,引入k1、b参数对长文档友好、效果稳定参数需要调优百度、Google 基础召回层
PageRank (QS)基于链接图的权威值传递体现网页重要性难以处理实时内容百度、搜狗网页搜索重排序
Learning to Rank使用ML模型排序(GBDT/DNN)特征融合强、效果上限高训练数据要求高、冷启动难字节、美团推荐+搜索

🎯 高频面试问答卡片

问题1:请解释BM25算法的原理及其与TF‑IDF的区别。

面试官考察点: 是否理解排序本质(相关性+重要性);是否具备参数调优经验;能否结合实际业务说明。

回答框架: ① 一句话定位:BM25是非线性词频权重模型;② 公式核心元素(IDF、词频饱和、文档长度归一化);③ 对比TF‑IDF(无长度惩罚/无饱和);④ 工程中k1、b如何设置。

示例回答(80字): “BM25在TF‑IDF基础上引入饱和函数(k1控制增长曲线)和文档长度归一化(b控制压缩比例)。经验上k1取1.2~2.0,b取0.75。相比TF‑IDF,BM25能抑制长文档偏好,在广告、新闻搜索中效果提升5%~10%。”

可能追问: “如果文档长度差异很大,b应该调大还是调小?为什么?”

⚠ 避坑: 不要只背公式,要讲出调参手感(例如:短文本场景b取0.3更优);也不要说“BM25一定优于TF‑IDF”,要说明在大规模简化场景下TF‑IDF仍有优势。

问题2:在搜索引擎中如何实现Learning to Rank?列举常用特征和模型。

面试官考察点: LTR项目落地经验;特征工程能力;模型选型思考(Pointwise/Pairwise/Listwise)。

回答框架: ① 排序问题建模(如Pairwise使用query-doc对);② 特征分类(文本相关性、用户行为、文档质量);③ 模型选型(GBDT→LambdaMART→DNN);④ 训练样本构建(CTR预估→点击/停留时长)。

示例回答(90字): “常用LambdaMART(GBDT + Pairwise loss)。特征分三类:文本匹配特征(BM25、ESIM语义分)、用户行为特征(CTR、停留时长)、文档质量特征(PageRank、内容置信度)。训练时用淘宝搜索日志构建pair,按qid分组,验证NDCG提升2~3个点。”

可能追问: “如何处理样本选择偏差(position bias)?你用过哪些去偏方法?”

💡 加分项: 提到“在ByteDance使用了全域负采样 + IPW(逆倾向加权)来纠正位置偏差”,体现工业级经验。

问题3:如何评估排序算法的效果?常用哪些指标?结合业务场景说明。

面试官考察点: 是否理解离线指标与在线指标的关系;能否根据业务选择合适指标;是否知道指标陷阱。

回答框架: ① 离线指标(NDCG@k、MAP、MRR);② 在线指标(CTR、停留时长、GMV/转化);③ 业务匹配:新闻搜索侧重时效分(ERR-IA),电商搜索侧重GMV和CTR;④ 注意点:指标间的冲突(CTR高但退货率也高)。

示例回答(100字): “离线常用NDCG@10,因为它考虑排序位置和分级相关性。在线关注CTR和Query下第一屏点击分布。例如电商搜索,我们会同时看GMV/nDCG – 如果NDCG上升但GMV下降,说明相关性排序牺牲了商业转化,需要引入LTR中的商业特征平衡。”

可能追问: “(结合数据)线上CTR提升2%但平均停留时长下降5%,你会怎么分析问题?”

⚠ 避坑: 不要只抛指标名称,要说出具体计算逻辑(比如DCG中gain值如何定义);也不要说“只看NDCG”,面试官期待你区分“效果”和“体验”。

公司侧重点速览:

  • 百度(网页搜索):侧重BM25与传统排序,面试经常问倒排索引与TF‑IDF的工程优化(跳表、FST)。
  • 字节、美团(混合搜索/推荐):侧重LTR + 多目标排序,必问GBDT、DIN、MMOE等模型。
  • 阿里(电商搜索):强调商业排序(GMV导向),面试中会出现“如何平衡相关性得分与商业分”等交叉问题。