mcpField
M
ml-system-design-interview

ml-system-design-interview

github.com/curiositech生产力257134 次安装2 天前更新
代码仓库

关于 ml-system-design-interview

ML System Design Interview 是面向资深及以上 ML 工程师的系统设计面试辅导技能。它按需求、指标、数据、特征、模型、服务和监控组织回答,不讲授 ML 基础知识。

主要功能

  1. 01七阶段设计框架
  2. 0245 分钟面试时间安排
  3. 03典型 ML 系统题目集
  4. 04服务模式权衡对比
  5. 05资深级回答的区分信号
  6. 06白板策略与常见误区

适用场景

  1. 01练习 45 分钟 ML 设计面试
  2. 02组织推荐系统设计回答
  3. 03分析服务架构权衡
  4. 04评审系统设计回答

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/curiositech/some_claude_skills --skill ml-system-design-interview

安装后在 Claude Code 中输入/ml-system-design-interview确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.claude-plugin/
plugin.json
references/
evaluation-metrics-guide.md
ml-design-templates.md
serving-tradeoffs.md

详细介绍

ML 系统设计面试

面向资深及以上工程师的端到端 ML 流水线设计辅导。涵盖从问题定义到生产监控的完整流程——这是顶尖 ML 组织 L6+ 面试所要求的范围。

此技能面向拥有 15 年以上 ML/CV/AI/NLP 经验的人士,不讲解基础知识,而是帮助你将已有知识组织成面试官认可的形式。


适用场景

适用于:

  • 练习 45 分钟的 ML 系统设计面试
  • 组织推荐、排序、RAG、欺诈检测、感知系统的白板演示
  • 分析服务架构的权衡(批处理、在线处理与流处理)
  • 识别 L6+ 的差异化信号(问题主导权、组织约束、数据飞轮)
  • 审阅并评估 ML 系统设计回答

不适用于:

  • 编码面试(使用 senior-coding-interview)
  • 行为面试/领导力问题(使用 interview-loop-strategist)
  • ML 理论或数学推导
  • 实现模型或编写训练代码
  • 论文阅读或研究评审

7 阶段设计框架

每个 ML 系统设计回答都遵循这一流程。各阶段按顺序进行,但随着约束条件逐渐明确,你需要回到前面的阶段。下方的 Mermaid 图是你的白板框架。

flowchart TD
    R[1. Requirements\n- Business goal\n- Users and scale\n- Latency/throughput SLA\n- Constraints] --> M[2. Metrics\n- Offline: precision, recall, NDCG\n- Online: CTR, conversion, revenue\n- Guardrails: latency p99, fairness]
    M --> D[3. Data\n- Sources and collection\n- Labeling strategy\n- Pipeline: ETL, validation\n- Freshness and staleness]
    D --> F[4. Features\n- Engineering and transforms\n- Feature store architecture\n- Online vs offline features\n- Freshness requirements]
    F --> Mo[5. Model\n- Architecture selection\n- Training pipeline\n- Iteration strategy\n- Baseline and ablation]
    Mo --> S[6. Serving\n- Batch vs online vs streaming\n- Caching and precomputation\n- Scaling and cost\n- Canary and shadow mode]
    S --> Mon[7. Monitoring\n- Data drift detection\n- Model degradation alerts\n- A/B testing framework\n- Rollback strategy\n- Feedback loops]
    Mon -.->|Feedback loop| D
    Mon -.->|Retrain trigger| Mo
阶段详情

阶段 1 —— 需求(5 分钟) 在设计之前先提出澄清问题。明确:用户是谁?业务指标是什么?延迟 SLA 是多少?规模有多大(QPS、数据量)?有哪些硬性约束(成本、隐私、法规)?L6+ 候选人应主导问题定义——不要等面试官把需求告诉你。

阶段 2 —— 指标(3 分钟) 定义部署前可衡量的离线指标,以及对业务至关重要的在线指标。说明两者之间的差异:“离线 NDCG 提升并不总能转化为在线 CTR 提升,因为存在位置偏差和新颖性效应。”定义护栏指标:p99 延迟、不同用户群体之间的公平性、单次预测成本。

