2026 年最常问的 20 道数据科学面试题(附答案)
DataScienceSQLmachinelearningA/Btesting

2026 年最常问的 20 道数据科学面试题(附答案)

2026年最常问的20道数据科学面试题完整解析:涵盖SQL查询优化、机器学习建模、统计学基础与A/B测试。每道题附参考答案与面试官追问方向,助你高效备战数据科学面试。

Sam · · 15 分钟阅读

顶级科技公司的数据科学面试考察四个核心领域:SQL统计学机器学习产品思维。与编码面试不同,数据科学面试很少有一个”正确”答案——面试官评估的是你的思维过程、沟通能力以及将商业问题转化为分析框架的能力。

以下是 20 道最常问的题目,按类别分类,附带详细答案。

SQL 题目

1. 从员工表中找出第二高的薪水

为什么问这个问题: 测试你是否能超越基础聚合操作。

-- Approach 1: Using LIMIT/OFFSET
SELECT DISTINCT salary FROM employees ORDER BY salary DESC LIMIT 1 OFFSET 1;

-- Approach 2: Using a subquery
SELECT MAX(salary) FROM employees
WHERE salary < (SELECT MAX(salary) FROM employees);

-- Approach 3: Using window functions (most elegant)
SELECT salary FROM (
  SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) as rnk
  FROM employees
) ranked WHERE rnk = 2;

关键提示: 一定要问清楚”第二高”是否指不同值。当存在并列时,DENSE_RANK()RANK() 有区别。

2. 编写查询找出每个类别收入最高的 3 个产品

WITH product_revenue AS (
  SELECT
    p.category_id,
    p.product_id,
    p.product_name,
    SUM(oi.quantity * oi.price) as total_revenue
  FROM products p
  JOIN order_items oi ON p.product_id = oi.product_id
  GROUP BY p.category_id, p.product_id, p.product_name
),
ranked AS (
  SELECT *,
    RANK() OVER (PARTITION BY category_id ORDER BY total_revenue DESC) as rnk
  FROM product_revenue
)
SELECT category_id, product_name, total_revenue
FROM ranked WHERE rnk <= 3;

关键提示: 窗口函数是面试中最常考的。熟练掌握 RANK()DENSE_RANK()ROW_NUMBER() 以及它们各自的使用场景。

3. 计算日活跃用户数的环比变化

WITH daily_users AS (
  SELECT
    DATE(event_timestamp) as event_date,
    COUNT(DISTINCT user_id) as active_users
  FROM user_events
  GROUP BY DATE(event_timestamp)
)
SELECT
  event_date,
  active_users,
  LAG(active_users) OVER (ORDER BY event_date) as prev_day_users,
  active_users - LAG(active_users) OVER (ORDER BY event_date) as dod_change
FROM daily_users;

统计学题目

4. 向非技术人员解释 p 值

优秀回答: “想象你在测试一个新的按钮颜色,看它是否能提高点击率。p 值告诉你的是:如果新颜色实际上没有任何效果,我们仅凭偶然运气就观察到这么大的差异的可能性有多大?p 值为 0.03 意味着这个结果纯属随机噪声的概率只有 3%。如果这个概率足够低(通常低于 5%),我们就得出结论:新颜色确实可能真的有区别。”

为什么重要: 这测试的是你解释统计学概念的能力——这是数据科学家每天的必备技能。

5. 第一类错误和第二类错误有什么区别?

  • 第一类错误(假阳性): 拒绝了实际上为真的零假设。举例:得出药物有效的结论,但实际上无效。
  • 第二类错误(假阴性): 未能拒绝实际上为假的零假设。举例:得出药物无效的结论,但实际上有效。

现实中的权衡: 在医学检测中,通常希望最小化第二类错误(不能漏诊)。在垃圾邮件检测中,希望最小化第一类错误(不要把正常邮件标记为垃圾邮件)。

6. 如何确定 A/B 测试的样本量?

你需要四个输入:

  1. 基准转化率(来自历史数据)
  2. 最小可检测效应(MDE)——你关心的最小变化幅度
  3. 统计显著性水平(α)——通常为 0.05
  4. 统计功效(1-β)——通常为 0.80

经验法则: 效应越小,需要的样本量越大。如果你的基准转化率是 10%,想检测 5% 的相对提升,大约需要每组 15,000 个用户。一定要在启动实验前计算这个值。

机器学习题目

7. 如何处理不平衡数据集?

