3道数据分析师面试题实录
导读
今天参加了一场数据分析师面试,遴选3道记录以资后鉴。
1. SQL求两表差集
用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作为候选空间
第1-8轮竞技
为加快区分度,取各组第1名共8匹马进行竞技,记录排名
第9轮竞技
经过此轮,能得到很多信息量:
第1名是总冠军,且其原来所在组的2-4名均可能是总排名前4
第2、3、4名所在组仅需分别保留3-2-1匹马作为总排名前4的候选空间
此时问题转化为9选3
9匹马中,选择其中的8匹竞技,取前3。这里,9选8的策略有很多,但最好的方案是期望经过此轮后无需考虑剩下的那匹马,也就是说将最不可能进入总排名前4的马作为备选。因此,最为理想的选择是将总冠军那一组的第4名作为备选马,确保该组第2名或第3名未进入8选3结果中,无需再考虑备选的第4名,否则才需加赛。当然,将第二列的第三名作为备选也会得到相同的期望。
第10轮,选出最终2-3-4名
最终,总轮次仅需10-11轮。
3. 业务异常点分析
业务面中,遇到了一个经典的异常业务数据分析题,虽然是一道主观题,但实际上也是有框架的,不幸的是自己当时陷入了分析陷阱中:想当然的顺着面试官的暗示,将这个问题归结为一定是异常,然后展开具体分析。而更一般的分析框架应该是这样的:
业务异常点分析思路框架
自己当时就只冲着其中一个点往里钻,缺乏跳出问题看问题的思维……
相关阅读:
临行在即,分享一个自己写的sklearn源码库
从pandas中的这几个函数,我看懂了道家“一生二、二生三、三生万物”
python数据科学系列:pandas入门详细教程
python数据科学系列:matplotlib入门详细教程
python数据科学系列:numpy入门详细教程
3道数据分析师面试题实录相关推荐
- 盘点数据分析师笔试题 你会做几道?
上次,我们给大家讲述了一些数据分析师面试的必备技巧,本期我们主要给大家盘点数据分析师笔试题(当然,即便是笔试用不到,面试也可以用得到哈),希望当遇到这类典型题目时,大家可以轻松应对. 盘点数据分析师笔 ...
- 拼多多2020学霸批数据分析师笔试题 (2019.7.28)
真真正正20届秋招,第一场笔试献给了「拼多多」. 套题 20届学霸批数据分析师笔试题 题型简单粗暴 5道问答题:3 * SQL + 1 * 概率计算 + 1 * 业务分析题 完成时间 90分钟 会写的 ...
- 阿里校招 数据分析师 笔试题
2015年8月19日,阿里校招数据分析师笔试题.共计21题(貌似统计漏了一题,应该是单选少了一题,凑合看吧),选择题每个人的都不一样,问答题是一样的.暂时没有答案,希望对大家有用. 单选题: 1观测宇 ...
- 面试题 I 28道数据分析师经典面试题!
- 点击上方" i小码哥"订阅我吧!- 偏统计理论知识 1. 扑克牌54张,平均分成2份,求这2份都有2张A的概率. M表示两个牌堆各有2个A的情况:M=4(25!25!) N表示 ...
- 数据分析师笔试题(一)
数据分析笔试题 答题时间:开卷60分钟 一.SQL题 My SQL数据表novel.active_logs中存储了用户的活跃记录,有2个字段:user_id(用户id,整数型),create_time ...
- 数据分析师python面试题_数据分析师面试题
[120] agree_group city_id city_name year level type area 0 南昌市 36 兰州市 2006 三级 商业 用地 0.02778 1 南昌市 36 ...
- 2015届阿里巴巴数据分析师笔试题(实习)
欢迎访问我的个人博客: sky的技术小屋 题量10个选择,3个简答,2个问答题(大简答题) 选择题涉及 概率论.智力题.Hive.数据挖掘的基础知识 印象深刻的几个题为: 准确率和召回率的概念: 逻辑 ...
- 拼多多2020学霸批数据分析师笔试 —— SQL整理(2019.7.28)
半个月过去,终于安装好Mysql,可以开始实操.解决和总结「拼多多学霸批」的SQL题了.真题还是非常珍贵的,难得和业务需求结合在一起. 加之这周,了解了「窗口函数」,比半个月前的我,又有多一点不一样的 ...
- 如何七周成为数据分析师之快速掌握麦肯锡的分析思维
感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 原文链接:快速掌握麦肯锡的分析思维 磨剑之作,七周成&q ...
最新文章
- PHP时间戳 strtotime()使用方法和技巧
- 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...
- android面试之fragment,当你面试的时候,被问到关于Fragment的种种
- Linux sqlplus权限不足,sqlplus登录用户提示权限不足
- 【Linux系统编程学习】 文件描述符
- Python三维绘图--Matplotlib colorbar生成
- 湖北省计算机技能高考c语言试题及答案,最新湖北省技能高考C语言测试题
- python程序设计实践教程答案-Python程序设计实践教程
- 1021 个位数统计 (15 分)—PAT (Basic Level) Practice (中文)
- 基于visual Studio2013解决面试题之0707最小元素
- Mac键盘被锁的解决方法
- oracle 存档终点修改,修改归档模式的存档终点 archive log list
- 电商项目实战之支付宝支付订单
- 苹果版赤潮可以用微信登陆吗_用swiftui中的苹果登录
- Ubuntu18.04开机自动开启小键盘
- vue ajax请求结束再次执行查询方法,Vue.js 监控v-for循环渲染完成后再执行方法
- 50部必看的经典好莱坞电影
- 唐山盐碱滩成渤海明珠 国稻种芯·中国水稻节:河北曹妃甸大米
- 外贸收汇方式你都真的清楚了吗?外贸B2B收款结汇方法详解!
- Pycharm 许可证过期解决
热门文章
- APE格式文件全攻略
- 关于千牛移动端纯H5插件和QAP应用中H5页面的概念
- js+打开php文档,javascript打开word文档的方法_基础知识
- redis开启rdb和aof后文件正确恢复
- did you register the component correctly? For recursive components, make sure to provide the “name“
- SeasonJoe学长的考研日记
- 搭建自己的电影网站 2 (安装MacCMS10)
- jdk1.8——Base64
- 某建筑设计研究院“综合布线管理软件”应用实践
- sendgrid html text,在Node.js中的SendGrid的“发件人”字段中添加名称