
面试真题
数据相关岗位面试题真实记录
IT_心如止水
python,大数据,nlp,人工智能领域的小学生,希望和各位志同道合的朋友一起进步
展开
-
Spark与MapReduce(Hive)对比分析
Spark比MapReduce计算速度快的原因Spark与MapReduce都是当今主流的离线分布式大数据计算框架,在实际工作中应用广泛。众所周知,spark的数据处理速度要比MapReduce快很多倍,那具体原因是什么呢?相信大家在面试过程中经常会被问到类似的问题。今天就来给大家好好分析一下具体的原因。MR基于HDFS,所有的中间结果都需要落到HDFS中,需要频繁地进行文件的IO操作,且中间结果使用效率低;而Spark基于内存,通过DAG有向无环图来切分任务的执行先后顺序。尽量将中间结果存储在内存原创 2022-04-14 14:47:47 · 2847 阅读 · 0 评论 -
数仓实战——最近N天uv优化策略
对于做数据的小伙伴来说,求最近N天(或者从某个时间点截止到当前)的UV可以说是最常见的场景了,也是数据岗位面试中经常会遇到的问题。第一感觉,可能大部分人都觉得这个问题有什么好说,直接过滤、去重计数就完了呗!但是,当数据量大了,或者说这么简单的问题,怎么在面试中体现自己的水平呢?[/手动狗头/]好了,言归正传,对于这个问题,常见的策略有以下几种:1、直接过滤,去重计数。对于小数据量,简单高效的解决问题就是最优解。SELECT count(distinct user_id) as uvFROM原创 2022-04-14 11:08:56 · 594 阅读 · 0 评论 -
Hive面试题——次日,3日,7日,30日,90日留存计算
已知用户登录日志表user_login_loguser_id event_time 1 2022-01-01 12:10:00 2 2022-01-11 22:10:00 3 2022-01-21 21:20:01 ...... ........ 求:此应用的次日、3日、7日、14日、30日、90日留存率思路解析:1、先按照日期、用户去重2、再做子关联,关联条件为:user_id相同,时间做差3、再分别去重计算,计算对应的留存率即可原创 2022-04-13 22:44:20 · 2467 阅读 · 0 评论 -
Hive面试-求互为好友的用户明细
已知用户好友表user_friend_tableuser_id friend_list A B,C,D B A,B,D .... ..... 求互为共同好友一共有多少对。思路解析:1、首先将好友列表拆开,得到如下形式的数据uid friendA BA C2、然后分别比较uid和friend_id,拼接uid和friend,得出判断标签new_tag。3、按照new_tag聚合,取co...原创 2022-04-12 14:10:15 · 810 阅读 · 0 评论 -
二叉树的遍历与深度计算(python实现)
二叉树作为一种重要的数据结构,也是面试中经常会问到的。其中,二叉树的遍历和深度计算更是重中之重。二叉树的遍历分为深度优先遍历和广度优先遍历两类。其中,深度优先遍历,根据遍历顺序的不同可以细分为:前序遍历、中序遍历、后序遍历广度优先遍历,就是常规意义上按照层次从上到下,依次进行遍历。二叉树深度计算即为求取二叉树的最大深度python实现:class TreeNode: def __init__(self, value=None, left=None, ...原创 2022-04-11 19:42:39 · 1333 阅读 · 0 评论 -
python经典面试题
题目:假设某人有100000现金,每次经过路口需要进行一次交费交费规则为:手中现金大于50000,需要交费5%;手中现金小于等于50000,需要交费1000请设计程序,计算这个最多经过多少次路口答案:直接上代码(python)total = 100000n = 0while True: if total > 50000: n = n + 1 total = total * 0.95 elif total >原创 2021-09-05 16:01:42 · 522 阅读 · 0 评论 -
Hive中的随机抽样问题
题目:已知,有一个用户表user,字段如下:id, type, mobile, email;type一共包含 ABC三种类型现在需要随机取出各个type 10%的用户信息解析:hive中使用rand()进行简单随机抽样,limit限制随机抽样返回的数量,搭配order by, sort by, distribute by进行排序过滤1、随机选取100名用户select id, type, mobile, email from user order.原创 2021-05-17 16:50:07 · 1449 阅读 · 8 评论 -
大数据查询引擎hive查询常见优化措施
两个表连接时:小表放在join左边,因为左边在reduce阶段会加载进内存;强制使用mapjoin 通过参数设置map端进行聚合 hive.map.aggr = true 数据倾斜的聚合优化 hive.groupby.skewindata = true 使用sort by部分排序 替换order by 全局排序 尽量只查询需要使用的列,将分区、过滤条件前置, 空值处理过滤或者赋予随机值避免数据倾斜,聚合操作外置 慎用count(distinct) 使用with as 消灭子查询 设置小文件合原创 2021-03-21 22:47:17 · 247 阅读 · 0 评论 -
度小满数据开发面试真题3
题目:利用sql实现行转列答案:SELECT user_id ,SUM( CASE WHEN subject = 'chinese' THEN score ELSE 0 END ) AS chinese ,SUM( CASE WHEN subject = 'math' THEN score ELSE 0 END ) AS math ,SUM( CASE WHEN subject = 'english' THEN score ELSE 0 END原创 2021-03-07 21:26:21 · 457 阅读 · 0 评论 -
度小满数据开发面试真题2
贪心算法——最大收益与最小交易次数题目:已知数列长度n ,数列表示股票每天的价格,每次手中仅可以持有1手(即100股)股票,求最小交易次数与最大收益 (忽略税费及手续费)答案:代码(python)# 数列list1 = [9,7,3,10,1,2,5]# 最大收益max_profit = 0# 最小交易次数n = 0mark = 0for i in range(1, len(list1)): diff = list1[i] - list1[i - 1]原创 2021-03-07 21:23:22 · 483 阅读 · 0 评论 -
度小满数据开发面试真题1
题目:每个整数都希望可以整除很多数字,特别是它自身包含的数字,我们将整数分为三类:1. 数字可以整除它包含的一部分数字,比如72,由,7和2两种数字组成,72可以整除2,我们称这个数字是开心的,用”H”表示。2. 数字不能整除它包含的任何数字,比如73,由,7和3两种数字组成,73不能整除任何数,我们称这个数字是沮丧的,用”S”表示。3. 数字可以整除它包含的所有数字,比如12,既可以整除1又可以整除2,我们称它是一个非常棒的数,用“G”表示。 (0可以被任何数整除。)输入:正整数.原创 2021-03-07 21:06:15 · 617 阅读 · 0 评论 -
数据开发经典面试题:筛选出连续登陆N天的用户
题目:已知用户登陆明细表,表结构如下:用户登陆明细表 序号 用户标识 登陆日期 登陆平台 id user_id login_date login_plateform 答案:with cte_a as ( SELECT user_id ,login_date ,ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY login_date desc) A原创 2021-03-06 17:02:02 · 364 阅读 · 0 评论 -
vipkid数据开发&数据分析面试真题1
题目:牛牛有一个n个数字的序列,现在牛牛想把这个序列分成k段连续段,牛牛想知道分出来的k个连续段的段内数字和的最小值最大可以是多少?示例1输入4,2,[1,2,1,5]输出4原创 2021-03-06 16:48:12 · 303 阅读 · 0 评论