多种策略,根据场景选择:

  1. 重采样: 过采样少数类(SMOTE)或欠采样多数类
  2. 类别权重: 让模型对少数类误分类施加更大的惩罚
  3. 阈值调整: 将分类阈值从 0.5 向少数类方向移动
  4. 异常检测框架: 将少数类视为异常点(隔离森林、单分类 SVM)
  5. 集成方法: 使用平衡子样本的 Bagging

面试官想听到的: 你理解在不平衡数据上使用准确率是一个具有误导性的指标。应该使用精确率、召回率、F1 分数或 ROC-AUC。

8. 解释偏差-方差权衡

  • 高偏差(欠拟合): 模型太简单,无法捕捉训练数据中的模式。解决方法:使用更复杂的模型、增加特征。
  • 高方差(过拟合): 模型太复杂,记住了训练数据但在新数据上表现不佳。解决方法:正则化、增加数据、特征选择、交叉验证。

类比: 想象准备考试。高偏差 = 你学习不够。高方差 = 你背下了练习题但不会做新题。

9. 什么时候用分类,什么时候用回归?

  • 分类: 输出是类别(垃圾邮件/正常邮件、流失/不流失、疾病/健康)
  • 回归: 输出是连续数值(房价、温度、薪水)

灰色地带: 如果你预测”流失概率”作为一个概率值,这从技术上讲是回归(逻辑回归输出概率),但用于分类。准备好讨论这个细微差别。

产品思维题目

10. YouTube 昨天观看时长下降了 10%,你会如何调查?

框架:细分 → 隔离 → 诊断 → 建议

  1. 验证: 测量是否正确?检查数据管道是否有 bug。
  2. 按以下维度细分:
    • 地理位置(是特定国家吗?)
    • 设备(移动端 vs 桌面端?)
    • 内容类型(短视频 vs 长视频?)
    • 用户群体(新用户 vs 老用户?)
  3. 检查近期变更: 新发布?A/B 测试?基础设施变更?
  4. 外部因素: 竞争对手发布、节假日、网络问题
  5. 建议: 根据根本原因,提出修复方案并衡量其影响

关键: 没有”正确”答案。面试官评估的是你系统性思考和缩小可能性范围的能力。

11. 你会如何衡量一个新功能的成功?

使用 HEART 框架(Google 的方法):

  • Happiness(满意度):用户满意度(调查、NPS)
  • Engagement(参与度):使用的频率和深度
  • Adoption(采用率):尝试该功能的新用户
  • Retention(留存率):回访用户
  • Task success(任务完成度):用户能否达成目标?

选择 1-2 个核心指标和 3-5 个护栏指标,确保你不会为了优化一个方面而破坏另一个方面。

更多常问问题

12. 什么是交叉验证,为什么使用它?

K 折交叉验证将数据分成 K 个子集,在 K-1 个折上训练,在剩余的折上验证。重复 K 次。这比单次训练/测试划分给出了更可靠的模型性能估计,尤其在数据有限的情况下。

面试加分点: 提到分层交叉验证(Stratified K-Fold)——确保每一折的类别比例与原始数据一致,对分类问题尤其重要。对于时间序列数据,要用前向验证(Forward Validation)而不是随机划分,因为未来数据不能用于训练。

13. 如何处理缺失数据?

  • 如果缺失少于 5% 且随机(MCAR),删除行/列
  • 数值/分类变量使用均值/中位数/众数填充
  • 使用基于模型的填充(KNN、MICE)
  • 创建”缺失”指示变量(有时缺失本身就有信息量)

进阶技巧: 区分三种缺失机制——MCAR(完全随机)、MAR(条件随机,如男性更可能报告收入)、MNAR(非随机,如高收入者更不愿意报告收入)。不同机制需要不同的处理策略。MNAR 是最难处理的,通常需要领域知识或专门模型。

14. 什么是特征工程?

从原始数据创建新特征以提升模型性能。举例:从时间戳中提取星期几、创建交互项、对连续变量分箱、从原始文本生成文本嵌入。

实战案例: 在电商推荐场景中,用户浏览时长、加购次数、收藏行为的组合特征比单一特征预测转化率高出 30%。特征工程的核心是理解业务——你需要知道哪些用户行为真正反映了购买意向。

15. 如何评估推荐系统?

  • 离线评估: Precision@K、Recall@K、NDCG、MAP
  • 在线评估: 点击率、转化率、推荐多样性
  • A/B 测试: 与基线对比(基于流行度的推荐)

常见陷阱: 离线评估高不代表在线效果好。离线评估只看模型预测准确性,但用户可能点击推荐不是因为推荐准确,而是因为标题吸引人或位置靠上。一定要同时监控多样性指标——如果推荐全是同类内容,用户会疲劳。

16. 梯度下降是如何工作的?

梯度下降通过迭代更新参数来最小化损失函数。每次更新沿着损失函数梯度的反方向移动,步长由学习率控制。

面试官常追问:

  • 学习率太高: 震荡不收敛
  • 学习率太低: 收敛极慢
  • 动量(Momentum): 加速收敛,避免局部极小值
  • Adam 优化器: 自适应学习率 + 动量,是目前最常用的优化器

17. 解释正则化(L1 vs L2)

正则化通过给损失函数添加惩罚项来防止过拟合:

  • L1(Lasso): 添加权重绝对值之和。倾向于产生稀疏解(很多权重变为 0),具有特征选择的效果。
  • L2(Ridge): 添加权重平方之和。倾向于让权重变小但不为 0,压缩所有特征的影响。

如何选择: 如果特征维度高且你怀疑很多特征是冗余的,选 L1。如果所有特征都可能有贡献但需要控制幅度,选 L2。Elastic Net 同时使用两者,兼顾两种优点。

18. 什么是过采样和欠采样?各有什么优缺点?

处理不平衡数据的基本技术:

  • 过采样(Over-sampling): 复制少数类样本或使用 SMOTE(在少数类样本间插值生成新样本)。优点是保留所有多数类信息,缺点是可能过拟合。
  • 欠采样(Under-sampling): 随机删除多数类样本。优点是训练速度快,缺点是丢弃了大量有价值的数据。

最佳实践: 通常结合两种方法——先欠采样减少多数类,再过采样增加少数类,使比例接近 1:1 或 1:2。

19. 解释 ROC 曲线和 AUC

  • ROC 曲线: 横轴是假阳性率(FPR),纵轴是真正性率(TPR),不同分类阈值下的 TPR/FPR 组合绘制成曲线。
  • AUC: ROC 曲线下面积。AUC = 1 表示完美分类器,AUC = 0.5 相当于随机猜测。

什么时候不用 AUC: 在极度不平衡的数据集上(如欺诈检测,正样本占比 0.1%),AUC 可能给出虚假的乐观结果。此时用 Precision-Recall 曲线更合适。

20. 如何设计一个用户流失预测模型?

完整的回答框架(面试官想看这个):

  1. 定义问题: 什么是”流失”?(7 天不登录?30 天?取消订阅?)定义直接影响数据标注。
  2. 特征工程: 用户行为(登录频率、使用时长、功能使用广度)、账户信息(注册时间、付费状态)、交互数据(客服工单数、投诉次数)。
  3. 模型选择: 逻辑回归(可解释性强)作为基线,XGBoost/LightGBM 作为主力模型。
  4. 评估指标: 在流失场景下,召回率比精确率更重要——宁可多预警也不要漏掉真正要流失的用户。
  5. 部署与迭代: 模型上线后监控漂移(概念漂移和数据漂移),定期重新训练。

数据科学面试准备:时间线

第 1-2 周: SQL 练习(在 LeetCode/DataLemur 上完成 20+ 题目) 第 3-4 周: 统计学基础 + 概率问题 第 5-6 周: 机器学习理论——注重直觉,而非数学证明 第 7-8 周: 产品思维案例 + 指标定义 第 9 周及以后: 模拟面试(完整的 45 分钟模拟)

资源推荐

  • SQL: DataLemur、StrataScratch、LeetCode 数据库题目
  • 统计学: Charles Wheelan 的《Naked Statistics》、Khan Academy
  • 机器学习: Aurélien Géron 的《Hands-On Machine Learning》
  • 产品思维: Kohavi 的《Trustworthy Online Controlled Experiments》

总结

数据科学面试同等看重沟通能力和技术能力。练习大声解释你的推理过程——不仅仅是写出答案。最优秀的候选人是那些能一步步带领面试官走过他们思维过程的人。


推荐阅读


DS 面试全流程系列

想要深入了解目标公司的 DS 面试风格?我们整理了以下公司的详细面经:


想要获得数据科学面试准备的个性化反馈?联系我们,我们会为你量身定制学习计划。

S

关于作者

Sam 是 Interview Coach Pro 的技术面试教练,长期辅导在美国求职的中文候选人准备 SDE、System Design、Behavioral、Data Engineer 和 ML Engineer 面试。

本文基于匿名面试复盘、公开岗位要求和一对一辅导中的高频问题整理,发布前会检查内容结构、术语准确性和可操作性。你也可以查看我们的 辅导团队辅导方法

相关面试辅导

如果你正在准备类似面试,可以直接从下面的专项辅导开始。

准备好拿下下一次面试了吗?

获取针对你的目标岗位和公司的个性化辅导方案。

联系我们