---
name: algorithm
description: 算法岗出题：机器学习基础、深度学习与 Transformer、模型训练与部署、实验设计与 AB 测试、推荐搜索 CV NLP 业务落地。算法工程师、推荐、搜索、CV、NLP、机器学习岗位加载。
keywords: [算法工程师, 机器学习, 深度学习, 推荐算法, 搜索算法, 计算机视觉, 自然语言处理, 模型部署, AB 实验, 特征工程, transformer, pytorch, machine learning, CV, NLP]
layer: domain
---

## 岗位职责与考察重点

算法岗在国内分为搜索推荐广告（字节、美团、阿里、快手需求最大）、CV、NLP 与多模态、风控与数据挖掘、机器学习平台等方向。真实面试通常三到四轮：一面考机器学习与深度学习基础加一道手撕（LeetCode 中等或手写模型组件如 attention、交叉熵、IoU），二面深挖项目与业务方向的模型演进（推荐的召回粗排精排、CV 的检测分割、NLP 的预训练与微调），三面考实验设计、业务理解与工程落地，主管面看方向匹配与潜力。

校招候选人的项目多为论文复现、比赛、实验室课题或实习中的一个模块，面试官不期待业务成果，看的是对基础公式的推导能力、对实验结果的诚实评估、能否解释每一个超参数与设计的理由。社招则必须交代线上指标、AB 实验的置信度、模型上线后的性能与稳定性问题，以及为什么这个方案而不是更简单的基线。

面试官最在意三件事：第一，基础是否扎实——损失函数、优化器、正则化、评估指标能否推导而不是背结论；第二，实验是否可信——有没有对照组、有没有泄漏、离线指标与线上指标背离时怎么判断；第三，工程落地——模型的延迟、吞吐、特征一致性、监控与回滚，算法工程师不只是训练模型的人。

## 主题

### 机器学习基础与模型选择
- 阶梯：过拟合与欠拟合的判断与对策 → 偏差方差分解、正则化的作用机制、树模型与线性模型的适用场景 → 训练集表现好线上差的归因（分布偏移、泄漏、标签噪声） → 可解释性、训练成本与效果的取舍，什么时候该用简单模型
- 好题：你的 XGBoost 在验证集 AUC 0.92，上线后效果接近随机，列出你会检查的五件事，按优先级排序并说明每一项怎么验证。
- 危险信号：过拟合只答"加正则"；说不出 GBDT 与随机森林的差异来源；把 AUC 高当作模型好。
- 期望信号：能区分泄漏、时间穿越、分布漂移；知道正则化对应的先验；能解释树模型对特征尺度不敏感的原因。

### 评估指标与业务目标
- 阶梯：precision、recall、AUC、F1 的定义与适用 → AUC 的排序含义、正负样本不平衡下指标的选择、GAUC 与 AUC 的差异 → 离线指标提升但线上指标不动的原因 → 指标与业务目标的对齐，代理指标的风险
- 好题：推荐模型的 AUC 提升了 1 个百分点，线上点击率却没有变化，你会从哪些角度解释？如果 GAUC 也提升了呢？
- 危险信号：AUC 只会背"ROC 下面积"；不知道全局 AUC 与用户内 AUC 的差别；把离线指标当最终目标。
- 期望信号：能解释 AUC 的概率含义；知道样本与线上分布的差异；能提出更贴近业务的代理指标。

### 深度学习训练细节
- 阶梯：梯度消失与爆炸的原因与对策 → BatchNorm 与 LayerNorm 的计算、训练与推理阶段的差异、Dropout 的作用 → loss 不下降或 NaN 的排查顺序、学习率与 batch size 的关系 → 训练稳定性与收敛速度的取舍、混合精度的风险
- 好题：你的模型训练到第三个 epoch loss 变成 NaN，你按什么顺序排查？如果把学习率降低十倍不再 NaN 但收敛很慢，还有什么办法？
- 危险信号：BN 只答"归一化"说不出推理时用什么统计量；NaN 只答"调小学习率"；不知道 warmup 的作用。
- 期望信号：有梯度裁剪、混合精度溢出、数据异常等排查清单；能解释 BN 在 batch 小时失效；知道学习率调度策略。

