导读

今天参加了一场数据分析师面试,遴选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. 第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名,否则才需加赛。当然,将第二列的第三名作为备选也会得到相同的期望。

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

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


3. 业务异常点分析

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

业务异常点分析思路框架

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

相关阅读:

  • 临行在即,分享一个自己写的sklearn源码库

  • 从pandas中的这几个函数,我看懂了道家“一生二、二生三、三生万物”

  • python数据科学系列:pandas入门详细教程

  • python数据科学系列:matplotlib入门详细教程

  • python数据科学系列:numpy入门详细教程

3道数据分析师面试题实录相关推荐

  1. 盘点数据分析师笔试题 你会做几道?

    上次,我们给大家讲述了一些数据分析师面试的必备技巧,本期我们主要给大家盘点数据分析师笔试题(当然,即便是笔试用不到,面试也可以用得到哈),希望当遇到这类典型题目时,大家可以轻松应对. 盘点数据分析师笔 ...

  2. 拼多多2020学霸批数据分析师笔试题 (2019.7.28)

    真真正正20届秋招,第一场笔试献给了「拼多多」. 套题 20届学霸批数据分析师笔试题 题型简单粗暴 5道问答题:3 * SQL + 1 * 概率计算 + 1 * 业务分析题 完成时间 90分钟 会写的 ...

  3. 阿里校招 数据分析师 笔试题

    2015年8月19日,阿里校招数据分析师笔试题.共计21题(貌似统计漏了一题,应该是单选少了一题,凑合看吧),选择题每个人的都不一样,问答题是一样的.暂时没有答案,希望对大家有用. 单选题: 1观测宇 ...

  4. 面试题 I 28道数据分析师经典面试题!

    - 点击上方" i小码哥"订阅我吧!- 偏统计理论知识 1. 扑克牌54张,平均分成2份,求这2份都有2张A的概率. M表示两个牌堆各有2个A的情况:M=4(25!25!) N表示 ...

  5. 数据分析师笔试题(一)

    数据分析笔试题 答题时间:开卷60分钟 一.SQL题 My SQL数据表novel.active_logs中存储了用户的活跃记录,有2个字段:user_id(用户id,整数型),create_time ...

  6. 数据分析师python面试题_数据分析师面试题

    [120] agree_group city_id city_name year level type area 0 南昌市 36 兰州市 2006 三级 商业 用地 0.02778 1 南昌市 36 ...

  7. 2015届阿里巴巴数据分析师笔试题(实习)

    欢迎访问我的个人博客: sky的技术小屋 题量10个选择,3个简答,2个问答题(大简答题) 选择题涉及 概率论.智力题.Hive.数据挖掘的基础知识 印象深刻的几个题为: 准确率和召回率的概念: 逻辑 ...

  8. 拼多多2020学霸批数据分析师笔试 —— SQL整理(2019.7.28)

    半个月过去,终于安装好Mysql,可以开始实操.解决和总结「拼多多学霸批」的SQL题了.真题还是非常珍贵的,难得和业务需求结合在一起. 加之这周,了解了「窗口函数」,比半个月前的我,又有多一点不一样的 ...

  9. 如何七周成为数据分析师之快速掌握麦肯锡的分析思维

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 原文链接:快速掌握麦肯锡的分析思维 磨剑之作,七周成&q ...

最新文章

  1. PHP时间戳 strtotime()使用方法和技巧
  2. 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...
  3. android面试之fragment,当你面试的时候,被问到关于Fragment的种种
  4. Linux sqlplus权限不足,sqlplus登录用户提示权限不足
  5. 【Linux系统编程学习】 文件描述符
  6. Python三维绘图--Matplotlib colorbar生成
  7. 湖北省计算机技能高考c语言试题及答案,最新湖北省技能高考C语言测试题
  8. python程序设计实践教程答案-Python程序设计实践教程
  9. 1021 个位数统计 (15 分)—PAT (Basic Level) Practice (中文)
  10. 基于visual Studio2013解决面试题之0707最小元素
  11. Mac键盘被锁的解决方法
  12. oracle 存档终点修改,修改归档模式的存档终点 archive log list
  13. 电商项目实战之支付宝支付订单
  14. 苹果版赤潮可以用微信登陆吗_用swiftui中的苹果登录
  15. Ubuntu18.04开机自动开启小键盘
  16. vue ajax请求结束再次执行查询方法,Vue.js 监控v-for循环渲染完成后再执行方法
  17. 50部必看的经典好莱坞电影
  18. 唐山盐碱滩成渤海明珠 国稻种芯·中国水稻节:河北曹妃甸大米
  19. 外贸收汇方式你都真的清楚了吗?外贸B2B收款结汇方法详解!
  20. Pycharm 许可证过期解决

热门文章

  1. APE格式文件全攻略
  2. 关于千牛移动端纯H5插件和QAP应用中H5页面的概念
  3. js+打开php文档,javascript打开word文档的方法_基础知识
  4. redis开启rdb和aof后文件正确恢复
  5. did you register the component correctly? For recursive components, make sure to provide the “name“
  6. SeasonJoe学长的考研日记
  7. 搭建自己的电影网站 2 (安装MacCMS10)
  8. jdk1.8——Base64
  9. 某建筑设计研究院“综合布线管理软件”应用实践
  10. sendgrid html text,在Node.js中的SendGrid的“发件人”字段中添加名称