1、面试
技术面一共三面,问题汇总
1 讲一下你门公司的大数据项目架构?
- 实时流和离线计算两条线
- 数仓输入(客户端日志,服务端日志,数据库)
- 传输过程(flume,kafka)
- 数仓输出(报表,画像,推荐等)
2 你在工作中都负责哪一部分
3 spark提交一个程序的整体执行流程
包括向yarn申请资源、DAG切割、TaskScheduler、执行task等过程
4 spark常用算子列几个,6到8个吧
5 transformation跟action算子的区别
6 map和flatmap算子的区别
7 自定义usf,udtf,udaf讲一下这几个函数的区别,编写的时候要继承什么类,实现什么方法
8 hive创建一个临时表有哪些方法(1 create table select 2 with select写法)
9 讲一下三范式,三范式解决了什么问题,有什么优缺点
10 讲一下纬度建模的过程 (选择业务过程 确定粒度 确定纬度 确定事实表)
11 纬度表有哪几种
12 事实表有几种
13 什么是纬度一致性,总线架构,事实一致性
15 什么是拉链表,如何实现?
16 什么是微型纬度、支架表,什么时候会用到
17 讲几个你工作中常用的spark 或者hive 的参数,以及这些参数做什么用的
18 工作中遇到数据倾斜处理过吗?是怎么处理的,针对你刚刚提的方案讲一下具体怎么实现。用代码实现,以及用sql实现。(此处没写代码,主要是讲清楚)
19 讲一下kafka对接flume 有几种方式。(我不会这道题……)
20 讲一下spark是如何将一个sql翻译成代码执行的,里面的原理介绍一下?(我也不会。。)
21 spark 程序里面的count distinct 具体是如何执行的
22 不想用spark的默认分区,怎么办?(自定义Partitioner 实现里面要求的方法 )具体是哪几个方法?(没写过)
23 有这样一个需求,统计一个用户的已经曝光了某一个页面,想追根溯是从哪几个页面过来的,然后求出在这几个来源所占的比例。你要怎么建模处理?(这里回答的不好,挺折磨的。面试官的意思是将所有埋点按时间顺序存在一个List 里,然后可能需要自定义udf函数,更主要的是考虑一些异常情况,比如点击流中间是断开的,或者点击流不全,怎么应对)
23 说一下你对元数据的理解,哪些数据算是元数据
24 有过数据治理的经验吗?(略懂)
25 说一下你门公司的数据是怎么分层处理的,每一层都解决了什么问题
26 讲一下星型模型和雪花模型的区别,以及应用场景
2、笔试
三面共三道笔试题,一面一道题
答题方式为网上答题,考官可实时看到敲代码的过程(类似屏幕共享)
题1:
用户登陆日志
app, user_id, datetime
a1,user1,2020-01-01 00:00:00
a2,user2,2020-01-01 00:00:01
a3,user3,2020-01-01 00:00:02
a4,user4,2020-01-01 00:00:03
……
输出每个app下访问次数最多的5个用户
答案:
select
app,
user_id
from
(select
app