算法岗基础 / 03

算法岗能力栈

算法岗能力不是“会几个模型”这么简单。真实工作需要你把业务问题拆成数据问题、模型问题、策略问题和工程问题,再通过实验验证收益。

可以把能力栈分成六层:编程基础、数学统计、机器学习、业务建模、实验分析、工程落地。

第一层:编程和数据结构

编程基础决定你能不能把方案稳定实现出来。Python 是数据处理和建模的主力,C++ / Java 常用于高性能服务和工程系统。

需要掌握:

  • 数组、哈希表、堆、队列、树、图。
  • 排序、二分、双指针、动态规划、搜索。
  • 时间复杂度和空间复杂度分析。
  • 常见工程数据处理:SQL、Pandas、Spark 基础。

业务算法岗不要求你像竞赛选手一样刷到极限,但常见数据结构和复杂度必须稳。因为召回、匹配、路径、调度、在线服务里都会用到这些基础。

第二层:数学和统计

数学不是为了推公式,而是为了理解模型、指标和实验。

重点包括:

  • 概率分布、期望、方差、条件概率、贝叶斯。
  • 统计估计、置信区间、假设检验、p-value。
  • 线性代数、向量空间、矩阵分解。
  • 最优化基础:梯度、凸优化、拉格朗日、约束优化。

如果做因果推断、广告、增长、运筹,这一层尤其重要。很多面试问题本质上是在问你是否理解偏差、方差、随机性和约束。

第三层:机器学习和深度学习

机器学习是算法岗的核心工具箱。

基础模型要会:

  • 线性回归、逻辑回归、树模型、GBDT、XGBoost。
  • Embedding、DNN、Wide & Deep、DeepFM、DIN、DCN。
  • 序列模型、Transformer、预训练模型。
  • 聚类、异常检测、图模型、表示学习。

但准备时不要只背模型结构。更重要的是理解:

  • 样本怎么构造。
  • 标签怎么定义。
  • loss 和业务目标是否一致。
  • 负样本怎么采。
  • 数据泄漏和训练线上不一致怎么处理。
  • 模型输出如何校准。

第四层:业务建模

业务建模是区分“会调模型”和“会做算法岗”的关键。

例如:

  • 推荐不是预测点击,而是优化长期消费和生态。
  • 广告不是预测 CTR,而是优化广告主 ROI 和平台收入。
  • 风控不是拦截风险,而是在风险和误伤之间取舍。
  • 调度不是算最短路径,而是在实时约束下做全局资源分配。

业务建模要回答:

  1. 目标是什么。
  2. 谁是决策对象。
  3. 可用动作是什么。
  4. 约束是什么。
  5. 指标如何衡量。
  6. 策略如何上线。

第五层:实验和因果分析

算法岗必须会证明效果。离线指标只是第一步,真正的收益通常要通过在线实验验证。

需要掌握:

  • A/B 实验基本设计。
  • 样本量、显著性、置信区间。
  • 主指标和护栏指标。
  • 实验分层、分流、污染和干扰。
  • ablation 和收益归因。
  • 因果推断基础:DID、PSM、IV、DR、uplift。

面试里常见追问是:“你怎么证明这个提升是你的方案带来的?”如果只能回答“离线指标涨了”,通常不够。

第六层:工程落地

算法方案最终要上线。工程落地决定方案能不能持续产生价值。

需要理解:

  • 特征生产:离线特征、实时特征、特征一致性。
  • 模型训练:样本流水线、训练调度、模型版本。
  • 在线服务:延迟、吞吐、缓存、降级。
  • 监控告警:输入分布、输出分布、业务指标、异常 case。
  • 反馈闭环:日志、标签回流、再训练、策略复盘。

一个不能上线、不能监控、不能回滚的模型,在业务里风险很高。

不同方向的能力侧重

方向 更看重什么
推荐 / 搜索 排序模型、召回、特征样本、A/B 实验
广告 预估校准、出价机制、预算控制、ROI
风控 标签噪声、对抗、规则模型协同、误伤
运筹调度 建模、约束、求解、仿真、实时优化
NLP / AIGC RAG、评测、推理成本、幻觉控制
增长 / 因果 uplift、实验设计、增量评估、预算分配

如何补短板

如果你编程弱,先刷基础题和 SQL,不要急着堆模型项目。
如果你模型弱,先掌握 LR、GBDT、DNN、Transformer 的适用场景。
如果你业务弱,多拆 JD,多看产品链路和指标体系。
如果你实验弱,重点补 A/B、因果和指标归因。
如果你工程弱,做一个从训练到服务的完整小项目。

面试表达模板

我的能力栈主要分三块:第一是模型和数据能力,能完成样本构造、特征工程、模型训练和评估;第二是业务建模能力,能把业务目标转成指标、标签和策略;第三是工程和实验能力,能考虑上线延迟、监控、A/B 实验和收益归因。我认为算法岗不只是追离线指标,而是要把模型变成可上线、可验证、可迭代的业务方案。

下一篇建议继续看: