Data ScienceSQLmachine learningA/B testing

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

FAANG 和顶级初创公司最常问的数据科学面试题,附带详细答案,涵盖 SQL、统计学、机器学习和产品思维。

Interview Coach Pro · · 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 次。这比单次训练/测试划分给出了更可靠的模型性能估计,尤其在数据有限的情况下。

13. 如何处理缺失数据?

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

14. 什么是特征工程?

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

15. 如何评估推荐系统?

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

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

第 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》

总结

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

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

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

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

联系我们