数据分析师面试通常会结合三个部分:技术考核(SQL、Excel,有时还有 Python)、业务案例(用数据推理一个问题),以及关于你做过的项目的行为题。面试官想看到的是,你能拿到正确的数字,解释它们的含义,并帮助别人做出决策。下面是 30 道数据分析师面试题,附有参考答案和完整的 SQL 示例。
面试官在看什么
| 领域 | 他们想看到什么 |
|---|---|
| SQL 与工具 | 正确、易读的查询;熟悉连接和聚合 |
| 数据质量 | 在相信一个数字之前,先检查其中的问题 |
| 业务感觉 | 你能把分析与决策联系起来 |
| 沟通能力 | 你能向非技术人员简单地解释结果 |
| 好奇心 | 你会追问“为什么”,并深入挖掘数据 |
SQL 题
这些示例使用两张表:
- orders(order_id, customer_id, order_date, amount)
- customers(customer_id, name, signup_date)
1. 找出总营收最高的两位客户
SELECT customer_id, SUM(amount) AS revenue
FROM orders
GROUP BY customer_id
ORDER BY revenue DESC
LIMIT 2;
2. 找出从未下过订单的客户
SELECT c.customer_id, c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.customer_id
WHERE o.order_id IS NULL;
解释为什么 LEFT JOIN 配合 IS NULL 可以实现这一目的:它保留了每一位客户,并在没有匹配的地方让订单列留空。
3. 找出每位客户的第二大订单
SELECT customer_id, order_id, amount
FROM (
SELECT customer_id, order_id, amount,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) AS rn
FROM orders
) ranked
WHERE rn = 2;
说明当数值相同时,ROW_NUMBER、RANK 和 DENSE_RANK 之间的区别。
4. 计算每月营收
SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;
DATE_TRUNC 是 PostgreSQL 的语法;在 SQLite 中你会使用 strftime('%Y-%m', order_date),其他数据库则有各自的函数。回答时要说明你使用的是哪种方言。
5. WHERE 和 HAVING 有什么区别?
WHERE 在分组之前过滤行;HAVING 在聚合之后过滤分组。
6. 连接有哪些类型?
内连接、左连接、右连接和全外连接;说明各自的使用场景,以及未匹配的行会怎样处理。
7. 你会如何找出重复的记录?
按应该唯一的列进行分组,并用 HAVING COUNT(*) > 1 进行过滤。
8. 什么是窗口函数?你会在什么时候使用它?
它是在相关行之间进行的计算,且不会把这些行合并成一行,例如累计求和、排名,或将每一行与前一行进行比较。
Excel 与电子表格
9. VLOOKUP 和 XLOOKUP(或 INDEX/MATCH)有什么区别?
XLOOKUP 和 INDEX/MATCH 可以向左查找,对缺失值的处理更灵活,并且在列位置变动时不会出错。
10. 你如何使用数据透视表?
用来快速按类别汇总数据,例如按地区和月份统计营收。
11. 你会如何清理一份杂乱的电子表格?
删除重复项,统一格式(日期、文本大小写),处理空白单元格,并检查异常值。
统计学
12. 均值和中位数有什么区别?你会在什么时候使用各自?
当数据呈偏态分布时,中位数更合适,例如收入或订单金额。
13. 什么是 p 值?
如果真的不存在任何效应,观察到至少与当前结果一样极端的结果的概率。p 值较小意味着这个结果不太可能仅仅是偶然,但它并不能告诉你效应的大小或重要程度。
14. 相关与因果有什么区别?
两个变量同向变化,并不意味着一个导致了另一个;可能存在第三个因素,或者只是巧合。实验有助于确立因果关系。
15. 你会如何设计一个 A/B 测试?
确定指标和假设,决定样本量,随机分配用户,在固定的时间段内运行,并检验统计显著性和实际影响。
16. 什么是异常值?你会如何处理?
先调查再决定是否移除;它可能是错误,也可能是真实而重要的情况。
数据清洗与质量
17. 你会如何处理缺失数据?
先弄清楚数据为什么缺失,然后再决定:删除、用合理的值填充,或者标记出来。并说明这些处理对结果的影响。
18. 你如何判断一个数据集是否可靠?
将行数与数据源进行核对,检查总计能否对得上,查看日期范围和重复项,并做抽样检查。
19. 讲一次你发现数据错误的经历
用一个简短的 STAR 故事,说明你是如何从源头上修复它的。
可视化与仪表盘
20. 你如何选择合适的图表?
用折线图展示随时间的趋势,用柱状图比较各类别,用散点图展示关系;避免使用分块过多的饼图。
21. 你会如何为高管设计仪表盘?
顶部放几个关键指标,然后是趋势图,标签要清晰,只在必要的地方加入筛选器。
22. 你用过哪些 BI 工具?
说出名称,以及你做过的一个仪表盘。可参阅我们的 Power BI 面试题。
业务案例题
23. 上周注册人数下降了 20%。你会如何调查?
“我首先会检查埋点和数据加载是否正常,确认下降确实存在。然后按平台、国家、流量来源和注册步骤进行对比,找出下降发生在哪里。如果问题集中在某一个渠道或某一步,我会检查那里是否有变化,比如某个活动结束或网站发布了新版本。我会分享我的发现,以及我们仍然不清楚的部分。”
24. 你会如何衡量一个新功能的效果?
确定目标,选择一个主要指标和若干护栏指标,并与对照组或上线前后的时间段进行比较。
25. 你会为一家线上商店跟踪哪些指标?
流量、转化率、客单价、复购率和获客成本。
26. 你会如何向非技术背景的经理解释一个复杂的发现?
先给出结论和它的影响,使用一张简单的图表,并把方法部分说得简短。
行为题
27. 讲一次改变了决策的分析
问题是什么,用了哪些数据,你发现了什么,以及因此改变了什么。
28. 描述一次你不得不使用不完整数据工作的经历
说明你做了哪些假设,以及你是如何沟通这些假设的。
29. 当多个利益相关者提出请求时,你如何排定优先级?
依据业务影响和紧急程度,并与利益相关者或你的经理达成一致。
30. 讲一次你的分析出错的经历
承认错误,修正它,并说明你现在会检查哪些内容。
关于如何组织这些故事,可参阅我们的 STAR 方法指南。
准备一个有分量的作品集项目
| 部分 | 应包括的内容 |
|---|---|
| 问题 | 一个清晰的业务问题 |
| 数据 | 数据来源、规模,以及你如何清洗它 |
| 方法 | SQL、电子表格或 Python 的步骤 |
| 发现 | 一到两个清晰的结果,配一张图表 |
| 决策 | 基于它,别人应该采取什么行动 |
如何准备
- 连续两周每天练习 SQL:连接、聚合和窗口函数。
- 复习基础统计:平均数、分布、A/B 测试、p 值。
- 准备一个作品集项目和三个 STAR 故事。
- 大声练习一个“这个指标为什么变化了”的案例。
- 研究公司的产品,以及它可能关注的指标。
如果是相关岗位,可参阅业务分析师面试题和 Python 面试题。如果你想借助工具来准备,我们的数据分析师面试 AI 工具汇总比较了各种选择。
练习 SQL 讲解和案例回答
用 YesToTheOffer 结合你的简历和职位描述,大声演练技术题和案例题,并回看你的转录内容。免费 30 分钟,无需订阅。



