大多数公司给 24–72 小时,金融科技公司(如 Revolut)通常给 48 小时,科技公司(如 Google)通常给 72 小时。实际上,优秀的 Take-home 提交通常只需 8–12 小时的有效工作时间,剩余时间用于润色报告和代码注释。
为什么 DS 面试比 SWE 面试更复杂?
英国 Data Science 面试与软件工程(SWE)面试的最大区别在于:DS 面试没有统一的标准化题库,不同公司、不同 Desk 的面试形式差异极大。你可能在 Bloomberg 遇到纯技术的 SQL + Python 编程题,在 Revolut 遇到一个需要 3 天完成的 Take-home Assignment,在 McKinsey Analytics 遇到需要现场解读数据的 Case Study,在 DeepMind 遇到深度 ML 系统设计题。
理解这三种题型的底层逻辑,是制定备考策略的前提。本文将逐一拆解每种题型的考察维度、常见误区和高分策略。
第一类:Take-home Assignment(带回家作业)
什么是 Take-home Assignment?
Take-home Assignment 是 DS 面试中最能体现候选人真实工作能力的环节。公司会给你一个真实(或接近真实)的数据集和业务问题,要求你在 24–72 小时内完成分析,并提交报告或 Jupyter Notebook。
常见题型示例
| 公司类型 | 典型题目 | 时间限制 | |---------|---------|---------| | 金融科技(Revolut/Monzo) | 分析用户交易数据,识别异常行为并建立欺诈检测模型 | 48 小时 | | 咨询/分析(McKinsey/Bain) | 给定零售数据,分析销售下滑原因并提出改进建议 | 72 小时 | | 科技公司(Bloomberg/Palantir) | 清洗并分析金融时间序列数据,建立预测模型 | 24 小时 | | 学术/研究(DeepMind/Alan Turing) | 复现一篇 ML 论文的核心实验并分析结果 | 72 小时 |
评分标准:面试官真正在看什么?
很多候选人误以为 Take-home Assignment 的评分标准是"模型准确率最高",这是最常见的误区。实际上,面试官的评分维度包含:
- 问题理解(20%):你是否正确理解了业务问题?是否在分析前明确了假设?
- 数据探索(20%):EDA 是否系统全面?是否发现了数据质量问题并妥善处理?
- 方法选择(20%):你选择的方法是否合适?是否解释了为什么选择这个方法而不是其他方法?
- 结论表达(20%):结论是否清晰?是否有业务意义?是否量化了不确定性?
- 代码质量(20%):代码是否可读?是否有注释?是否可复现?
高分策略
- 先写分析框架,再写代码:在开始编码前,用 Markdown 写出你的分析思路(假设 → 数据探索 → 特征工程 → 建模 → 评估 → 结论),这会让你的 Notebook 逻辑清晰,也会让面试官看到你的结构化思维。
- 主动说出局限性:在结论部分,主动指出你的分析的局限性(数据量不足、时间限制、未测试的假设),这比假装没有局限性更能赢得信任。
- 商业语言 > 技术语言:结论部分用业务语言表达("欺诈用户的交易金额比正常用户高 3.2 倍,建议对单笔超过 £500 的跨境交易触发人工审核"),而不是技术语言("模型 AUC 为 0.87")。
第二类:Case Study(案例分析)
Case Study 与 Consulting Case 的区别
DS Case Study 与咨询公司的 Case Interview 有相似之处,但有一个关键区别:DS Case Study 要求你用数据驱动的方法解决问题,而不仅仅是框架化思维。
典型 DS Case Study 题型
*指标下降类*:"我们的 App 日活用户(DAU)上周下降了 15%,请分析可能的原因。"
- 这类题型的标准解题框架:
- 确认指标定义(DAU 如何计算?是否有数据管道问题?)
- 时间维度分析(是突然下降还是渐进下降?从什么时间点开始?)
- 分群分析(哪些用户群体受影响最大?新用户 vs 老用户?iOS vs Android?)
- 漏斗分析(是获客减少、激活率下降,还是留存率降低?)
- 外部因素(是否有竞品发布?是否有媒体负面报道?是否有节假日效应?)
- 假设验证(提出 2-3 个最可能的假设,说明如何用数据验证)
*实验设计类*:"我们想测试一个新的推荐算法,请设计 A/B 测试方案。"
- 这类题型的评分重点:
- 实验单元的选择(用户级别还是会话级别?为什么?)
- 样本量计算(需要多大的样本量才能检测到有意义的效果?)
- 护栏指标(除了核心指标,还需要监控哪些指标防止负面影响?)
- 网络效应处理(如果用户之间存在互动,如何避免实验组和对照组的污染?)
*产品决策类*:"我们有三个功能候选,数据显示功能 A 的点击率最高,但功能 B 的用户留存率最高,你会推荐上线哪个?"
这类题型考察你的指标体系思维:不同指标代表不同的业务目标,需要根据公司当前阶段(增长期 vs 变现期)和产品定位来权衡。
高分策略
- 先澄清,再分析:在开始分析前,花 1-2 分钟确认问题背景(公司阶段、产品目标、可用数据)。这不是浪费时间,而是展示你的专业性。
- 量化你的假设:不要说"用户可能因为 X 原因流失",要说"如果 X 是原因,我们预期会看到 Y 指标下降,Z 指标上升"。
- 结论要有行动建议:Case Study 的终点不是"分析出了原因",而是"基于分析,我建议采取以下行动"。
第三类:Technical Round(技术面试)
Technical Round 的三个子类型
DS 技术面试通常包含三个子类型,不同公司的侧重点不同:
1. SQL 编程题
- SQL 是 DS 面试中出现频率最高的技术考点,几乎所有公司都会考。高频考点包括:
- 窗口函数(ROW_NUMBER、RANK、LAG/LEAD、SUM OVER PARTITION BY)
- 自连接(Self Join)解决层级问题
- CTE(Common Table Expression)处理复杂查询
- 日期函数和时间序列聚合
- NULL 值处理和数据清洗
典型高频题:"找出每个用户连续登录天数最长的记录。"
1WITH daily_logins AS (
2 SELECT user_id, login_date,
3 ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date) AS rn
4 FROM logins
5),
6groups AS (
7 SELECT user_id, login_date,
8 DATE_SUB(login_date, INTERVAL rn DAY) AS grp
9 FROM daily_logins
10)
11SELECT user_id, MIN(login_date) AS streak_start,
12 MAX(login_date) AS streak_end,
13 COUNT(*) AS streak_length
14FROM groups
15GROUP BY user_id, grp
16ORDER BY streak_length DESC;2. Python/统计题
- Python 题目通常结合统计知识,考察候选人用代码解决实际数据问题的能力:
- Pandas 数据处理(groupby、merge、pivot_table、apply)
- NumPy 向量化计算
- 统计检验(t-test、chi-square test、Mann-Whitney U test)
- 机器学习模型实现(不依赖 sklearn,手写逻辑回归或决策树)
3. ML 系统设计题
- 高级 DS 岗位(Senior DS、Staff DS)通常会考察 ML 系统设计,要求候选人设计一个完整的机器学习系统:
- 问题定义(业务目标 → ML 目标 → 评估指标)
- 特征工程(哪些特征?如何处理缺失值和异常值?)
- 模型选择(为什么选这个模型?有什么权衡?)
- 线上部署(如何处理延迟要求?如何监控模型性能退化?)
- A/B 测试(如何验证模型上线后的效果?)
高分策略
- 先思考,后编码:在写代码前,大声说出你的思路。面试官评估的不只是代码结果,更是你的思维过程。
- 边界情况处理:主动考虑空数据、NULL 值、极端值等边界情况,这是区分 Junior 和 Senior 候选人的关键。
- 时间复杂度意识:即使 DS 面试不像 SWE 面试那样严格要求最优解,也要展示你对性能的意识("这个解法的时间复杂度是 O(n log n),如果数据量很大,我们可以考虑...")。
三种题型的备考优先级
根据 AT&T Career 学员在 2024–2025 申请季的面试反馈,不同类型公司的题型分布如下:
| 公司类型 | Take-home | Case Study | Technical | |---------|-----------|-----------|-----------| | 金融科技(Revolut/Monzo/Wise) | ★★★ | ★★ | ★★ | | 投资银行 DS(Goldman/Bloomberg) | ★★ | ★★ | ★★★ | | 咨询 Analytics(McKinsey/BCG) | ★ | ★★★ | ★★ | | 科技公司(Google/Meta/Amazon) | ★★ | ★★★ | ★★★ | | 研究机构(DeepMind/Alan Turing) | ★★★ | ★ | ★★★ |
备考建议
如果你的目标是金融科技公司,优先练习 Take-home Assignment 的报告撰写和 EDA 流程;如果目标是大型科技公司,优先练习 Case Study 的指标分析框架;如果目标是投资银行,优先练习 SQL 和 Python 编程题。
AT&T Career 的 DS Track 提供针对不同公司类型的定制化备考方案,包括真题 Mock Interview 和 Take-home Assignment 批改服务。
常见问题 · FAQ
DS 面试 Take-home Assignment 一般需要多长时间完成?+
大多数公司给 24–72 小时,金融科技公司(如 Revolut)通常给 48 小时,科技公司(如 Google)通常给 72 小时。实际上,优秀的 Take-home 提交通常只需 8–12 小时的有效工作时间,剩余时间用于润色报告和代码注释。
DS Case Study 面试需要提前准备什么框架?+
最重要的是掌握"指标下降分析框架"(确认数据 → 时间维度 → 分群分析 → 漏斗分析 → 外部因素 → 假设验证)和"实验设计框架"(实验单元 → 样本量 → 护栏指标 → 网络效应)。这两个框架覆盖了 80% 的 DS Case Study 题型。
DS 技术面试 SQL 题难度如何?需要准备到什么程度?+
大多数公司的 SQL 题难度在 LeetCode Medium 级别,重点考察窗口函数、CTE 和复杂聚合。建议在 LeetCode 上完成 50+ 道 SQL 题,重点练习 Hard 级别的窗口函数题。Bloomberg 和 Goldman Sachs 的 SQL 题难度较高,建议额外准备。
没有 DS 工作经验,如何在 Take-home Assignment 中展示能力?+
重点展示你的分析思维和沟通能力,而不是技术复杂度。一个逻辑清晰、结论有业务意义的简单分析,比一个模型复杂但结论混乱的分析更受欢迎。建议在 Kaggle 上完成 3–5 个完整的数据分析项目,作为练习素材。
DS 面试中 Python 和 R 哪个更重要?+
在英国 DS 市场,Python 是绝对主流,95% 以上的公司要求 Python。R 在学术研究和部分统计分析岗位中仍有使用,但如果你只能选一个语言深入学习,毫无疑问选择 Python。
如何在 DS 面试中展示"数据直觉"?+
数据直觉体现在:看到数据时能快速识别异常("这个值是 -999,可能是缺失值的编码")、能对结果做合理性判断("模型预测准确率 99.9%,这不太可能是真实结果,需要检查数据泄露")、能将统计结论翻译成业务语言。这种能力需要通过大量实际数据分析项目来培养。
Free Resource
免费领取【Data Science 求职全套资料包】
包含 CV 模板、面试题库、Networking 模板信及完整的求职 Timeline。已有 1,200+ 学员领取。