阶段 3 —— 数据(7 分钟) 训练数据从何而来?如何标注(人工、弱监督、隐式信号)?类别分布如何?数据需要多新?数据流水线是什么样的(批量 ETL 还是流处理)?有哪些数据质量检查?这一阶段能区分 L6+ 和 L5 候选人——初级候选人往往会假设数据都是干净且已标注的。

阶段 4 —— 特征(5 分钟) 模型需要哪些特征?哪些是预先计算的(离线),哪些是在请求时计算的(在线)?特征存储架构:在线存储(低延迟查询)与离线存储(批量训练)。特征新鲜度:用户特征每天更新,物品特征每小时更新,上下文特征实时更新。

阶段 5 —— 模型(8 分钟) 从简单基线(逻辑回归、XGBoost)入手并说明原因。然后提出生产架构(双塔、Transformer 等),并说明升级理由。讨论训练流水线:训练频率、数据量,以及如何处理分布偏移。迭代策略:优先开展哪些实验。

阶段 6 —— 服务(8 分钟) 系统设计与 ML 在此交汇。讨论:推理延迟要求、批量预计算与在线推理、GPU/CPU 的权衡、模型服务框架、缓存策略、成本优化(量化、蒸馏、竞价实例)。绘制服务架构图。

阶段 7 —— 监控(5 分钟) 部署之后会发生什么?数据漂移检测(PSI、KL 散度)。模型性能下降告警(指标随时间衰减)。A/B 测试框架(样本量、持续时间、新颖性效应)。回滚策略(影子模式、金丝雀流量比例)。随着时间推移不断改进模型的反馈闭环。


45 分钟时间规划

阶段分钟数覆盖内容
需求与澄清5业务目标、用户、规模、SLA、约束
指标3离线、在线、护栏指标、指标对齐
数据7来源、标注、管道、质量、时效性
特征5工程、存储架构、在线与离线拆分
模型8基线、生产架构、训练、迭代
服务8延迟、架构、成本、部署策略
监控5漂移、告警、A/B 测试、回滚、反馈
问答缓冲时间4面试官深入提问、为权衡取舍辩护

如果面试官插入问题,请灵活调整,但要简要覆盖全部 7 个阶段。漏掉监控是 L5 候选人最常犯的错误。


典型题目集

题目关键挑战必须讨论的内容
推荐系统冷启动、位置偏差、多目标优化双塔召回 + 重排序、探索与利用
搜索排序查询意图分类、相关性与互动度的权衡、大规模场景下的延迟倒排索引 + 向量嵌入检索、L1/L2 排序级联
内容审核多模态(文本+图像+视频)、对抗性规避、精确率与召回率的权衡人工参与闭环、分级升级、申诉工作流
RAG 管道检索质量、分块策略、幻觉检测、评估嵌入模型选择、混合搜索、重排序、引用
欺诈检测极端类别不平衡、对抗性适应、实时要求特征时效性、图特征、集成模型 + 规则、反馈延迟
自动驾驶感知传感器融合、安全关键延迟、长尾分布多任务架构、仿真、OTA 更新、监管

服务架构对比

模式延迟新鲜度成本最适用场景
批量预测不适用(预先计算)滞后数小时计算成本低、存储成本高邮件推荐、每日报告
在线推理10-500ms实时计算成本高(GPU)搜索排序、欺诈检测
准实时1-60s延迟数分钟中等信息流排序、内容审核
流式处理亚秒级持续高(始终运行)欺诈、异常检测、竞价

详细的服务权衡、框架对比和成本优化策略见 references/serving-tradeoffs.md。


L6+ 级别的差异化信号

Staff+ 级别的回答与 Senior 级别的回答有何不同:

1. 明确问题定义的责任 不要照单全收问题的表述。要问:“我们要优化什么业务指标?这是营收问题还是参与度问题?目前的解决方案是什么,为什么不够好?”L5 候选人会接受“构建一个推荐系统”这样的要求。L6+ 候选人会追问:“我们要推荐什么、推荐给谁,以及怎样才算成功?”

2. 讨论组织约束 真正的系统存在于组织之中。要考虑:团队规模(我们能否维护自定义模型,还是应该使用托管服务?)、值班负担、跨团队数据依赖、合规要求,以及从旧系统迁移的路径。

3. 数据飞轮策略 展现你对良性循环的思考:更好的模型 -> 更高的参与度 -> 更多数据 -> 更好的模型。讨论如何加速这一循环:主动学习、隐式反馈循环、探索策略、冷启动引导。

4. 自建还是采购 并非所有东西都应该定制开发。适当时选择托管服务(嵌入 API、特征存储、服务平台);在竞争优势有此需求时采用自定义方案。展现你对总拥有成本的理解。

5. 多目标思维 真正的系统会同时优化多个目标:相关性 AND 多样性、准确性 AND 公平性、质量 AND 延迟。讨论如何处理冲突:帕累托优化、约束优化、多任务学习、业务规则后处理。


白板策略

画什么,以及何时画:

时间绘制内容目的
0-5 分钟带项目符号的需求框为讨论定下基调,展现结构化思考
5-8 分钟指标表(离线与在线)表明你考虑的不只是模型准确率
8-15 分钟数据流水线图(来源 -> ETL -> 存储)展现你对数据工程的理解
15-20 分钟特征架构(离线存储 + 在线存储)展现你对特征存储的了解
20-28 分钟模型架构 + 服务图核心系统设计图示
28-36 分钟标注延迟的完整系统图串联所有内容,展现你交付系统的能力
36-41 分钟监控面板草图 + 反馈箭头闭合反馈环路,展现你对生产环境的思考

组件用方框表示,数据流用箭头表示,并标注延迟/吞吐量数值。图示应让第 30 分钟走进来的人也能看懂。


反模式

模型优先思维

新手:在了解问题、定义指标或讨论数据之前,就在前 2 分钟内跳到“我会使用 Transformer”或“让我介绍一下注意力机制”。70% 的时间花在模型架构上,0% 的时间花在服务上。

专家:前 10 分钟用于讨论需求、指标和数据,然后才提及任何模型。先提出一个简单的基线(基于人工设计特征的逻辑回归),只有在明确基线的局限性后,才论证增加复杂度的必要性。为服务和监控分配同等时间。

识别方式:架构图中有一个详细的模型框,却没有数据流水线、特征存储、服务层或监控组件。开场第一句话就提到模型架构。

忽略数据

新手:假设大规模的干净标注数据唾手可得。会说“我们会使用数百万个标注样本进行训练”,却不讨论标签从何而来、成本有多高、类别分布如何,或数据会变得多陈旧。

专家:会询问数据来源、标注策略(人工、弱监督或隐式信号)、类别不平衡处理方式、数据新鲜度 SLA 以及数据质量监控。会讨论标注成本,并提出降低成本的策略(主动学习、半监督方法、合成数据)。

判断标准:回答中完全没有讨论数据收集、标注成本、类别不平衡、数据质量检查或数据新鲜度。全文没有出现“标签”一词。

没有监控方案

新手:设计止步于服务层。完全不提模型部署后会发生什么,也不讨论如何检测性能下降、如何回滚,或如何随着时间推移改进模型。

专家:会讨论数据漂移检测(总体稳定性指数、特征分布监控)、模型性能衰退告警、具备严格统计方法的 A/B 测试框架、金丝雀部署策略、安全发布所用的影子模式,以及将数据反馈到重新训练流程中的明确反馈闭环。

判断标准:架构图中没有监控组件。没有从生产环境回到训练环节的反馈箭头。没有提及 A/B 测试、金丝雀部署或回滚。


参考文件

深入了解时请查阅以下文件——默认不会加载:

文件适用场景
references/ml-design-templates.md解决具体问题(推荐、搜索、RAG、欺诈、内容审核、感知)。包含 6 个完整设计及 Mermaid 图表。
references/serving-tradeoffs.md深入了解服务架构、框架选择、缓存、成本优化和部署策略。包含框架对比及按用例划分的延迟目标。
references/evaluation-metrics-guide.md选择指标、理解指标一致性、设计 A/B 测试、评估生成式 AI。包含指标决策树和公式。

评论

支持 Markdown