### Transformer 与注意力机制
- 阶梯：self-attention 的计算与复杂度 → 为什么除以根号 d、多头的作用、位置编码（绝对、相对、RoPE） → 长序列下的显存与速度问题、KV cache 的作用 → encoder-only、decoder-only、encoder-decoder 的选型，预训练目标对下游任务的影响
- 好题：手写 scaled dot-product attention 的公式并解释每一项；序列长度翻倍时显存和计算各变多少？为了处理 32K 长度你会改哪些地方？
- 危险信号：说不出除以根号 d 的原因；多头只答"多个视角"；不知道 attention 是二次复杂度。
- 期望信号：能推导 softmax 饱和与缩放的关系；知道 FlashAttention 或稀疏注意力的思路；能解释 RoPE 的外推特性。

### 大模型微调与应用
- 阶梯：全参数微调与 LoRA 等参数高效方法的差异 → LoRA 的低秩假设与显存账、SFT 与 RLHF/DPO 的定位 → 微调后通用能力下降、幻觉增多怎么诊断 → 微调、RAG、提示工程的选择依据与成本临界点
- 好题：业务要一个领域问答模型，你手上有两万条问答对，你会先做 RAG 还是先微调？各自的评估方式是什么？什么结果会让你切换方案？
- 危险信号：只会背 LoRA 的名字；把微调当作所有问题的解法；没有评测集就说效果好。
- 期望信号：能算 LoRA 的参数量与显存节省；知道灾难性遗忘与数据配比；有可执行的评估方案。

### 推荐系统链路
- 阶梯：召回、粗排、精排、重排各解决什么问题 → 双塔模型的结构与样本构造、负采样、特征交叉模型（DeepFM、DIN、MMoE）的动机 → 新模型离线好线上差、召回与排序目标不一致、样本选择偏差怎么处理 → 多目标权衡、冷启动与探索的取舍
- 好题：你的双塔召回离线 recall 提升明显、线上 AB 却负向，除了模型本身你会检查什么？召回样本是怎么构造的，负样本从哪里来？
- 危险信号：说不出各层的候选量级；负样本只答"随机采"；不知道曝光未点击样本的偏差。
- 期望信号：能说出各层的目标与约束；知道 batch 内负采样与流行度修正；能解释召回与精排的目标偏差。

### 特征工程与特征一致性
- 阶梯：特征的类型与处理方式（离散、连续、序列、交叉） → embedding 的构造与共享、特征重要性分析 → 特征穿越、训练与线上特征不一致的排查 → 特征数量、实时性与服务延迟的取舍
- 好题：模型上线后效果衰减明显，你怀疑训练特征与线上特征不一致，怎么设计一套验证方法？发现不一致后怎么在流程上防止再发生？
- 危险信号：不知道特征穿越是什么；线上线下一致性只答"用同一份代码"；说不出特征重要性的计算方式。
- 期望信号：有特征快照与回放对比的方案；知道实时特征的延迟窗口；能设计特征监控。

### 实验设计与 AB 测试
- 阶梯：AB 实验的基本原则与分层分桶 → 样本量、显著性、置信区间的计算与最小可检测效应 → 实验结果不显著、AA 实验不平、新奇效应与网络效应怎么处理 → 多个实验互相干扰的分层设计、短期指标与长期指标的取舍
- 好题：你的实验跑了三天、点击率提升 0.5% 但 p 值 0.15，产品经理想全量，你怎么回应？需要再跑多久？有没有不用等的办法？
- 危险信号：不知道显著性与样本量的关系；实验流量随便切；不知道 AA 实验的作用。
- 期望信号：能估算样本量；知道方差缩减方法；能识别辛普森悖论与分桶不均；对全量决策有明确标准。

### 模型部署与推理优化
- 阶梯：训练框架到推理服务的导出路径（ONNX、TorchScript、TensorRT） → 量化、蒸馏、剪枝的原理与精度代价，批处理与动态 batch → 线上推理 p99 延迟突增、GPU 利用率低、量化后精度掉太多怎么排查 → 延迟、吞吐、成本、精度的四维取舍，CPU 与 GPU 部署选择
- 好题：模型 INT8 量化后吞吐翻倍但某类样本的准确率掉了 5 个点，你怎么定位是哪些层敏感？有哪些方法在保持吞吐的前提下挽回精度？
- 危险信号：部署只答"用 Flask 包一下"；量化只知道"变小变快"；不知道 GPU 利用率低通常是数据加载或 batch 问题。
- 期望信号：能说出 PTQ 与 QAT 的差异；知道 profiling 工具；有 batching、缓存、模型并行等延迟优化手段。

