2026年《必背60题》数据分析师高频面试题包含详细解答_第1页
2026年《必背60题》数据分析师高频面试题包含详细解答_第2页
2026年《必背60题》数据分析师高频面试题包含详细解答_第3页
2026年《必背60题》数据分析师高频面试题包含详细解答_第4页
2026年《必背60题》数据分析师高频面试题包含详细解答_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据分析师高频面试题

【精选近三年60道高频面试题】

【题目来源:学员面试分享复盘及网络真题整理】

【注:每道题含高分回答示例+避坑指南】

1.请做一个自我介绍(基本必考|重点准备)

2.请详细介绍一个你觉得最有成就感的数据分析项目,并说明你在其中的具体贡献和产出

(极高频|重点准备)

3.SQL中RANK()、DENSE_RANK()和ROW_NUMBER()这三个窗口函数有什么区别?请举例

说明(基本必考|学员真题)

4.如果让你给非技术背景的产品经理解释“P值(P-value)”,你会怎么说?(极高频|考察

软实力)

5.在A/B测试中,如何确定样本量?影响样本量的因素有哪些?(重点准备|需深度思考)

6.某APP昨日DAU(日活跃用户数)突然下降了20%,你将如何开展分析排查?请列出分

析框架(极高频|需深度思考)

7.什么是辛普森悖论(Simpson'sParadox)?在业务分析中如何避免?(常问|网友分

享)

8.SQL查询中,LEFTJOIN、INNERJOIN和FULLJOIN在处理空值和非匹配行时的具体

差异是什么?(基本必考|学员真题)

9.请简述第一类错误(弃真)和第二类错误(取伪)的区别,业务场景中如何权衡这两者?

(重点准备|需深度思考)

10.你常用的Python数据分析库有哪些?Pandas中merge和concat有什么区别?(基本必

考|考察实操)

11.如何定义留存率?如果让你用SQL计算次日留存率,你会怎么写逻辑?(极高频|学员真

题)

12.在数据清洗过程中,你通常如何处理缺失值(MissingValues)和异常值(Outliers)?

(常问|考察实操)

13.请解释什么是“北极星指标”(NorthStarMetric),并为你熟悉的某款产品设计一个北极

星指标(极高频|需深度思考)

14.SQL优化有哪些常见策略?当一个查询非常慢时,你会如何排查?(重点准备|反复验

证)

15.什么是漏斗分析模型?在实际业务中,如何通过漏斗分析提升转化率?(常问|网友分

享)

16.请解释置信区间(ConfidenceInterval)的含义,95%的置信区间代表什么?(重点准备|

学员真题)

17.这里的有一张订单表,请手写SQL查询每个用户的最近一次购买日期和总消费金额(基

本必考|考察实操)

18.什么是RFM模型?如何利用RFM模型对用户进行分层运营?(极高频|网友分享)

19.在A/B测试中,如果实验组和对照组的指标差异显著,但上线后效果却不佳,可能的原因

有哪些?(需深度思考|反复验证)

20.假如你的分析结果和业务方的经验直觉相悖,你会如何沟通并说服他们?(考察软实力|

考察抗压)

21.什么是用户生命周期价值(LTV)?如何计算LTV?(重点准备|学员真题)

22.监督学习和无监督学习的主要区别是什么?请各举一个算法例子(基本必考|背诵即可)

23.SQL中UNION和UNIONALL的区别是什么?在性能上有什么差异?(常问|学员真题)

24.请解释过拟合(Overfitting)和欠拟合(Underfitting),以及常见的解决手段(重点准备|

网友分享)

25.在电商场景下,GMV(商品交易总额)和实际销售额有什么区别?为什么要关注GMV?

(常问|学员真题)

26.如果数据仓库中的两张表数据量都非常大(亿级),进行关联操作时需要注意什么?

(需深度思考|考察实操)

27.什么是ROC曲线和AUC值?它们通常用来评估什么模型的性能?(基本必考|背诵即可)

28.用SQL如何解决“连续签到N天”的用户筛选问题?请描述思路(重点准备|网友分享)

29.当面对一个完全陌生的业务领域时,你会如何快速建立指标体系?(需深度思考|考察软

实力)

30.请解释K-Means聚类算法的原理,以及如何确定K值(常问|网友分享)

31.在Python中,apply()、map()和applymap()的区别是什么?(常问|考察实操)

32.什么是相关性分析?相关性是否意味着因果关系?如何验证因果关系?(重点准备|需深

度思考)

33.面对多维度的复杂报表需求,你如何将其简化并搭建成可视化Dashboard?(常问|考察

实操)

34.假如业务部门提出了一个紧急的数据提取需求,但目前数据口径未对齐,你会怎么处理?

(考察抗压|考察软实力)

35.什么是中心极限定理?它在统计推断中有什么作用?(重点准备|背诵即可)

36.描述一下决策树(DecisionTree)的构建过程,什么是信息增益?(常问|网友分享)

37.SQL中如何将一行多列的数据转换为多行一列(列转行)?(常问|考察实操)

38.什么是归因分析(AttributionAnalysis)?常见的归因模型有哪些(如末次点击、线性归

因等)?(重点准备|学员真题)

39.如果你的模型准确率很高,但召回率很低,这说明了什么?如何改进?(需深度思考|网

友分享)

40.遇到数据库死锁(Deadlock)或者查询超时,你一般怎么解决?(常问|考察实操)

41.请谈谈你对数据埋点的理解。如果你发现埋点数据不准确,你会如何校验?(极高频|反

复验证)

42.什么是维度灾难(CurseofDimensionality)?如何进行降维处理?(常问|背诵即可)

43.逻辑回归(LogisticRegression)是处理回归问题还是分类问题?它的核心公式是什么?

(基本必考|网友分享)

44.在Tableau或PowerBI中,你遇到过最复杂的计算逻辑是什么?是如何实现的?(常问|考

察实操)

45.两个不同数据源得出的同一个指标(如UV)数值不一致,你会如何排查原因?(极高频|

需深度思考)

46.什么是同期群分析(CohortAnalysis)?它主要解决什么业务问题?(重点准备|学员真

题)

47.SQL中的HAVING和WHERE有什么区别?执行顺序是怎样的?(基本必考|背诵即可)

