毕业后做了7年java应用开发,主要在一家传统软件公司做BI相关的东西。因为主要是写业务代码,大公司都有自己的技术平台,所以java技术也并不很强,多线程都很少自己写。最近三年到了互联网公司,转到做数仓相关的项目,其实主要是用hive sql在做数据处理,就是被鄙视的sql boy。由于进的并不是正经的数仓部门,而是在数仓基础上做数据应用系统的部门,所以还是偏业务,且对数仓理解不是很深入。所以本人技术水平很渣。面试了很多,面不过。把遇到的问题记录下来,希望可以和大家一起探讨,也是一种提高吧。如果大家能够回答这些问题,希望可以回复。
说一说你整个项目从数据采集到指标、报表的这整个过程是怎么做的吧。
这个问题还是挺能反映应聘者能力的,因为数仓是比较杂的一个工种,在不同的公司或者不同的项目,侧重点不一样。比如小公司基本上从ETL开始就要亲力亲为了,对于建模理论要求没那么迫切。大公司可能etl基于平台,开发量变少,但是对建模、数据治理要求可能更高。还有的公司更偏重数据分析的思路,或者说分析业务的思路,而不是单纯搞搞工程。开放问题,回答的时候就是把自己的项目说清楚。如果不知道怎么说清楚,那么推荐一个技巧:把各个阶段的产出物交代清楚,比如了解业务阶段输出什么、建模阶段输出什么,等等。我太渣了,没真正从0做过数仓,项目经验不足,哪里能找到标准一点的答案呢?从《阿里巴巴大数据之路》里面能找到吗?
事实表有哪几种类型?
本渣之前看过《数据仓库工具箱---维度建模指南》,但一时想不起来了,仔细想还是想不起来。确定看过,确定想不起。
缓慢变化维你们是怎么处理的?
使用拉链表
拉链表是怎么实现的?
这个在网上一搜可以搜到实例,但是如果结合业务再问的话,这是一个可以问的挺深的问题。数仓就是这样一个跟业务强结合的东西,离开业务抽象出来的东西反而没有灵魂,解决具体业务问题的方法才是价值。
数据总线矩阵是怎么理解的,为什么要做这个?
感觉可以从数据整合、数据打通等角度回答吧,回答不好。
你们的数仓是怎么样的架构?
技术架构我基本不会,所以也没什么可以说的。只会一个数仓分层:ods、dwd、dwb、ads(app)。细问的话会有很多衍生问题:
ods你们是怎么实现的?
dwd这一层做了什么?
维度建模用在哪一层上?
维度建模有什么优缺点?
更好的应对业务变化,数据冗余多,占空间多,就是用空间换时间。这个问题其实还蛮难的,分析优缺点,就要有对比,跟别的建模方式对比,只有对其他的建模方式有理解才可能回答出来。
做数据仓库如何解决不同业务部门的统计口径不一致的问题?
我们公司业务变化特别快,有时候半年业务主流程就会大变,这种情况下,你怎么应对?
如何评价一个数据仓库的好坏?
数据准确性、时效性、健壮性。面试官说这些都是一些原则,比较虚,有没有可衡量的指标?就是一个数据仓库建好了,用这些指标评价它好不好,有不好的要指出来,指导它改进。这个我真不知道。
mapreduce原理清楚吗?讲一讲,画一画那个经典的流程图吧。
从hive sql提交到生成mapreduce任务,再执行,这个过程是怎么样的?资源调度是怎样的?
hive优化接触过吗?做过哪些?
hive的数据倾斜一般怎么处理?
spark用过吗?
spark现在用的是真多。。。
你们的数仓建设过程中是如何保障数据正确性的?
让你建设一个数仓的话,你的关注点有哪些?
这个就开放问题了,能看出做数仓的思路,也能看出对数仓理解的情况。如果对面试官的路子就好。
你的项目中怎么应用维度建模?能具体说说吗,具体的表有哪些?
RCFile解析过吗?文件结构是怎么样的?
udaf写过吗?udtf呢?怎么写,分哪几个步骤,怎么转换成mr的?
hive中transform用过吗?