推荐阅读文章列表:大数据开发面试笔记V4.0 || 面试聊数仓第一季 || 小白大数据学习路线
一、JD分析
根据业务方提供的需求,完成数仓建模开发【考察业务理解和SQL能力】
深入理解需求,建立核心指标,完成数据质量监控【考察业务理解和数据质量保障能力】
![](https://uploadfiles.nowcoder.com/images/20230824/261038666_1692886607389/D2B5CA33BD970F64A6301FA75AE2EB22)
二、高频面试题总结
1. 如何进行数据质量监控
从四个原则来回答:【每个原则再结合实际来举例,吊打面试官,不懂的评论区讨论一下】
- 准确性
- 完整性
- 一致性
- 及时性
2. 讲一下项目中是如何分层的
先简单介绍五层架构:ods、dwd、dwm、dws、ads
然后介绍为什么这样分层,每一层干了什么
3. MapReduce的过程
map阶段:首先通过InputFormat把输入目录下的文件进行逻辑切片,默认大小等于block大小,并且每一个切片由一个maptask来处理,同时将切片中的数据解析成<key,value>的键值对,k表示偏移量,v表示一行内容;紧接着调用Mapper类中的map方法。将每一行内容进行处理,解析为<k,v>的键值对,在wordCount案例中,k表示单词,v表示数字1 ;shuffle阶段:map端shuffle和reduce端shuffle,详细内容见 最新大数据开发面试笔记V4.0reduce阶段:key相同的数据会调用一次reduce方法,每次调用产生一个键值对,最后将这些键值对写入到HDFS文件中。4. 写过UDF函数没
- 写过,在进行count distinct优化的时候,实现了bitmap的创建以及计算功能
- UDF主要分为三类,包括udf、udaf、udtf
- 在创建UDF函数的时候,只需要按照重写固定的重写方法就行了
5. Spark和MapReduce的区别
MapReduce需要将计算的中间结果写入磁盘,然后还要读取磁盘,从而导致了频繁的磁盘IO;而Spark不需要将计算的中间结果写入磁盘,这得益于Spark的RDD弹性分布式数据集和DAG有向无环图,中间结果能够以RDD的形式存放在内存中,这样大大减少了磁盘IO。MapReduce在shuffle时需要花费大量时间排序,而spark在shuffle时如果选择基于hash的计算引擎,是不需要排序的,这样就会节省大量时间。MapReduce是多进程模型,每个task会运行在一个独立的JVM进程中,每次启动都需要重新申请资源,消耗了大量的时间;而Spark是多线程模型,每个executor会单独运行在一个JVM进程中,每个task则是运行在executor中的一个线程。#数据人的面试交流地##秋招的第一个offer,大家都拿到了吗##秋招##大数据开发#