48.贝叶斯定理(Bayes'Theorem)的基本公式是什么?在垃圾邮件过滤中是如何应用的?

(常问|网友分享)

49.遇到无法量化的业务指标(如“用户体验”),你会通过什么替代指标来分析?(需深度思

考|反复验证)

50.正则表达式(RegularExpression)在数据清洗中有什么作用?请举例说明(常问|考察

实操)

51.你如何看待数据分析师的职业发展?未来3年你的规划是什么?(常问|考察软实力)

52.请列举你最常用的3个Excel高级函数或功能,并说明使用场景(基本必考|考察实操)

53.什么是长尾效应(LongTailEffect)?在推荐系统中如何应用?(常问|网友分享)

54.如果你需要向CEO汇报一份月度经营分析报告,你会重点展示哪三张图表?(需深度思

考|考察软实力)

55.SQL中COUNT(*)、COUNT(1)和COUNT(column)在执行效率和结果上有什么区别?

(基本必考|学员真题)

56.什么是假设检验?步骤通常是怎样的?(重点准备|背诵即可)

57.当你发现挖掘出的数据洞察无法落地执行时,你会怎么做?(考察抗压|考察软实力)

58.请解释一下随机森林(RandomForest)算法及其优势(常问|网友分享)

59.假如数据库中有一张表没有主键,如何去重?(常问|考察实操)

60.我问完了,你有什么想问我的吗?(面试收尾|考察软实力)

【数据分析师】高频面试题深度解答

Q1:请做一个自我介绍(基本必考|重点准备)

❌不好的回答示例:

你好,我叫李明。我本科毕业于某某大学的统计学专业,2023年毕业。在学校期间

我学习了SQL和Python,成绩还不错,也拿过几次奖学金。我平时性格比较开朗,

喜欢钻研数据,对数据分析这个行业非常感兴趣。

之前在一家小公司做过几个月的实习,主要就是帮运营导导数据,做一下日报和周

报。虽然工作内容比较基础,但我很细心,基本没出过错。我看贵公司的这个岗位

要求需要懂业务,我觉得我虽然经验不多,但是学习能力很强,入职后如果有老员

工带我,我一定能很快上手。希望能给我一个机会加入你们。

为什么这么回答不好:

1.学生思维严重,缺乏职业化亮点:过多强调“学习能力”、“性格开朗”和“求老员工带”,这

是典型的职场新人弱势心态。企业招聘是为了解决问题,而不是招一个需要耗费成本培养

的学生。

2.技能描述过于空泛,无实证:仅仅提到“学习了SQL和Python”和“做过日报”,完全没有量

化这些技能的掌握程度(如:是否能写复杂的Join?是否能用Pandas做清洗?),面试

官无法判断你的真实水平。

3.缺乏业务成果的转化:将实习经历描述为“导数据”,这是一种流水线工人的心态。优秀的

分析师应该强调数据背后的业务价值,而不是机械的操作过程。

高分回答示例:

面试官好,我叫[你的名字],拥有3年互联网行业数据分析经验,此前主要专注于电

商领域的用户增长与精细化运营分析。我的核心竞争力可以概括为三个方面:

第一,具备扎实的数据处理与建模硬技能。我能够熟练使用SQL进行千万级数据

的复杂查询与ETL处理,习惯结合Python(Pandas/Scikit-learn)进行自动化

报表开发与预测模型搭建。在上一份工作中,我主导搭建了部门级的自动化监控看

板,将日报产出效率提升了**60%**。

第二,拥有敏锐的业务洞察力与闭环思维。我不只关注数据产出,更关注数据落

地。例如在去年的“双十一”复盘项目中,我通过RFM模型对沉睡用户进行了分层

挖掘,发现高价值流失用户群体的特征,并协同运营团队制定了针对性的召回策

略,最终帮助业务线将次月留存率提升了3个百分点,直接带来约50万的GMV增

量。

第三,具备跨部门沟通与推动能力。数据分析师往往需要连接技术与业务,我擅长

将复杂的统计学结论转化为业务听得懂的语言(如将P值解释为风险概率),并能

通过数据驱动产品迭代。

我一直关注贵公司在[目标领域,如金融科技]的发展,特别是近期上线的[某具体产

品]让我看到了数据驱动决策的巨大潜力。我非常希望能用我的技术积累和业务经

验,为团队的增长目标贡献价值。

Q2:请详细介绍一个你觉得最有成就感的数据分析项目,并说明你在其中的具

体贡献和产出(极高频|重点准备)

❌不好的回答示例:

我觉得最有成就感的是去年做的一个销售报表优化的项目。当时我们的数据都在

Excel里,非常乱,老板每天都要看不同的维度。

我的工作就是把这些数据整理出来。这个过程挺痛苦的,因为数据源有很多缺失

值,格式也不统一。我花了两周时间,用VLOOKUP把几个表拼在一起,然后做成

了透视表。

虽然中间遇到很多坑,比如数据对不上,但我最后都解决了。做完之后,老板看报

表方便了很多,不用每天催我了。我觉得这个项目锻炼了我的耐心和细心,也让我

对Excel更熟练了,算是我完成得比较好的一个任务。

为什么这么回答不好:

1.项目复杂度过低,缺乏技术含金量:通篇只提到了Excel和VLOOKUP,这在“数据分析

师”的面试中显得技能栈过于初级。对于需要处理海量数据的岗位,这种回答是致命的。

2.侧重过程苦劳,忽视业务功劳:花费大量篇幅描述“数据乱”、“过程痛苦”,却对项目带来

的商业价值(如:决策效率提升多少?发现了什么机会点?)只字未提。“方便了老板”是

一个极为主观且低价值的产出。

3.缺乏结构化复盘:回答像是在记流水账,没有清晰的背景、挑战、行动和结果(STAR原

则)。面试官听完后,无法提炼出你在这个项目中的独特贡献,感觉换个人也能做。

高分回答示例:

我想分享的是我在上家公司主导的“用户流失预警与召回”项目。当时我们的核心

APP次月留存率连续两个月下滑,业务部门急需找到原因并遏制流失。

1.明确问题与拆解指标(Situation&Task):

作为项目Owner,我首先通过SQL提取了近半年的用户行为日志(约2亿行数

据)。我没有直接跑模型,而是先进行了归因分析,利用漏斗模型定位到用户流失

主要发生在“首次使用核心功能”后的第3-7天,锁定了“新用户激活”这个关键症结。

2.技术实现与分析动作(Action):

为了精准识别高风险用户,我构建了一个基于RandomForest(随机森林)的流

失预测模型。

特征工程:我选取了用户的登录频次、核心功能点击率、页面停留时长等30+个特征,

并利用Python进行了缺失值填充和标准化处理。

模型调优:通过网格搜索(GridSearch)调参,将模型的AUC值提升至0.85,保证了预

测的准确性。

策略输出:我将预测出的“高潜流失用户”按流失概率分为ABC三类,并针对高价值的A类

用户,向运营团队建议了“定向发放限时优惠券”的策略。

业务结果与价值(Result):

该模型上线并通过AB测试验证后,实验组的用户留存率比对照组提升了5%。更重

要的是,我们将这一逻辑固化到了BI看板中,实现了每日自动预警。这个项目不仅

帮助公司挽回了约200万/年的潜在损失,也让我验证了“算法+业务策略”闭环的有

效性。

Q3:SQL中RANK()、DENSE_RANK()和ROW_NUMBER()这三个窗口函数有什么

区别?请举例说明(基本必考|学员真题)

❌不好的回答示例:

这三个都是排序用的窗口函数,区别好像在处理重复数据的时候。

ROW_NUMBER就是不管有没有重复,直接1234排下去。

RANK的话,如果有两个第一名,它会跳过第二名,直接变成第三名。

DENSE_RANK就是比较密集的排序,两个第一名之后,下一个还是第二名,不会

跳数字。

平时工作中我用ROW_NUMBER比较多,比如要去重的时候就用它。其他的两个用

的比较少,大概就是这个意思吧,具体的语法我可能需要查一下文档。

为什么这么回答不好:

1.表述随意,缺乏专业严谨性:使用“好像”、“大概就是这个意思”等词汇,暴露了基础知识

的不牢固。技术面试中,概念解释必须精准,不能模棱两可。

2.缺乏具体的数值演示:窗口函数的区别非常抽象,纯文字描述很难让面试官确认你是否

真懂。没有举出具体的“1,1,3”或“1,1,2”的序列例子,使得回答苍白无力。

3.应用场景单一:仅仅提到用ROW_NUMBER去重,没有展示出对另外两个函数实际应用场

景的理解(如:计算并列排名的奖金发放、班级成绩排名等),显得实战经验不足。

高分回答示例:

这三个函数主要用于处理排名和分组排序,它们在处理“并列数值”时的逻辑有本质

区别。为了讲清楚,假设我们有一个学生成绩表,其中有三个分数:100分、100

分、90分。

1.ROW_NUMBER():物理排序,不并列

逻辑:无论数值是否相同,它都会强制按行号生成连续的序列(1,2,3...)。

结果:针对上面的分数,排名为1,2,3。

应用场景:最常用的是去重。例如,我在计算“每个用户最近一次购买订单”时,会用PA

RTITIONBYuser_idORDERBYdateDESC,然后取rn=1,这样能确保每个用户只

取一条,且不会因为时间戳完全一致而产生多条数据。

2.RANK():并列跳号

逻辑:遇到相同数值并列排名,但会跳过后续的排名序号(留出空位)。

结果:排名为1,1,3(没有第2名)。

应用场景:适用于主要关注“绝对位置”的场景。比如选拔考试前3名入围,如果有2个人

并列第一,按照规则可能就不再录取第2名,直接看第3个位置的人,这时候用RANK比较

符合直觉。

3.DENSE_RANK():并列不跳号

逻辑:遇到相同数值并列排名,后续排名紧接着当前排名(稠密排序)。

结果:排名为1,1,2。

应用场景:适用于“排行榜”类业务。比如发放游戏奖励,所有达到第一名分数的人都发金

牌,紧接着分数的发银牌。如果用RANK,可能会导致“没人拿银牌”的情况,而

DENSE_RANK能保证名次的连续性。

总结来说,选择哪个函数完全取决于业务对“并列”和“名次连续性”的具体定义。

Q4:如果让你给非技术背景的产品经理解释“P值(P-value)”,你会怎么说?

(极高频|考察软实力)

❌不好的回答示例:

P值是在原假设为真的前提下,出现当前样本统计量或更极端情况的概率。如果P值

小于0.05,我们就拒绝原假设,认为结果是显著的。

比如做A/B测试,我们设定原假设是两个版本没有区别。然后算一个统计量,查表

得到P值。如果P值很小,就说明两个版本肯定有区别。

这个概念其实挺统计学的,对于产品经理来说,你们只要看最后那个结论是不是“显

著”就行了,具体的计算公式不用太纠结,交给我就行。

为什么这么回答不好:

1.照本宣科,无效沟通:直接背诵教科书定义(“原假设”、“统计量”、“极端情况”),非技

术人员根本听不懂。这显示出候选人缺乏同理心和“翻译”技术语言的能力。

2.逻辑跳跃,结论武断:说“P值很小就说明肯定有区别”是不严谨的(P值只是概率,不是

绝对真理),且没有解释为什么0.05是标准。

3.态度傲慢:“交给我就行,你们不用太纠结”,这种表达容易让业务方感觉到被轻视,不利

于后续的跨部门合作。面试官考察的是沟通能力,而不是背书能力。

高分回答示例:

给产品经理沟通时,我会避开复杂的统计学术语,用“运气vs实力”的例子来解

释。

我会这样说:

“想象一下,我们现在有一枚硬币,你怀疑它被做了手脚(不是均匀的),但我认为

它是正常的。为了验证,我们连抛了10次,结果10次全是正面。

这个时候,P值就是‘假如这枚硬币是正常的,纯靠运气抛出10次全正’的概率。

经过计算,这个概率大约是0.001(千分之一)。

这就意味着:如果我们坚持认为硬币是正常的,那么刚才发生的‘10次全正’事件简

直就是奇迹。相比于相信‘发生了奇迹’,我们更倾向于相信‘这枚硬币确实有问题

(被做了手脚)’。

回到我们的A/B测试场景:

原假设(硬币正常):新旧版本的按钮点击率其实没区别。

P值(运气概率):我们观测到了新版本涨了5%。如果真的没区别,纯靠数据波动(运

气)涨5%的概率有多大?

P<0.05:意味着靠运气涨5%的概率不到5%。这太难发生了,所以我们有95%的把握

相信,新版本是真的好(实力),而不是运气好。

所以,P值越小,我们对‘新版本有效’这件事的信心就越足。通常我们把0.05作为那

条‘及格线’。”

Q5:在A/B测试中,如何确定样本量?影响样本量的因素有哪些?(重点准备|

需深度思考)

❌不好的回答示例:

样本量的话,一般是越多越好嘛,因为数据越多结果越准。但是也不能太多,不然

流量不够分。

通常我们做测试大概每个组几千或者一万个用户就差不多了。网上有一些计算器,

输入几个数字就能算出来。

主要影响因素应该就是现在的转化率吧,如果转化率很低,可能需要多一点样本。

还有就是看实验要做多久,一般我们都跑一个星期,包含工作日和周末,这样样本

量基本就够了。

为什么这么回答不好:

1.完全凭经验,缺乏科学依据:“大概几千一万”、“跑一个星期就够了”属于典型的拍脑袋决

策。如果没有统计学支撑,实验结果极其容易出现“假阳性”或“假阴性”。

2.遗漏关键参数:虽然提到了转化率,但漏掉了MDE(最小检测效应)、统计功效

(Power)和置信水平这些决定样本量最核心的参数。这表明候选人对A/B测试的底层原

理理解肤浅。

3.混淆了时间与样本量:实验时长是根据样本量和日均流量倒推出来的,而不是先定时间

再看样本量。逻辑因果关系搞反了。

高分回答示例:

确定样本量不能凭感觉,必须基于统计学公式(EvanMiller计算器背后的逻辑)。

在业务实战中,我通常会依据以下四个核心要素来计算最小样本量:

1.基础转化率(BaselineConversionRate):

这是对照组目前的表现。比如,当前按钮的点击率是2%。基础转化率越低(比如千

分之几的转化),通常需要越大的样本量才能捕捉到变化。

2.最小检测效应(MDE-MinimumDetectableEffect):

这是业务方“最少想看到多少提升”。这是最关键的权衡点。

如果我们想检测出0.1%的微小提升,需要极大的样本量(可能需要几百万)。

如果我们只关心10%以上的巨大提升,样本量可以很小(几千可能就够)。

实战话术:我通常会问产品经理:“如果提升只有1%,我们要不要推全?如果要,那样

本量就得大。”

置信水平(ConfidenceLevel,通常95%):

这代表我们避免“第一类错误(误报)”的能力。也就是确保“没有提升时,不要误判

为有提升”。一般固定为95%。

4.统计功效(Power,通常80%):

这代表我们要避免“第二类错误(漏报)”的能力。也就是“如果有提升,我有80%的

概率能检测出来”。

操作流程:

在实验设计阶段,我会先明确目前的Baseline,然后与业务方对齐MDE。例如,如

果Baseline是10%,业务希望检测出相对提升5%(即达到10.5%),Power定

80%,那么每组可能需要约50,000样本。如果流量不足,我会建议调大MDE(只

关注更明显的改进)或者延长实验周期,但必须确保周期覆盖完整的用户行为周期

(如7天)。

Q6:某APP昨日DAU(日活跃用户数)突然下降了20%,你将如何开展分析排

查?请列出分析框架(极高频|需深度思考)

❌不好的回答示例:

DAU下降20%肯定是个大问题。首先我会去问一下技术部,是不是服务器挂了或者

日志传输出了问题。如果技术那边没问题,我就去看一下昨天的渠道数据,是不是

哪个渠道停投了。

或者是不是昨天是工作日,前天是周末,自然回落?如果都不是,我会把数据拉出

来,看看是新用户少了还是老用户少了。

如果是老用户少了,就问问运营最近有没有搞什么活动结束了。总之就是把可能的

原因都排查一遍,找到原因后再写报告汇报给领导。

为什么这么回答不好:

1.缺乏结构化思维(这是致命伤):回答像无头苍蝇一样“想到哪指哪”(先问技术,再看渠

道,再看日期),没有展现出资深分析师应有的逻辑框架(如:先内后外、先技术后业

务)。

2.归因过于单一:仅仅列举了服务器、渠道、周末等几个点,遗漏了版本更新、竞品动

作、宏观环境等重要维度,显得分析视野狭窄。

3.被动执行心态:“问技术”、“问运营”,表现出过度依赖他人,缺乏独立通过数据定位问题

的能力。

高分回答示例:

面对DAU骤降20%这种严重异常,我会按照“数据校验->维度拆解->归因验

证”的漏斗框架进行排查:

1.第一层:数据真实性校验(TechnicalCheck)

确认口径:首先确认“DAU”的定义是否变更,SQL逻辑是否被修改。

校验链路:检查ETL调度任务是否延迟、埋点上报服务是否异常、数据库是否存在空

值。(实战中50%的暴跌都是数据故障导致的)。

第二层:指标维度拆解(DimensionDrill-down)

确认数据无误后,我会将DAU拆解为DAU=新用户+老用户,并进一步细分:

看新老:如果是新用户暴跌,重点查渠道投放(是否停投、素材被封);如果是老用户

暴跌,重点查产品活跃度。

看端侧:拆解iOS/Android/小程序,排查是否是特定版本(如刚发版的V5.0)出现了闪

退或Bug。

看路径:拆解登录漏斗,看是“打开APP”的人少了,还是“登录成功”的人少了(通过率异

常)。

3.第三层:业务与外部归因(Business&External)

内部因素:检查昨日是否有负向运营事故(如发错短信)、活动下线、或会员权益缩水

导致抵制。

外部因素:排查是否有竞品上线了强力活动(抢占时长)、是否出现舆情危机、或者是

否有特殊节假日/极端天气影响(如暴雨导致外卖类APP活跃暴涨,反之亦然)。

总结:找出原因后,若是技术故障则紧急修复并回溯数据;若是业务问题,则需协

同运营制定召回策略(如短信补发),并量化本次下跌造成的LTV损失。

Q7:什么是辛普森悖论(Simpson'sParadox)?在业务分析中如何避免?

(常问|网友分享)

❌不好的回答示例:

辛普森悖论就是说,有时候我们看整体数据得出的结论,和把数据拆开来看得出的

结论是完全相反的。

比如A和B两个产品,A的整体转化率比B高,但如果我们把用户分成男女两组,可

能会发现B在男性里转化率高,在女性里转化率也高。

这听起来很矛盾,但确实会发生。

为了避免这种情况,我们在分析的时候不能只看大盘数据,一定要多做细分,把维

度拆细一点,这样才能看到真实的情况,不会被平均数骗了。

为什么这么回答不好:

1.解释生硬,缺乏直观逻辑:虽然背出了定义,但没有解释清楚“为什么”会出现这种情况

(即:样本大小权重的混淆)。面试官听完可能还是云里雾里。

2.缺乏业务落地的具体场景:仅仅说了“要拆细”,但没有说明在什么具体业务场景下最容易

踩坑(如:新旧功能测试、不同渠道质量评估)。

3.表述过于浅层:没有触及问题的本质——即混杂变量(ConfoundingVariable)的影

响,显示出统计学功底不够深厚。

高分回答示例:

辛普森悖论是指:在分组比较中都占优势的一方,在总评中反而处于劣势的现象。

这通常是因为不同分组的样本量权重不一致导致的。

1.经典业务案例:

假设我们对比A、B两个广告渠道的转化率:

渠道A(高端渠道):推送给100个老板,转化20个(20%);推送给1000个学生,转

化10个(1%)。**总转化率≈2.7%**。

渠道B(低端渠道):推送给1000个老板,转化150个(15%);推送给100个学生,转

化0个(0%)。**总转化率≈13.6%**。

悖论出现:

如果不细分,你会觉得渠道B(13.6%)远好于渠道A(2.7%)。

但细分后你会发现:针对老板,A(20%)>B(15%);针对学生,A(1%)>B

(0%)。

结论反转:A其实在每个人群中都更强,但因为A大部分流量都打给了转化率天生

较低的“学生群体”,严重拉低了总分。

2.如何避免:

寻找混杂变量:在做对比分析时,必须思考是否存在“隐性变量”(如用户画像、城市等

级、设备类型)剧烈影响了结果。

分层分析(Segmentation):只要发现两组样本的结构(如男女比例、新老占比)差异

巨大,就严禁直接比较总量,必须进行分层对比或使用加权平均进行标准化处理。

Q8:SQL查询中,LEFTJOIN、INNERJOIN和FULLJOIN在处理空值和非匹配

行时的具体差异是什么?(基本必考|学员真题)

❌不好的回答示例:

这三个主要就是连接表的方式不一样。

InnerJoin是内连接,只保留两边都有的数据。如果左边有右边没有,就过滤掉。

LeftJoin是左连接,左边的表全都要保留,右边匹配不上的话,就显示为NULL。

FullJoin就是全连接,两张表的数据都留下来。不管匹不匹配,反正都显示出来,

匹配不上的地方填空值。

工作里我用LeftJoin最多,因为通常要保留主表的所有数据,InnerJoin用得少一

点,FullJoin基本没用过。

为什么这么回答不好:

1.定义过于教科书,缺乏深度:仅仅复述了基本定义,没有深入到“数据膨胀(多对

多)”或“过滤逻辑”等进阶细节。

2.忽视了NULL值的具体陷阱:没有提到在WHERE子句中对NULL进行过滤时容易犯的错误

(例如:LeftJoin后如果加了右表的Where条件,会强制退化为InnerJoin)。

3.缺乏实战场景感:简单的“左边保留右边填空”不足以证明你处理过复杂脏数据。

高分回答示例:

这三种Join的核心差异在于对“非匹配行”的取舍,这直接决定了结果集的行数和完

整性。假设我们有User表(左)和Order表(右)。

1.INNERJOIN(交集):

逻辑:仅返回左右两表中连接字段(Key)完全匹配的行。

NULL处理:任何一边Key为NULL或无法匹配,该行直接被丢弃。

场景:计算“有过付费行为的用户画像”。我只关心交集,没买过课的人直接过滤。

2.LEFTJOIN(左保全):

逻辑:强制保留左表所有行。如果右表没有匹配项,右表的字段自动填充为NULL。

注意点:這是最常用的Join,但极易踩坑。如果在LEFTJOIN后紧接着在WHERE子句中

筛选右表的字段(例如WHEREorder_amount>100),NULL行会被过滤掉,导致它

实际上退化成了INNERJOIN。正确的做法是将筛选条件写在ON子句中,或处理

NULL值。

3.FULLJOIN(并集):

逻辑:保留左右两表的所有行。左边没匹配右边补NULL,右边没匹配左边补NULL。

场景:比如每月的“对账”环节。我要对比“财务系统的账单”和“业务系统的订单”,查看哪

些是两边都有的,哪些是“有单无账”或“有账无单”的,这时候必须用FullJoin(或UnionAll

模拟)来确保没有任何数据的遗漏。

Q9:请简述第一类错误(弃真)和第二类错误(取伪)的区别,业务场景中如

何权衡这两者?(重点准备|需深度思考)

❌不好的回答示例:

第一类错误是Alpha错误,就是原假设是真的,但是我们拒绝了它,这就叫弃真。

第二类错误是Beta错误,就是原假设是假的,但是我们接受了它,这就叫取伪。

在业务里,我们一般把Alpha定在0.05,Beta定在0.2。

权衡的话,就是看你更在乎哪个。比如你要严格一点,就降低Alpha,但是Beta可

能会变高。反正这两个是此消彼长的关系,看老板想要什么结果吧。

为什么这么回答不好:

1.死记硬背,缺乏理解:纯粹背诵统计学定义,没有任何通俗的解释。面试官无法判断你

是否真的理解了它们代表的业务风险。

2.缺乏具体的业务权衡案例:仅仅说了“此消彼长”,但没有结合实际场景(如:风控vs营

销)来说明什么时候该容忍哪种错误。

3.参数设置僵化:提到“一般定0.05”,但在某些高风险领域(如医疗或重大资金风控),这

个标准是完全不适用的。

高分回答示例:

我通常用“宁可错杀一千”和“宁可漏网一个”来理解这两类错误。

1.第一类错误(FalsePositive,误报):

定义:本来没效果(或没问题),我们却误以为有效果。

场景:垃圾邮件拦截。如果把一封正常的入职Offer邮件(真)误判为垃圾邮件(弃)并

拦截了,后果很严重。这就是第一类错误。

2.第二类错误(FalseNegative,漏报):

定义:本来有效果(或有问题),我们却没检测出来。

场景:新冠病毒核酸检测。一个人明明感染了(假),但试剂盒没测出来,显示阴性

(取),导致他去传染别人。这就是第二类错误。

业务中的权衡策略:

这两者通常是Trade-off关系,必须根据业务成本来定:

在“反欺诈/风控”场景:我们更不能容忍第二类错误(漏抓坏人)。坏人进来会盗刷资

金,损失巨大。所以我们会调低阈值,宁愿“误伤”几个正常用户(增加第一类错误),也

要把坏人全挡住。

在“VIP用户体验/营销”场景:我们更不能容忍第一类错误(误骚扰)。如果误把普通用

户当成VIP发了错误的升级提示,用户体验极差。所以我们会提高门槛,宁愿漏掉几个潜

在VIP,也不要乱发消息骚扰用户。

Q10:你常用的Python数据分析库有哪些?Pandas中merge和concat有什么

区别?(基本必考|考察实操)

❌不好的回答示例:

我一般用Pandas处理数据,NumPy做计算,画图的话用Matplotlib和Seaborn。

偶尔也会用Sklearn做一下机器学习。

Merge和Concat的区别的话,Merge就像SQL里的Join,是横向拼接的。Concat

是纵向拼接的,就是把两个表上下叠在一起。

Merge需要指定key,Concat不需要。如果数据量大的话,Pandas可能会比较

慢,这时候可能要优化一下。

为什么这么回答不好:

1.回答过于简略:能够列出库名是基础,但没有说明每个库在工作流中的具体作用(如:

Seaborn用于统计绘图,Sklearn用于特征工程)。

2.对concat理解片面:concat既可以横向也可以纵向(通过axis参数控制),不仅仅

是“上下叠”。这个细节直接暴露了实操深度。

3.缺乏参数细节:没有提到merge中的how(连接方式)或concat中的ignore_index

等关键实操参数。

高分回答示例:

我的标准数据分析工具栈通常是:

1.Pandas:核心数据清洗与ETL(90%的时间都在用)。

2.NumPy:辅助进行复杂的矩阵运算或生成随机分布。

3.Matplotlib/Seaborn:Matplotlib用于底层定制绘图,Seaborn用于快速生成热力图、箱

线图等统计图表。

4.Scikit-learn:用于构建逻辑回归、聚类等模型,以及Imputer缺失值处理。

关于MergevsConcat,它们的思维逻辑完全不同:

1.pd.merge():基于“内容/Key”的横向关联

逻辑:类似SQL的Join操作。它必须依赖一个或多个Key(键)来对齐数据。

场景:当我需要把“用户基础信息表”和“用户订单表”通过user_id关联起来,扩充列维

度时,必须用Merge。

代码习惯:pd.merge(df1,df2,on='user_id',how='left')

2.pd.concat():基于“物理位置/结构”的拼接

逻辑:它是暴力的物理拼接,不关心内容匹配。

默认axis=0:纵向堆叠(Union)。比如把“1月的销售表”和“2月的销售表”上下拼成

一张总表。

设置axis=1:横向拼接。它是按索引(Index)强行左右拼在一起,如果索引对不

上,会产生大量空值。

场景:批量读取文件夹里的100个Excel文件后,我会用pd.concat(list_of_dfs)一次

性合并。

Q11:如何定义留存率?如果让你用SQL计算次日留存率,你会怎么写逻辑?

(极高频|学员真题)

❌不好的回答示例:

留存率就是用户来了之后,过了一段时间还在用的比例。

次日留存就是今天来的用户,明天又来了。

SQL的话,我会先查出今天的用户,再查出明天的用户,然后用InnerJoin连一

下,看有多少人是对上的。

最后用匹配上的人数除以今天的总人数,就是留存率。

具体的SQL语句我大概能写出来,就是Selectcountdistinctuser_idfromtable

ajointablebona.id=b.idwheredatediff=1...差不多这样。

为什么这么回答不好:

1.定义口语化:缺乏严谨的时间界定(“今天来的”是指新增用户还是活跃用户?这决定了

是“新增次留”还是“活跃次留”)。

2.SQL逻辑描述混乱:仅仅口述了Join,没有明确自连接(Self-join)的具体别名和条件。

3.忽视了日期差计算的坑:简单的datediff=1在不同数据库(MySQLvsHive)中

语法完全不同,且容易忽略“同一天多次登录”去重的问题。

高分回答示例:

1.业务定义:

留存率通常指“新增用户次日留存”。即:在第T日新增的用户中,在第T+1日又有活

跃行为的用户比例。

公式:(第1天新增且第2天活跃的用户数)/(第1天新增总用户数)

2.SQL实操逻辑(以MySQL为例):

核心思路是利用左连接(LeftJoin)这种“自关联”方式,或者使用DATEDIFF

函数。

假设有一张用户活跃表user_active_log(user_id,active_date)。

SQL

SELECT

a.active_date

AS

install_date,

COUNT(DISTINCT

a.user_id)

AS

new_users,

--

分母:首日新增人数

COUNT(DISTINCT

b.user_id)

AS

retained_users,

--

分子:次日仍活跃人数

COUNT(DISTINCT

b.user_id)

/

COUNT(DISTINCT

a.user_id)

AS

retention_rate

FROM

(SELECT

user_id,

MIN(active_date)

as

active_date

--

第一步:先锁定每个用户的新增日期

FROM

user_active_log

GROUP

BY

user_id)

a

LEFT

JOIN

user_active_log

b

ON

a.user_id

=

b.user_id

AND

DATEDIFF(b.active_date,

a.active_date)

=

1

--

关键条件:日期差为1天

GROUP

BY

a.active_date;

关键点解析:

子查询a:必须先通过MIN(date)锁定每个用户的首次激活日期,确保分母是“新增用

户”。

LEFTJOIN:保证即使第2天没人留存,分母(新增数据)也不会丢失。

去重:必须使用COUNT(DISTINCT),因为用户可能在同一天多次打开APP。

Q12:在数据清洗过程中,你通常如何处理缺失值(MissingValues)和异常

值(Outliers)?(常问|考察实操)

❌不好的回答示例:

缺失值的话,如果少的话我就直接删掉了,因为不影响大局。如果多的话,我就填

个0或者填个平均值。

异常值一般就是那种特别大的数,比如年龄200岁,这种肯定是错的,直接删掉就

行。

或者用Excel画个图,一眼就能看出来的离群点,手动剔除。主要还是看数据量

吧,数据量大就无所谓,数据量小就要小心点。

为什么这么回答不好:

1.处理手段过于粗暴:“直接删掉”或“填0”在很多场景下会引入巨大的偏差(Bias)。例

如,用户不填“收入”可能代表他是高收入人群,填0会严重误导分析。

2.缺乏检测方法:对于异常值,仅凭“一眼看”或“年龄200岁”这种极端例子,缺乏科学的统

计学判定标准(如3σ原则或IQR)。

3.没有探究原因:优秀的数据分析师在处理前会先问“为什么缺失?”,是系统Bug还是用户

故意不填?这决定了处理策略。

高分回答示例:

数据清洗占据了我工作60%的时间。处理这两类问题,我有严格的“检测-定性-处

理”SOP:

1.缺失值(MissingValues)处理:

首先判断缺失类型:是随机缺失(系统Bug)还是有意义的缺失(用户不想透

露)。

删除法:只有当缺失占比极低(<5%)且确认为随机缺失时,我才会考虑Drop。

填充法(Imputation):

数值型:如果数据符合正态分布,填平均值;如果有长尾分布(如工资),填中位数

更稳健。

类别型:填众数,或者新建一个类别"Unknown"(这往往本身就是一个有信息量的特

征)。

高级填充:利用KNN或随机森林,通过其他特征预测缺失值,这是最精准的。

异常值(Outliers)处理:

首先利用统计工具识别:

3σ原则(Z-score):超过平均值±3个标准差的数据。

箱线图(IQR):超过Q3+1.5*IQR的数据(这对偏态数据更有效)。

处理策略:

截断(Capping):对于长尾数据(如双11土豪订单),我不删,而是将其“盖帽”归并

在99分位的值,既保留了“高”的特征,又避免拉偏模型。

单独分析:有时候异常值才是金矿(如黑产刷单、系统漏洞),我会将其单独提取出来

做针对性分析。

Q6:某APP昨日DAU(日活跃用户数)突然下降了20%,你将如何开展分析排

查?请列出分析框架(极高频|需深度思考)

❌不好的回答示例:

DAU下降20%肯定是个大问题。首先我会去问一下技术部,是不是服务器挂了或者

日志传输出了问题。如果技术那边没问题,我就去看一下昨天的渠道数据,是不是

哪个渠道停投了。

或者是不是昨天是工作日,前天是周末,自然回落?如果都不是,我会把数据拉出

来,看看是新用户少了还是老用户少了。

如果是老用户少了,就问问运营最近有没有搞什么活动结束了。总之就是把可能的

原因都排查一遍,找到原因后再写报告汇报给领导。

为什么这么回答不好:

1.缺乏结构化思维(这是致命伤):回答像无头苍蝇一样“想到哪指哪”(先问技术,再看渠

道,再看日期),没有展现出资深分析师应有的逻辑框架(如:先内后外、先技术后业

务)。

2.归因过于单一:仅仅列举了服务器、渠道、周末等几个点,遗漏了版本更新、竞品动

作、宏观环境等重要维度,显得分析视野狭窄。

3.被动执行心态:“问技术”、“问运营”,表现出过度依赖他人,缺乏独立通过数据定位问题

的能力。

高分回答示例:

面对DAU骤降20%这种严重异常,我会按照“数据校验->维度拆解->归因验

证”的漏斗框架进行排查:

1.第一层:数据真实性校验(TechnicalCheck)

确认口径:首先确认“DAU”的定义是否变更,SQL逻辑是否被修改。

校验链路:检查ETL调度任务是否延迟、埋点上报服务是否异常、数据库是否存在空

值。(实战中50%的暴跌都是数据故障导致的)。

第二层:指标维度拆解(DimensionDrill-down)

确认数据无误后,我会将DAU拆解为DAU=新用户+老用户,并进一步细分:

看新老:如果是新用户暴跌,重点查渠道投放(是否停投、素材被封);如果是老用户

暴跌,重点查产品活跃度。

看端侧:拆解iOS/Android/小程序,排查是否是特定版本(如刚发版的V5.0)出现了闪

退或Bug。

看路径:拆解登录漏斗,看是“打开APP”的人少了,还是“登录成功”的人少了(通过率异

常)。

3.第三层:业务与外部归因(Business&External)

内部因素:检查昨日是否有负向运营事故(如发错短信)、活动下线、或会员权益缩水

导致抵制。

外部因素:排查是否有竞品上线了强力活动(抢占时长)、是否出现舆情危机、或者是

否有特殊节假日/极端天气影响(如暴雨导致外卖类APP活跃暴涨,反之亦然)。

总结:找出原因后,若是技术故障则紧急修复并回溯数据;若是业务问题,则需协

同运营制定召回策略(如短信补发),并量化本次下跌造成的LTV损失。

Q7:什么是辛普森悖论(Simpson'sParadox)?在业务分析中如何避免?

(常问|网友分享)

❌不好的回答示例:

辛普森悖论就是说,有时候我们看整体数据得出的结论,和把数据拆开来看得出的

结论是完全相反的。

比如A和B两个产品,A的整体转化率比B高,但如果我们把用户分成男女两组,可

能会发现B在男性里转化率高,在女性里转化率也高。

这听起来很矛盾,但确实会发生。

为了避免这种情况,我们在分析的时候不能只看大盘数据,一定要多做细分,把维

度拆细一点,这样才能看到真实的情况,不会被平均数骗了。

为什么这么回答不好:

1.解释生硬,缺乏直观逻辑:虽然背出了定义,但没有解释清楚“为什么”会出现这种情况

(即:样本大小权重的混淆)。面试官听完可能还是云里雾里。

2.缺乏业务落地的具体场景:仅仅说了“要拆细”,但没有说明在什么具体业务场景下最容易

踩坑(如:新旧功能测试、不同渠道质量评估)。

3.表述过于浅层:没有触及问题的本质——即混杂变量(ConfoundingVariable)的影

响,显示出统计学功底不够深厚。

高分回答示例:

辛普森悖论是指:在分组比较中都占优势的一方,在总评中反而处于劣势的现象。

这通常是因为不同分组的样本量权重不一致导致的。

1.经典业务案例:

假设我们对比A、B两个广告渠道的转化率:

渠道A(高端渠道):推送给100个老板,转化20个(20%);推送给1000个学生,转

化10个(1%)。**总转化率≈2.7%**。

渠道B(低端渠道):推送给1000个老板,转化150个(15%);推送给100个学生,转

化0个(0%)。**总转化率≈13.6%**。

悖论出现:

如果不细分,你会觉得渠道B(13.6%)远好于渠道A(2.7%)。

但细分后你会发现:针对老板,A(20%)>B(15%);针对学生,A(1%)>B

(0%)。

结论反转:A其实在每个人群中都更强,但因为A大部分流量都打给了转化率天生

较低的“学生群体”,严重拉低了总分。

2.如何避免:

寻找混杂变量:在做对比分析时,必须思考是否存在“隐性变量”(如用户画像、城市等

级、设备类型)剧烈影响了结果。

分层分析(Segmentation):只要发现两组样本的结构(如男女比例、新老占比)差异

巨大,就严禁直接比较总量,必须进行分层对比或使用加权平均进行标准化处理。

Q8:SQL查询中,LEFTJOIN、INNERJOIN和FULLJOIN在处理空值和非匹配

行时的具体差异是什么?(基本必考|学员真题)

❌不好的回答示例:

这三个主要就是连接表的方式不一样。

InnerJoin是内连接,只保留两边都有的数据。如果左边有右边没有,就过滤掉。

LeftJoin是左连接,左边的表全都要保留,右边匹配不上的话,就显示为NULL。

FullJoin就是全连接,两张表的数据都留下来。不管匹不匹配,反正都显示出来,

匹配不上的地方填空值。

工作里我用LeftJoin最多,因为通常要保留主表的所有数据,InnerJoin用得少一

点,FullJoin基本没用过。

为什么这么回答不好:

1.定义过于教科书,缺乏深度:仅仅复述了基本定义,没有深入到“数据膨胀(多对

多)”或“过滤逻辑”等进阶细节。

2.忽视了NULL值的具体陷阱:没有提到在WHERE子句中对NULL进行过滤时容易犯的错误

(例如:LeftJoin后如果加了右表的Where条件,会强制退化为InnerJoin)。

3.缺乏实战场景感:简单的“左边保留右边填空”不足以证明你处理过复杂脏数据。

高分回答示例:

这三种Join的核心差异在于对“非匹配行”的取舍,这直接决定了结果集的行数和完

整性。假设我们有User表(左)和Order表(右)。

1.INNERJOIN(交集):

逻辑:仅返回左右两表中连接字段(Key)完全匹配的行。

NULL处理:任何一边Key为NULL或无法匹配,该行直接被丢弃。

场景:计算“有过付费行为的用户画像”。我只关心交集,没买过课的人直接过滤。

2.LEFTJOIN(左保全):

逻辑:强制保留左表所有行。如果右表没有匹配项,右表的字段自动填充为NULL。

注意点:這是最常用的Join,但极易踩坑。如果在LEFTJOIN后紧接着在WHERE子句中

筛选右表的字段(例如WHEREorder_amount>100),NULL行会被过滤掉,导致它

实际上退化成了INNERJOIN。正确的做法是将筛选条件写在ON子句中,或处理

NULL值。

3.FULLJOIN(并集):

逻辑:保留左右两表的所有行。左边没匹配右边补NULL,右边没匹配左边补NULL。

场景:比如每月的“对账”环节。我要对比“财务系统的账单”和“业务系统的订单”,查看哪

些是两边都有的,哪些是“有单无账”或“有账无单”的,这时候必须用FullJoin(或UnionAll

模拟)来确保没有任何数据的遗漏。

Q9:请简述第一类错误(弃真)和第二类错误(取伪)的区别,业务场景中如

何权衡这两者?(重点准备|需深度思考)

❌不好的回答示例:

第一类错误是Alpha错误,就是原假设是真的,但是我们拒绝了它,这就叫弃真。

第二类错误是Beta错误,就是原假设是假的,但是我们接受了它,这就叫取伪。

在业务里,我们一般把Alpha定在0.05,Beta定在0.2。

权衡的话,就是看你更在乎哪个。比如你要严格一点,就降低Alpha,但是Beta可

能会变高。反正这两个是此消彼长的关系,看老板想要什么结果吧。

为什么这么回答不好:

1.死记硬背,缺乏理解:纯粹背诵统计学定义,没有任何通俗的解释。面试官无法判断你

是否真的理解了它们代表的业务风险。

2.缺乏具体的业务权衡案例:仅仅说了“此消彼长”,但没有结合实际场景(如:风控vs营

销)来说明什么时候该容忍哪种错误。

3.参数设置僵化:提到“一般定0.05”,但在某些高风险领域(如医疗或重大资金风控),这

个标准是完全不适用的。

高分回答示例:

我通常用“宁可错杀一千”和“宁可漏网一个”来理解这两类错误。

1.第一类错误(FalsePositive,误报):

定义:本来没效果(或没问题),我们却误以为有效果。

场景:垃圾邮件拦截。如果把一封正常的入职Offer邮件(真)误判为垃圾邮件(弃)并

拦截了,后果很严重。这就是第一类错误。

2.第二类错误(FalseNegative,漏报):

定义:本来有效果(或有问题),我们却没检测出来。

场景:新冠病毒核酸检测。一个人明明感染了(假),但试剂盒没测出来,显示阴性

(取),导致他去传染别人。这就是第二类错误。

业务中的权衡策略:

这两者通常是Trade-off关系,必须根据业务成本来定:

在“反欺诈/风控”场景:我们更不能容忍第二类错误(漏抓坏人)。坏人进来会盗刷资

金,损失巨大。所以我们会调低阈值,宁愿“误伤”几个正常用户(增加第一类错误),也

要把坏人全挡住。

在“VIP用户体验/营销”场景:我们更不能容忍第一类错误(误骚扰)。如果误把普通用

户当成VIP发了错误的升级提示,用户体验极差。所以我们会提高门槛,宁愿漏掉几个潜

在VIP,也不要乱发消息骚扰用户。

Q10:你常用的Python数据分析库有哪些?Pandas中merge和concat有什么

区别?(基本必考|考察实操)

❌不好的回答示例:

我一般用Pandas处理数据,NumPy做计算,画图的话用Matplotlib和Seaborn。

偶尔也会用Sklearn做一下机器学习。

Merge和Concat的区别的话,Merge就像SQL里的Join,是横向拼接的。Concat

是纵向拼接的,就是把两个表上下叠在一起。

Merge需要指定key,Concat不需要。如果数据量大的话,Pandas可能会比较

慢,这时候可能要优化一下。

为什么这么回答不好:

1.回答过于简略:能够列出库名是基础,但没有说明每个库在工作流中的具体作用(如:

Seaborn用于统计绘图,Sklearn用于特征工程)。

2.对concat理解片面:concat既可以横向也可以纵向(通过axis参数控制),不仅仅

是“上下叠”。这个细节直接暴露了实操深度。

3.缺乏参数细节:没有提到merge中的how(连接方式)或concat中的ignore_index

等关键实操参数。

高分回答示例:

我的标准数据分析工具栈通常是:

1.Pandas:核心数据清洗与ETL(90%的时间都在用)。

2.NumPy:辅助进行复杂的矩阵运算或生成随机分布。

3.Matplotlib/Seaborn:Matplotlib用于底层定制绘图,Seaborn用于快速生成热力图、箱

线图等统计图表。

4.Scikit-learn:用于构建逻辑回归、聚类等模型,以及Imputer缺失值处理。

关于MergevsConcat,它们的思维逻辑完全不同:

1.pd.merge():基于“内容/Key”的横向关联

逻辑:类似SQL的Join操作。它必须依赖一个或多个Key(键)来对齐数据。

场景:当我需要把“用户基础信息表”和“用户订单表”通过user_id关联起来,扩充列维

度时,必须用Merge。

代码习惯:pd.merge(df1,df2,on='user_id',how='left')

2.pd.concat():基于“物理位置/结构”的拼接

逻辑:它是暴力的物理拼接,不关心内容匹配。

默认axis=0:纵向堆叠(Union)。比如把“1月的销售表”和“2月的销售表”上下拼成

一张总表。

设置axis=1:横向拼接。它是按索引(Index)强行左右拼在一起,如果索引对不

上,会产生大量空值。

场景:批量读取文件夹里的100个Excel文件后,我会用pd.concat(list_of_dfs)一次

性合并。

Q11:如何定义留存率?如果让你用SQL计算次日留存率,你会怎么写逻辑?

(极高频|学员真题)

❌不好的回答示例:

留存率就是用户来了之后,过了一段时间还在用的比例。

次日留存就是今天来的用户,明天又来了。

SQL的话,我会先查出今天的用户,再查出明天的用户,然后用InnerJoin连一

下,看有多少人是对上的。

最后用匹配上的人数除以今天的总人数,就是留存率。

具体的SQL语句我大概能写出来,就是Selectcountdistinctuser_idfromtable

ajointablebona.id=b.idwheredatediff=1...差不多这样。

为什么这么回答不好:

1.定义口语化:缺乏严谨的时间界定(“今天来的”是指新增用户还是活跃用户?这决定了

是“新增次留”还是“活跃次留”)。

2.SQL逻辑描述混乱:仅仅口述了Join,没有明确自连接(Self-join)的具体别名和条件。

3.忽视了日期差计算的坑:简单的datediff=1在不同数据库(MySQLvsHive)中

语法完全不同,且容易忽略“同一天多次登录”去重的问题。

高分回答示例:

1.业务定义:

留存率通常指“新增用户次日留存”。即:在第T日新增的用户中,在第T+1日又有活

跃行为的用户比例。

公式:(第1天新增且第2天活跃的用户数)/(第1天新增总用户数)

2.SQL实操逻辑(以MySQL为例):

核心思路是利用左连接(LeftJoin)这种“自关联”方式,或者使用DATEDIFF

函数。

假设有一张用户活跃表user_active_log(user_id,active_date)。

SQL

SELECT

a.active_date

AS

install_date,

COUNT(DISTINCT

a.user_id)

AS

new_users,

--

分母:首日新增人数

COUNT(DISTINCT

b.user_id)

AS

retained_users,

--

分子:次日仍活跃人数

COUNT(DISTINCT

b.user_id)

/

COUNT(DISTINCT

a.user_id)

AS

retention_rate

FROM

(SELECT

user_id,

MIN(active_date)

as

active_date

--

第一步:先锁定每个用户的新增日期

FROM

user_active_log

GROUP

BY

user_id)

a

LEFT

JOIN

user_active_log

b

ON

a.user_id

=

b.user_id

AND

DATEDIFF(b.active_date,

a.active_date)

=

1

--

关键条件:日期差为1天

GROUP

BY

a.active_date;

关键点解析:

子查询a:必须先通过MIN(date)锁定每个用户的首次激活日期,确保分母是“新增用

户”。

LEFTJOIN:保证即使第2天没人留存,分母(新增数据)也不会丢失。

去重:必须使用COUNT(DISTINCT),因为用户可能在同一天多次打开APP。

Q12:在数据清洗过程中,你通常如何处理缺失值(MissingValues)和异常

值(Outliers)?(常问|考察实操)

❌不好的回答示例:

缺失值的话,如果少的话我就直接删掉了,因为不影响大局。如果多的话,我就填

个0或者填个平均值。

异常值一般就是那种特别大的数,比如年龄200岁,这种肯定是错的,直接删掉就

行。

或者用Excel画个图,一眼就能看出来的离群点,手动剔除。主要还是看数据量

吧,数据量大就无所谓,数据量小就要小心点。

为什么这么回答不好:

1.处理手段过于粗暴:“直接删掉”或“填0”在很多场景下会引入巨大的偏差(Bias)。例

如,用户不填“收入”可能代表他是高收入人群,填0会严重误导分析。

2.缺乏检测方法:对于异常值,仅凭“一眼看”或“年龄200岁”这种极端例子,缺乏科学的统

计学判定标准(如3σ原则或IQR)。

3.没有探究原因:优秀的数据分析师在处理前会先问“为什么缺失?”,是系统Bug还是用户

故意不填?这决定了处理策略。

高分回答示例:

数据清洗占据了我工作60%的时间。处理这两类问题,我有严格的“检测-定性-处

理”SOP:

1.缺失值(MissingValues)处理:

首先判断缺失类型:是随机缺失(系统Bug)还是有意义的缺失(用户不想透

露)。

删除法:只有当缺失占比极低(<5%)且确认为随机缺失时,我才会考虑Drop。

填充法(Imputation):

数值型:如果数据符合正态分布,填平均值;如果有长尾分布(如工资),填中位数

更稳健。

类别型:填众数,或者新建一个类别"Unknown"(这往往本身就是一个有信息量的特

征)。

高级填充:利用KNN或随机森林,通过其他特征预测缺失值,这是最精准的。

异常值(Outliers)处理:

首先利用统计工具识别:

3σ原则(Z-score):超过平均值±3个标准差的数据。

箱线图(IQR):超过Q3+1.5*IQR的数据(这对偏态数据更有效)。

处理策略:

截断(Capping):对于长尾数据(如双11土豪订单),我不删,而是将其“盖帽”归并

在99分位的值,既保留了“高”的特征,又避免拉偏模型。

单独分析:有时候异常值才是金矿(如黑产刷单、系统漏洞),我会将其单独提取出来

做针对性分析。

Q13:请解释什么是“北极星指标”(NorthStarMetric),并为你熟悉的某款

产品设计一个北极星指标(极高频|需深度思考)

❌不好的回答示例:

北极星指标就是公司最重要的那个指标,所有人都得盯着它看,就像天上的北极星

一样指引方向。

一般产品都用DAU(日活)或者GMV(交易总额)来当北极星指标。

比如微信的北极星指标应该就是日活,因为只要人多就好。如果让我给抖音设计一

个,我觉得也是日活,或者总播放量。反正就是找一个数据最大、老板最关心的数

字作为目标,大家一起努力去提升它。

为什么这么回答不好

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论