共计6大部分,100道常见数据分析面试题,内含答案
第一部分:SQL
1. sql 如何解决数据倾斜问题?
数据倾斜通常发生在数据分布不均匀时,可以通过调整数据分布、使用更合适的分区策略、优化查询语句等方式解决。
2. SQL中 ,having 和 where 的 区 别 有 哪 些 ?
WHERE
用于过滤行,而HAVING
用于过滤分组后的结果集。
3. SQL中 ,union和 join 的 区 别 有 哪 些 ?
UNION
用于合并两个或多个查询结果集,去除重复行;JOIN
用于连接两个表,根据指定的条件返回匹配的行。
4. SQL 语句中的执行顺序是怎样的?
通常,SQL语句的执行顺序是:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY。
5.SQL如 何 实 现 去 重 操 作 ?
使用DISTINCT
关键字可以去除查询结果中的重复行。
6. SQL中,count(*)、count(字段) 、count(distinct字 段 ) 的 区 别 是 什 么
COUNT(*)
用于统计表中所有记录的数量,包括NULL值;
COUNT(字段名)
用于统计指定字段中非NULL值的数量;
而 COUNT(DISTINCT 字段名)
用于统计指定字段中不同(唯一)非NULL值的数量。
7.sql 如 何 将'yyyy-MM-dd' 的 日 期 格 式 转 换 为'yyyyMMdd' 形 式 ?
SELECT CONCAT(DATE_FORMAT(your_date_column, '%Y%m%d')) AS formatted_date
FROM your_table;
8. sql中如何求出两 个'yyyyMMdd' 格 式 的日期差多少天 ?
SELECT DATEDIFF(end_date, start_date) AS days_difference
FROM your_table;
9. sql 如 何 将 时 间 戳 转 换 为'yyyy-MM-dd' 格 式 ?
SELECT DATE_FORMAT(FROM_UNIXTIME(your_timestamp_column), '%Y-%m-%d') AS formatted_date
FROM your_table;
10. sql中,if 和 case when 的区别有哪些 ?
IF condition THEN
-- 如果条件为真,执行这里的代码
ELSEIF condition THEN
-- 如果第一个条件为假,但第二个条件为真,执行这里的代码
ELSE
-- 如果所有条件都为假,执行这里的代码
END IF;
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE resultN
END
11.sql中,如何求字段整体的标准差和均值 ?
SELECT AVG(column_name) AS mean,
STD(column_name) AS standard_deviation,
STDDEV_SAMP(column_name) AS standard_deviation
FROM your_table;
12. sql中,什么是笛卡尔积 ? 笛卡尔积一般出现在什么场景下?
假设表A有m行,表B有n行,当它们进行笛卡尔积操作时,结果集将有m*n行。
13.sql中,rank、dense rank、row number的区别是什么 ?
rank:跳跃排序,1 2 2 4
dense_rank:连续排序 1 2 2 3
row_number:没有重复值的排序 1 2 3 4
14. sql中 ,除 了rank以外还有哪些窗口函数 ?
ROW_NUMBER():为每个分组内的行分配一个唯一的序号,序号从1开始。
DENSE_RANK():为每个分组内的行分配一个唯一的序号,但当有并列时,下一个序号会跳过并列的序号,直接分配下一个序号。
NTILE(n):将分组内的行分成n个桶,并为每个桶分配一个序号。
SUM():计算分组内的总和。
AVG():计算分组内的平均值。
MIN():计算分组内的最小值。
MAX():计算分组内的最大值。
FIRST_VALUE():返回分组内第一个值。
LAST_VALUE():返回分组内最后一个值。
LAG():返回分组内当前行之前第n行的值。
LEAD():返回分组内当前行之后第n行的值。
PERCENT_RANK() 计算分组内当前行的百分比排名。
CUME_DIST() 计算分组内当前行的累积分布值。
PERCENTILE_CONT() 和 PERCENTILE_DISC():计算分组内连续或离散的百分位数。
SELECT
column1, column2,
ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2) AS row_num
FROM
your_table;
15. 简述一下max() 聚合函数和窗口函数max(A)over(partition by B)的区别
聚合函数
SELECT column_name, MAX(other_column) AS max_other_column
FROM table_name
GROUP BY column_name;
窗口函数
SELECT column_name, MAX(column_name) OVER (PARTITION BY column_name) AS max_value
FROM table_name;
区别总结
- 聚合函数:
MAX()
函数返回整个数据集或由GROUP BY
子句指定的分组中的最大值,结果集的行数会减少。 - 窗口函数:
MAX()
函数作为窗口函数时,返回每个分组内的最大值,但结果集的行数与原始数据集相同,每行都会显示其所在分组的最大值。
16. 窗口函数和where的 执行顺序孰先孰后 ?
窗口函数是在WHERE
子句之后、SELECT
子句之前执行的。
17.sql 中正则化函数(正则表达式Regular Expressions)一般如何使用?,
SQL使用REGEXP
和RLIKE
关键字来执行正则表达式匹配。REGEXP
是RLIKE
的同义词。
SELECT column_name
FROM table_name
WHERE column_name REGEXP 'pattern';
18. sql 中如何将int 类型的字段转换为string 类型 ?
SELECT CAST(column_name AS CHAR) AS string_column
FROM table_name;
-- 或者
SELECT CONVERT(column_name USING CHAR) AS string_column
FROM table_name;
19. sql 中,leftjoin、rightjoin、inner join有什么差别 ?
SELECT FORMAT(column_name, 2) AS formatted_column
FROM table_name;
20. sql如何将类型为float的字段保留两位小数?
第二部分:概率论
21 . 两个人轮流抛硬币,硬币表面均匀,正反面概率均为50%。抛到正面 者胜利,假如抛硬币 一 直抛到有人获胜为止,那么先抛硬币的人获胜的概率是多少?
=100%
22. 已知随机变量X 服从指数分布 λ ( 2 ) , 求随机变量X 的数学期望与方差
随机变量X的数学期望是0.5,方差是0.25。
23. 箱子里有15个球,其中10个红球,5个白球。从中抽5个球,求5个球中有3个以上是白球的概率?
至少有3个是白球的概率是1/6
24.X 服从正态分布N(0,2), 已知Y=2X+5, 求随机变量Y 的均值与标准差
25. 甲运动员罚球进球概率为50%,甲运动员罚球10次中,有3次以上进球的概率?
26. 已知随机变量X服从均匀分布U(3,6), 求 P(X>=4)
27. 已知有两个管道工甲和乙,他们其中一人会被指派维修某下水道。甲 员工维修成功概率为50%,乙为30%,并且甲和乙被指派的概率分别 为70%和30%。求管道会被维修成功的概率
28. 假设某国家没有生育限制,且该国家的夫妻生孩子会直到生到男孩为 止,在没有堕胎等情况的假定下,那么该国家在 一段时间内生下来的男孩和女孩的比重理论上应该是?
29. 求伯努利分布B(0.5) 的数学期望和方差
30. 已知X和Y分别服从正态分布N(4,2),N(1,3), 在 X和Y相互独立的情况下,求随机变量XY 的均值与标准差
第三部分:数理统计
31. 什么是中心极限定理?
中心极限定理说明,在一定条件下,大量独立随机变量之和趋近于正态分布(高斯分布),无论原始随机变量的分布如何。
32. 什么是置信区间?
32. 能不能解释下什么是置信度a?
33. 聊一聊双样本t 检验与配对样本t 检验的差别?
34. 解释一下中心极限定理和置信区间的关系?
35. 描述 一 下假设检验与置信区间的关系?
36. t 检验与z 检验有何差异?
37. 为什么t检验需要进行方差齐次性检验?
38. 聊一聊什么是单因素方差分析 ?
39. F检验的用途有哪些?
40. 描述一下一类错误和二类错误的差异 ?
41. 如何同时缩小一类错误和二类错误 ?
42. 一类错误和二类错误哪个更严重 ?
第四部分:机器学习
45. 线性回归普通最小二乘法(Ordinary Least Squares, OLS)运用的经典基本假设有哪些?
线性关系:自变量(X)与因变量(Y)之间存在线性关系,即模型可以表示为 Y = β0 + β1X1 + β2X2 + ... + βnXn + ε,其中β是回归系数,ε是误差项。
随机抽样:数据应该是随机抽样得到的,这样样本能够代表总体。
无完全多重共线性:自变量之间不应该存在完美的线性关系,即没有一个自变量是另一个自变量的完美线性函数。
误差项的期望值为零:误差项的期望值应该为零,即 E(ε) = 0,这意味着回归线在总体上是无偏的。
同方差性(Homoscedasticity):对于所有的观测值,误差项具有恒定的方差,即不存在异方差性(Heteroscedasticity)。
误差项的独立性:误差项之间相互独立,即一个误差项的值不应该依赖于另一个误差项的值。
正态分布的误差项:在大样本的情况下,误差项应该呈正态分布,这有助于进行假设检验和构建置信区间。
无异常值或极端值:数据中不应该包含异常值或极端值,这些值会对OLS估计产生不成比例的影响。
模型的适用性:所选模型应该能够合理地描述数据中的关系,即模型应该适合数据。
46. 多重共线性是什么 ? 如何解决多重共线性问题 ?
多重共线性(Multicollinearity)是指在多元线性回归模型中,两个或多个自变量之间存在高度相关性。这种相关性可能导致回归系数估计的不稳定性和不准确性。在极端情况下,多重共线性可能导致回归系数的符号与预期相反,或者使得某些系数的估计值变得非常大或非常小,甚至无法估计。
多重共线性的后果:
1.系数估计的不稳定性:多重共线性使得回归系数的估计值对数据中的微小变化非常敏感。
2.系数估计的不准确性:由于共线性,系数的标准误差可能被高估,导致系数的显著性检验结果不可靠。
3.模型预测能力的降低:多重共线性可能降低模型预测新数据的能力。
如何解决多重共线性问题?
解决多重共线性问题的方法有多种,以下是一些常见的方法:
1.变量选择:从模型中移除一些高度相关的变量,只保留对因变量影响最大的变量。
2.增加样本量:更多的数据可以帮助区分变量之间的关系,从而减少共线性的影响。
3.主成分回归(Principal Component Regression, PCR):通过主成分分析(PCA)将原始变量转换为一组不相关的主成分,然后使用这些主成分进行回归分析。
4.岭回归(Ridge Regression):通过在回归模型的损失函数中加入一个正则化项(L2惩罚项),来减少系数的大小,从而降低共线性的影响。
5.偏最小二乘回归(Partial Least Squares Regression, PLSR):结合了主成分分析和多元线性回归,通过提取对因变量解释能力最强的成分来构建模型。
6.变量变换:对变量进行变换(如对数变换、平方根变换等),以减少变量之间的相关性。
7.使用先验信息:如果可能,利用领域知识或先验信息来选择变量或构建模型。
8.模型诊断:使用统计诊断工具(如方差膨胀因子VIF)来检测和量化共线性问题。
在实际应用中,选择哪种方法取决于数据的具体情况和研究目的。通常,首先尝试通过变量选择和增加样本量来解决共线性问题。如果这些方法不可行或效果不佳,可以考虑使用主成分回归、岭回归或偏最小二乘回归等统计方法。在任何情况下,都应仔细检查模型的假设,并在必要时进行模型诊断,以确保模型的稳健性和可靠性。
46. 描述一下异方差性是什么,如何克服异方差性?
47. 什么是内生变量问题?如何解决?
48. 简述有监督学习和无监督学习的差异
-
目标差异:
- 有监督学习:目标是训练一个模型,使其能够预测或决定未见过的数据的输出标签。这通常涉及到分类(例如,判断邮件是否为垃圾邮件)或回归(例如,预测房价)任务。
- 无监督学习:目标是探索数据的内在结构和模式,没有给定的标签或输出。这通常涉及到聚类(例如,市场细分)或关联规则学习(例如,购物篮分析)。
-
数据标签:
- 有监督学习:使用标记过的训练数据,即每个训练样本都有一个对应的标签或结果。
- 无监督学习:使用未标记的训练数据,模型需要自行发现数据中的结构。
-
模型复杂度:
- 在有监督学习中,模型的复杂度通常由预测任务的复杂性决定。
- 在无监督学习中,模型的复杂度可能由数据的内在结构决定,这可能更加难以量化。
-
应用场景:
- 有监督学习:适用于有明确输出变量和足够标记数据的场景,如图像识别、语音识别等。
- 无监督学习:适用于数据探索、发现隐藏模式或数据压缩的场景,如客户细分、异常检测等。
-
评估方法:
- 有监督学习:可以使用准确率、召回率、F1分数等指标来评估模型性能。
- 无监督学习:评估较为困难,可能需要使用聚类有效性指标,如轮廓系数(Silhouette Coefficient)等,或者依赖领域专家的评估。
-
算法示例:
- 有监督学习:常见的算法包括决策树、支持向量机(SVM)、神经网络、线性回归、逻辑回归等。
- 无监督学习:常见的算法包括K-means聚类、层次聚类、主成分分析(PCA)、自编码器等。
-
对数据的要求:
- 有监督学习需要高质量、标记准确的数据集。
- 无监督学习可能更能容忍数据中的噪声和异常值,因为它们不需要标记数据。
49. 常用的有监督学习的基础算法有哪些 ?
有监督学习:常见的算法包括决策树、支持向量机(SVM)、神经网络、线性回归、逻辑回归等。
50. 简述一下参数模型与非参数模型的区别?
51. 逻辑回归模型是分类模型还是回归模型 ?
分类
52. 能否一句话概括一下什么是逻辑回归模型 ?
53. 感知机模型和SVM模型的差别 ?
54. 决策树模型的优缺点 ?
55. 决策树算法计算信息增益的衡量标准有哪 些 ?
56. 决策树ID3 、C4.5 、CART三种算法之间有什么区别 ?
57. 决策树如何降低过拟合的程度?
58. 决策树算法在sklearn当中有哪些关键的超参数?
59. 什么是超参数 ? 描述一下KNN 算法的超参数有哪些?
60. bagging 和 boosting 的区别是什么?
61. 简述 一 下随机森林与xgboost的 区 别
62. 描述一下xgboost 和GBDT 的关系?
63. 集成学习相比于普通基础算法的优势体现在哪?
64. 如何评价分类模型的优劣?
65.如何评价回归模型的优劣 ?
66.有哪些处理样本不均衡问题的处理方法 ?
67. 为什么会发生过拟合和欠拟合,怎么解决模型的过拟合和欠拟合的问题 ?
68. 解释一下什么是偏差和方差和泛化误差
69. 聚类模型有哪些 ?
70. k-means聚类的k如何确定 ?
71.k-means聚类的优缺点 ?
72.k-means聚类和层次聚类的差异 ?
73.k-means聚类如何更好地规避初始点的选择对模型造成的误差 ?
74. k-means 聚类 和DBSCAN 模型的差异和优缺点
75. PCA 是什么 ?
76. 如何确定PCA保留几个主成分 ?
77.PCA一般在什么场景下使用 ?
78. LDA(Linear Discriminant Analysis) 和PCA的差异?
第五部分:Python
79. Python有 哪 些 数 据 结 构
80. python中,元组和集合的区别是 ?
81. python中,for 循环和while循环的区别是 ?
82. python 的pandas 如何实现排序?
83. python 的pandas 如何实现sq| 中 的left join?
84. python 的pandas 如何实现sql 中的union?
85. python的 pandas如何计算某列的平均值和中位数 ?
86. python 的pandas中,如何实现类似于sql 中的where 进行限制?
87. python 的pandas 如何实现sql中的group by?
90.python 的pandas 中,如何删除某一列?
第六部分:AB实验
91/92. 解释一下什么是AB 实验 ?
93/94. 有哪些方法可以检验分流的均匀性 ? 什么是AA 实验 ?
95. 如何确定实验最小样本量 ?
96. 如何确定实验周期?
97. AB实验和因果推断的关系?
98. 互斥实验与正交实验的区别?
99. AB 实 验 的 基 本 假 设 ?
100. 什么情况下不能使用随机分流实验进行增效度量 ?