面经分享 数据开发/数据研发/数据分析
整个秋招面了 阿里、腾讯、美团、拼多多、华为、网易游戏、滴滴、网易严选、小米、京东,主要是数据研发和数据分析的岗位,除了京东和网易严选,都拿到offer了。
自己学的专业在所在的学校是社科门类的,会学一些计算机相关的课程,但比不上科班的同学,对数据这块的工作比较感兴趣,所以主要投递的也是数据方向的岗位。今年一月开始在字节跳动实习,主要是做离线数据,数据仓库这块,收获很多,也对秋招帮助很大,但是团队相对较小,数据工作相对比较边缘,所以秋招投了很多公司,这里也分享一下面试的问题。
阿里-数据研发工程师
实习面试-口碑
七月一号被口碑捞起来面了两轮,最后没有去
一面
主要介绍了在字节的实习,那个时候还很嫩,套路都不会,不过还好实习面试面的不难,回答起来也还好。整个一面就在聊天。
主要介绍了在字节这边业务线的数仓分层,因为字节这边每个业务线基本都有一个自己的小数仓,我所在的业务线团队人又较少,所以作为一个实习生有机会参与到整个业务线的数仓建设里。其实不管是核心业务还是小业务,数仓结构是大同小异,从原始数据层-明细数据层-聚合数据层-数据展现层,能够好好介绍清楚,在数仓方向的面试时必不可少的。
另外面试官还问了实习过程中最有挑战的事情,讲了一个聚合事实表的构建经验,也是从ODS-DWD-DWA的层级构建来讲的,主要是对用户行为的聚合统计,帮项目的数据开发、产品运营的数据查询减少了很多工作量。
最后问了面试官阿里的数据工作包括些什么,面试官重点介绍了元数据管理,因为我这块最不熟。每次阿里的面试都能收获很多。
二面
因为一面聊了很久,二面问问题少了,听完介绍后就写了两道题。可能这种数据研发岗算法题都不难吧。
1、反转链表 (LeetCode206 https://leetcode-cn.com/problems/reverse-linked-list/)
2、两个数组交集 (LeetCode349 https://leetcode-cn.com/problems/intersection-of-two-arrays/)
淘系
一面
应该是简历面吧,问题挺多的,稍微有过准备,差不多都回答上了。
1、Mysql索引
2、OLTP和OLAP的区别 https://www.cnblogs.com/andy6/p/6011959.html 操作特点、响应速度、吞吐量、并发访问量、资源消耗、索引类型、索引量
3、Hive执行流程 https://blog.csdn.net/youzhouliu/article/details/70807993 hiveSQL转换成MapReduce的执行计划包括如下几个步骤: HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)->优化后的操作树->mapreduce任务树->优化后的mapreduce任务树
4、Hive HDFS HBase区别 https://blog.csdn.net/wshyb0314/article/details/81475475
5、列式数据库和行式数据库优劣对比 http://stor.51cto.com/art/201809/583648.htm
6、维度和度量 是数仓非常重要的概念,简单地记,维度是环境,度量是指标或者是衡量
7、数仓分层
8、窗口函数的实现原理 说实话我也不知道,也没查到,是partition的时候实现的吗,当时是这么猜的。
9、工作中遇到的挑战
10、最近看的书
2、OLTP和OLAP的区别 https://www.cnblogs.com/andy6/p/6011959.html 操作特点、响应速度、吞吐量、并发访问量、资源消耗、索引类型、索引量
3、Hive执行流程 https://blog.csdn.net/youzhouliu/article/details/70807993 hiveSQL转换成MapReduce的执行计划包括如下几个步骤: HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)->优化后的操作树->mapreduce任务树->优化后的mapreduce任务树
4、Hive HDFS HBase区别 https://blog.csdn.net/wshyb0314/article/details/81475475
5、列式数据库和行式数据库优劣对比 http://stor.51cto.com/art/201809/583648.htm
6、维度和度量 是数仓非常重要的概念,简单地记,维度是环境,度量是指标或者是衡量
7、数仓分层
8、窗口函数的实现原理 说实话我也不知道,也没查到,是partition的时候实现的吗,当时是这么猜的。
9、工作中遇到的挑战
10、最近看的书
二面
隔了一天就联系二面了,因为一面问的问题很多,二面问的问题不算太多,就开始写题目了。
只问了一个问题 新业务线数仓构建和成熟的业务线数仓有什么不同,因为所在字节这边是一个比较新的业务线,所以问了个这个,主要从数据体量,数据域划分上面回答的。
表trd里有五个字段 order_id(订单id,唯一主键),user_id(用户id),item_id(商品id),cnt(件数),alipay(支付金额) 求每个用户购买商品的件数 #考的数据倾斜的处理,热点可能出现在一些用户上 第一种: SELECT user_id, SUM(item_cnt) item_cnt FROM( SELECT user_id, item_id, SUM(cnt) item_cnt FROM trd GROUP BY user_id, item_id) a GROUP BY user_id 第二种: SELECT user_id, SUM(item_cnt) item_cnt FROM( SELECT user_id, r, SUM(item_cnt) item_cnt FROM( SELECT user_id, IF(user_id = xxx, RAND(int seed),0) r, cnt FROM trd) a GROUP BY user_id, r) a GROUP BY user_id 优化总结:https://www.cnblogs.com/duanxingxing/p/6874318.html同样是因为是小项目,我几乎不怎么处理数据倾斜,问到这问题的时候只吹了下比,说了map,join,reduce三端倾斜时的处理方法,虽然都说对了,让我写的时候还是犹豫了下,最后应该是没过。
后面还考了个行转列,用case when + group by就好。
数据技术与产品部
一面
池子里泡了一个月,一天晚上突然又被捞起来面了四十多分钟,当时还在公司,找了个楼道,站着面完,都要昏厥了。
1、也是介绍数仓分层,主要问了实际构建事实表时候的思路。关于如何确定要包含哪些事实——需要结合业务过程来选择,因为实习的这边通过数据需求平台接数据需求,所以会有记录,一般做沉淀是可以挖掘出关注的关键事实。这里问的不是事务,是事实。
2、问了下数据分析相关的工作,这个刚问的面试官都会问问这些,怎么通过数据给业务赋能之类的,所以准备点数据分析的例子肯定会好一些。
3、数据质量如何保障。也是这个岗经常被问的问题,我一般这么回答:(1)和产品运营经验值校对 (2)对hive元数据实施监控,例如行数,表大小,空缺值 (3)对核心指标实施监控 (4)关注数仓血缘关系 (5)尽可能在聚合层生成通用指标,不要再最上层再计算指标
二面
可能之前算上实习面试面的太多,面试官问的不太多了。
主要的问题是数仓域方面的
1、域如何划分 每个域应该对应一个完整的业务流程,一个业务流程一般划分在一个域里面。
2、域的边界如何确定 个人觉得还是应该从业务出发,分析主题域,感觉问题有点太专业了,没有答好,也没查到什么好的答案
还让介绍数据结构,所有常见的数据结构,知道的,能说多少说多少。
交叉面
面到这已经七面了,面试官已经没啥问题了,听了自我介绍后,我把这个部门写的《大数据之路》狂吹了一遍,然后围绕这书聊了二十分钟就过了。
HR面
这HR也是技术出身,半个小时感觉还在面试一样。
问了数据建设方面的一些宏观的问题,问了对数据工作的认识。
腾讯-数据分析
CSIG-数据产品中台
因为没有数据研发,投的数据分析。
一面
一面来了两个面试官,一个是做数据分析的,一个是做数仓的。
数据分析的面试官主要关注的是 数据分析的思路,以及一个具体的数据分析例子。
感觉回答数分的问题的时候一定要有具体的例子,而且这个例子一定是使得产品在数据上有一定改善。不过我当时没有仔细想过,只回答了一些分析思路。
这图在飞书doc里画的,太懒,不想重画了,打码发出来,应该不含内部信息,可以参考下。
数仓的面试官,就聊了下结构和域的划分,然后问了怎么团队合作?
二面
面试官也是从数分和数仓方面问的。
1、举一个数分的具体案例
2、to B数分的指标,这个我了解得很少,因为字节主要还是to C
3、指标应当在哪一层产出,是聚合层吗,还是最后的APP层。 通用的指标应当在聚合层,APP层会有一些个性化的指标计算
三面
是个大佬,重点聊了to B数据的特点
美团-数据开发工程师
到家事业群-外卖
一面
问的不多,主要在自我介绍,可能刚好在做转正答辩的PPT,提前讲了下,就过了。
二面
主要的问题包括:
1、缓慢变化维处理 用快照或者拉链,拉链时间段也有讲究
2、数据流(实时数据流-离线数据流),面试官也分享了美团的数据流,人很好
3、问了一些德鲁伊、clickhouse、flink、kafka相关的问题,不过我对实时数据流那块不太熟,也没问太多
4、如何通过埋点还原用户路径 用相对时间、透传参数
5、Mapreduce的流程
三面
大佬,没有太多技术性问题,感觉再聊天。印象比较深的是问了一个产品的数据需求不合理时如何应对和数据质量保证的问题。
拼多多-大数据研发工程师
数据中台
一面
半个小时
面试官一直在纠结埋点是数据开发写还是产品写,我们是开发写,然后给客户端埋,不同的公司可能收口的地方不一样。
灵魂拷问:维表用来干啥。 (1)记录大量信息,事实表将与维表关联 (2)环境的信息在维表中维护就可以了 (3)事实表也可通过维度构建起关联
二面
很专业
1、关于星形与雪花 记住一点就行,所有维表直接与事实表关联的就是星形
2、缓慢变化维处理
3、如何划分数据域
4、单事务事实表、多事务事实表区别与作用
5、一致性建模 一致性维度、总线矩阵
6、一致性事实 这个有点牛逼,其实本质上就是指标的统一
7、快照事实表、累计事实表、多事务事实表 区别
8、SQL
考察了concat_ws 、laterview explode 函数的一些运用
华为-分布式数据库开发
主要考察的基础,因为我实在不太行
一面
主要是自我介绍和聊天
唯一的算法题 LeetCode516 最长回文子序列 https://leetcode-cn.com/problems/longest-palindromic-subsequence/
二面
主要讲了数据流
唯一的算法题 LeetCode215 最大的K个数 https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
三面
也是对实习问的比较多。
网易游戏-游戏数据研究员
整体是偏向业务的数据分析
一面
1、列举一个数据分析的例子 (问题提出-问题拆解-产品运营改进-数据效果提升,有实际例子)
2、分析MOBA英雄平衡性
3、一张表有玩家的id 登陆时间 登出时间 等级 能算出哪些信息
dau、留存、新用户数、平均等级、升级时间分布、登陆时间分布、登出时间分布、游戏时长、平均登陆次数
4、玩过哪些游戏
5、Python用过哪些包
6、对hive的理解
二面
1、举一个数据分析的例子
2、分析下率土之滨优劣势 从gameplay和数据分析两方面讲了下
3、率土之滨各州的平衡性如何衡量 主要从两个方面 玩家数据 游戏资源数据, 讲的时候没注意,实质上有交集。
玩家数据:玩家人数、玩家势力值、玩家活跃、玩家付费
游戏资源:占领土地数量、玩家五星卡牌以及卡牌组合、玩家五星战法、玩家战法经验等
4、怎么通过数据分析帮助州与州之间保持平衡
网易严选-数据分析
一面
1、讲一些常见的机器学习算法
2、举一个具体分析的例子
3、主成分分析的原理
4、Python数据类型有哪些
5、Hive了解的程度
二面
主要的一个案例:如何衡量PUSH的效果 通过PUSH发出后一段时间用户的登陆情况来衡量
不过PUSH主要的指标一般是这样的:送达率、点击率、转化率
要做好一个PUSH还是要个性化,做好频控,可以开AB
HR面
网易让我免费去了趟杭州,当天上午去西湖玩了半天,杭州挺好的。
HR挺帅的小哥,也很专业,围绕数据工作问的,对数据工作的认识、和产品运营的交流方法问了半个多小时。
最后挂了。
滴滴
一面
1、这个面试官出了个得写udf|transform的题目让我用hql写出来,我想了半天什么都上了,最后告诉我要写udf,服了。
2、mapreduce的过程
3、hive语句转化成mapreduce的过程
二面
1、mr环写内存的时候怎么提升效率
2、维度进行垂直整合的时候怎么使得信息更多,使得维表更全,本质上还是要拼key
三面
比较宏观,好多问题忘记了
小米
相对而言比较简单,和之前的问题应该大部分重合了,唯一不一样的题可能问了个智力题。智力题常见的就是:毒药、赛马、剪绳子之类的。
京东
一轮游,感觉是招的平台开发,我这种大混子是混不动。