### 数据质量与标注
- 阶梯：数据集怎么划分、为什么要按时间或用户划分 → 标签噪声的影响与处理、类别不平衡的采样与加权 → 数据泄漏怎么排查、标注不一致怎么度量 → 数据规模与标注成本的取舍、主动学习与弱监督何时值得
- 好题：你发现验证集有 10% 的样本与训练集重复，这对你之前汇报的指标意味着什么？重新划分后指标会往哪个方向变？怎么防止再发生？
- 危险信号：随机划分时序数据；不平衡只答"过采样"；没有检查过数据重复。
- 期望信号：能说出划分方式与业务场景的对应；知道标注一致性指标；有数据版本管理的意识。

### CV 与 NLP 方向专项
- 阶梯：经典任务的模型演进（检测、分割、预训练语言模型） → 损失函数与后处理（IoU、NMS、CTC、beam search）的细节 → 小目标漏检、领域迁移效果差、生成重复等具体问题的归因 → 精度、速度与标注成本的取舍，何时用预训练大模型替代专用模型
- 好题：检测模型在测试集 mAP 很高但在客户现场漏检严重，你怀疑什么？怎么在不重新标注大量数据的情况下改善？
- 危险信号：只会报模型名字；说不出 NMS 的阈值影响；不知道 beam search 与贪心的差别。
- 期望信号：能解释损失与后处理的作用；有领域迁移与数据增强的方案；知道大模型替代的成本边界。

### 业务落地与问题定义
- 阶梯：业务问题怎么转成机器学习问题 → 目标函数与业务目标的对齐、基线怎么建 → 上线后效果衰减、业务方对结果不信任怎么处理 → 什么时候不该用模型、规则与模型的取舍
- 好题：业务方说"提升用户留存"，你怎么把它拆成可训练的问题？先做什么基线？用什么指标向业务方证明模型比规则好？
- 危险信号：拿到问题直接选模型；没有基线；说不出模型失效的场景。
- 期望信号：能定义标签与预测窗口；先建规则或简单模型基线；有监控与退化处理方案。

## 好题 / 坏题对比

- 坏：说说什么是过拟合，怎么解决。
- 好：验证集 AUC 0.92 的模型上线后接近随机，列出你会检查的五件事并按优先级排序。
- 坏：介绍一下 Transformer 的结构。
- 好：序列长度翻倍时 attention 的显存和计算各变多少？要处理 32K 长度你会改哪几处，各自的精度代价是什么？
- 坏：AB 实验怎么做？
- 好：实验跑了三天提升 0.5% 但 p 值 0.15，产品想全量，你怎么回应、需要再跑多久、有没有不用等的办法？

## 项目结合钩子

- 简历出现推荐或广告模型 → 追召回样本构造、负采样、离线与线上指标的对应关系、AB 实验的置信度。
- 简历出现"准确率提升 X%" → 追指标定义、验证集划分方式、有没有泄漏、基线是什么。
- 简历出现论文复现 → 追复现结果与原文差距、差异归因、自己改动的部分。
- 简历出现比赛名次 → 追关键提升来自哪一步、集成的贡献、有没有过拟合榜单。
- 简历出现大模型微调 → 追数据来源与配比、评测集、与 RAG 或提示工程方案的对比。
- 简历出现模型上线 → 追 QPS、p99 延迟、部署方式、监控与回滚。
- 简历出现特征工程 → 追特征重要性怎么算、线上线下一致性怎么保证。
- 简历出现 CV 或 NLP 具体任务 → 追损失函数与后处理细节、失败样本分析。

## 出题原则

- 基础题必须追到公式或机制层面（推导、复杂度、统计量），只会背结论按不理解处理；手撕以模型组件为主，不出纯脑筋急转弯。
- 项目题的核心是实验可信度：验证集划分、泄漏、基线、置信度四项必问，任何一项答不出都要深挖。
- 校招看基础推导与对实验的诚实评估，不苛求线上成果；社招必须交代线上指标、AB 结论与部署性能，没有线上经历的按离线项目追问。
- 不考模型与论文的时效性名词（"最新的 SOTA 是什么"），考选型理由与失败案例；候选人的方向与题目方向不同时用其熟悉的任务替代。
