3道数据分析师面试题实录

简介: 今天参加了一场数据分析师面试,遴选3道记录以资后鉴。

1. SQL求两表差集



640.png

                     用SQL实现黄色部分查询


求差集在其他SQL语句中存在关键词Except的用法,而MySQL中没有,所以需要用其他方法折中实现。但实现本身也不难。


以公共字段为id示例,提供两种常规思路


  • 利用子查询

用最常规的语法(说人话的实现语句)是用in:


1SELECT * 
2FROM A 
3WHERE id not in (SELECT id FROM B)


当然,能用关键字in实现的语句基本上都可以用exists实现:


1SELECT * 
2FROM A 
3WHERE not exists (SELECT 1 FROM B WHERE A.id=B.id)


用子查询实现逻辑简单,语句更为直接,但执行效率一般较差,至于用in还是exists又要取决于索引情况和A、B两表数据规模情况。


  • 利用表连接查询

实现两表差集更为可取的做法是用表连接:


1SELECT A.* 
2FROM A left join B 
3    using(id)
4WHERE B.id is null


表连接方式更为高效,如果当B表较大但id列存在有效索引时,实际上还存在一点优化的空间和技巧:


1SELECT A.* 
2FROM A left join 
3    (SELECT id FROM B) C 
4    using(id) 
5WHERE C.id is null


这里假定B表id字段已建立索引,进而通过覆盖索引查询B表id字段形成衍生表C,会大大加速查询过程,进而优化表连接查询结果。


2. 64匹马竞技取前4


实话说,这道题曾经见过,但无奈当时并未仔细思考。面试现场,脑中想到了可能的解决框架:

  • 64匹马用8条赛道,取前4,这是mapreduce模型啊,问题是怎么reduce出TOP4来
  • 64取前4,这是排序算法中快排的套路:无需关注具体排名,仅需查询TOP4即可


实际上,实现起来却尽是浆糊,剪不断理还乱。最后,只能给出中规中矩的晋级策略,也是最常规和最差的方案:每8匹马取前4,逐轮晋级,64→32→16→8→4,共需15轮。


而更为理想的策略仅需10-11轮:

  • 64匹马分8组,每组单独竞技,各取前4作为候选空间

640.png

                                   第1-8轮竞技


  • 为加快区分度,取各组第1名共8匹马进行竞技,记录排名

640.png

                                   第9轮竞技


经过此轮,能得到很多信息量:

  1. 第1名是总冠军,且其原来所在组的2-4名均可能是总排名前4
  2. 第2、3、4名所在组仅需分别保留3-2-1匹马作为总排名前4的候选空间
  3. 此时问题转化为9选3


  • 9匹马中,选择其中的8匹竞技,取前3。这里,9选8的策略有很多,但最好的方案是期望经过此轮后无需考虑剩下的那匹马,也就是说将最不可能进入总排名前4的马作为备选。因此,最为理想的选择是将总冠军那一组的第4名作为备选马,确保该组第2名或第3名未进入8选3结果中,无需再考虑备选的第4名,否则才需加赛。当然,将第二列的第三名作为备选也会得到相同的期望。


640.png

                      第10轮,选出最终2-3-4名


最终,总轮次仅需10-11轮。


3. 业务异常点分析


业务面中,遇到了一个经典的异常业务数据分析题,虽然是一道主观题,但实际上也是有框架的,不幸的是自己当时陷入了分析陷阱中:想当然的顺着面试官的暗示,将这个问题归结为一定是异常,然后展开具体分析。而更一般的分析框架应该是这样的:


640.png

业务异常点分析思路框架


自己当时就只冲着其中一个点往里钻,缺乏跳出问题看问题的思维……


640.png







目录
相关文章
|
26天前
|
数据采集 SQL 数据挖掘
2024年8个Python高效数据分析的技巧_python 数据分析 效率,2024年最新阿里社招p7面试几轮
2024年8个Python高效数据分析的技巧_python 数据分析 效率,2024年最新阿里社招p7面试几轮
|
26天前
|
SQL 数据可视化 数据挖掘
2024年8个Python高效数据分析的技巧。,2024年最新Python基础面试题2024
2024年8个Python高效数据分析的技巧。,2024年最新Python基础面试题2024
2024年8个Python高效数据分析的技巧。,2024年最新Python基础面试题2024
|
1月前
|
数据挖掘 数据处理 索引
Python数据分析面试:NumPy基础与应用
【4月更文挑战第16天】了解并熟练运用NumPy是衡量Python数据分析能力的关键。本文探讨了面试中常遇到的NumPy问题,包括数组创建、属性、索引切片、数组运算、统计函数以及重塑和拼接,并提供了相关代码示例。同时强调了易错点,如混淆Python列表与NumPy数组、误解广播规则等,提醒在数据处理中注意性能和内存效率。掌握这些知识点将有助于提升数据分析面试表现和技能。
41 5
|
1月前
|
数据采集 机器学习/深度学习 数据可视化
数据科学面试准备:解决Python数据分析常见问答和挑战
【4月更文挑战第12天】本文介绍了Python数据分析面试中常见的问题和挑战,涉及Pandas、NumPy、Matplotlib等库的基础知识,以及数据预处理、探索性分析、可视化、回归分析和分类分析的方法。例如,使用Pandas处理缺失值和异常值,利用Matplotlib和Seaborn进行数据可视化,通过Scikit-learn进行回归和分类模型的构建。
|
8月前
|
SQL 数据可视化 数据挖掘
chat GPT在数据分析面试的应用
在数据分析面试阶段,ChatGPT可以作为一个有用的工具,帮助你准备和应对各种数据分析相关的问题。下面将详细介绍ChatGPT在数据分析面试阶段的应用。 1. 数据分析基础知识: 在面试中,面试官可能会问到一些关于数据分析的基础知识问题,例如统计学概念、数据处理方法、数据可视化技巧等。你可以向ChatGPT提问这些问题,它可以给出相应的解释和答案,帮助你巩固和复习基础知识。例如,你可以问ChatGPT关于假设检验的原理和步骤,它可以给出相应的解释和示例。 2. 数据分析案例和问题: 在面试中,面试官可能会给你一些数据分析的案例和问题,要求你进行分析和解决。你可以向ChatGPT描述这些案例
157 0
|
机器学习/深度学习 SQL 数据采集
【数据分析】————面试总结
【数据分析】————面试总结
779 0
|
机器学习/深度学习 算法 数据挖掘
|
SQL 数据挖掘 关系型数据库
数据分析面试手册《SQL篇》
数据分析面试常见SQL题解读。
|
数据挖掘
数据分析面试手册《统计篇》
数据分析面试中常见统计类问题。
数据分析面试手册《统计篇》
|
机器学习/深度学习 数据挖掘
数据分析面试手册《指标篇》
数据分析面试,指标类问题如何进行作答?