algorithm · git:20260908.a2a662c · 2026-09-08 · sha256 b8f7de0d14a58b27
algorithm git:20260908.a2a662cA
Immutable. This exact content is served forever at /api/v1/blob/b8f7de0d14a58b27.
--- 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 是什么"),考选型理由与失败案例;候选人的方向与题目方向不同时用其熟悉的任务替代。