第3章:检索排序算法面试
本章定位:面试中排序算法是搜索引擎技术的核心考点,占技术面题量的30%~40%。你需要同时掌握经典算法原理(BM25、TF‑IDF)与工业级排序链路(粗排→精排→重排),并理解不同公司(百度、字节、阿里)的侧重点差异。
📌 常见排序算法对比表
| 算法 | 核心思想 | 优势 | 劣势 | 公司侧重 |
|---|---|---|---|---|
| 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应该调大还是调小?为什么?”
问题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)?你用过哪些去偏方法?”
问题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%,你会怎么分析问题?”
公司侧重点速览:
- 百度(网页搜索):侧重BM25与传统排序,面试经常问倒排索引与TF‑IDF的工程优化(跳表、FST)。
- 字节、美团(混合搜索/推荐):侧重LTR + 多目标排序,必问GBDT、DIN、MMOE等模型。
- 阿里(电商搜索):强调商业排序(GMV导向),面试中会出现“如何平衡相关性得分与商业分”等交叉问题。