推荐阅读文章列表:
最新大数据开发面试笔记V4.0
面试聊数仓第一季
小白大数据学习路线
1、前言
6月28日,oppo率先开启了2024届校园招聘提前批专场!!!
同学们不要担心没准备好,只用准备到8成即可,赶紧投起来,hc有限!!!
为了帮助大家收割oppo提前批offer,最近整理了一些oppo高频的面试题,题目不多,建议全部吃透!!!
2、高频面试题
1. Kafka是读写分离的吗
在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leader 副本进行交互的,从而实现的是一种主写主读的生产消费模型。虽然主写从读可以让从节点去分担主节点的负载压力,预防主节点负载过重而从节点却空闲的情况发生。但是主写从读也有2个很明显的缺点:
1)数据一致性问题:数据从主节点转到从节点,必然会有一个延时的时间窗口,这个时间窗口会导致主从节点之间的数据不一致。
2)延时问题:主从同步需要经历网络→主节点内存→主节点磁盘→网络→从节点内存→从节点磁盘这几个阶段,非常耗时
那么再说一下Kafka 只支持主写主读有几个优点:
1)可以简化代码的实现逻辑,减少出错的可能;
2)将负载粒度细化均摊,与主写从读相比,不仅负载效能更好,而且对用户可控;
3)没有延时的影响;
4)在副本稳定的情况下,不会出现数据不一致的情况。
2. 你对spark的新特性AQE和DPP有了解吗
这是spark3.0的两个新特性,AQE全称叫做自适应查询执行,是spark sql的一种动态优化机制,是对查询执行计划的优化;DPP全称叫做动态分区裁剪,就是基于运行时推断出来的信息来进一步进行分区裁剪,从而减少事实表中数据的扫描量、降低 I/O 开销,提升执行性能。
3.你知道的窗口函数有哪些
- rank类:rank、dense_rank、row_number 【这几个函数之间的区别面试必考】
- lag(col, n, default):返回往上移n行的数据,不存在则返回default
- lead(col, n, default):返回往下移n行的数据,不存在则返回default
- first_value(col):取分组内排序后,第一个值
- last_value(col):取分组内排序后,最后一个值
4.spark和hadoop的区别
- MapReduce需要将计算的中间结果写入磁盘,然后还要读取磁盘,从而导致了频繁的磁盘IO;而Spark不需要将计算的中间结果写入磁盘,这得益于Spark的RDD弹性分布式数据集和DAG有向无环图,中间结果能够以RDD的形式存放在内存中,这样大大减少了磁盘IO。
- MapReduce在shuffle时需要花费大量时间排序,而spark在shuffle时如果选择基于hash的计算引擎,是不需要排序的,这样就会节省大量时间。
- MapReduce是多进程模型,每个task会运行在一个独立的JVM进程中,每次启动都需要重新申请资源,消耗了大量的时间;而Spark是多线程模型,每个executor会单独运行在一个JVM进程中,每个task则是运行在executor中的一个线程。
5.sparkstreaming和fink的区别
- 第一,计算速度的不同,Flink是真正的实时计算框架,而sparkstreaming是一个准实时微批次的计算框架,也就是说,sparkstreaming的实时性比起Flink,差了一大截
- 第二,架构模型的不同,Spark Streaming 在运行时的主要角色包括:Driver、Executor,而Flink 在运行时主要包含:Jobmanager、Taskmanager。
- 第三,时间机制的不用,Spark Streaming 只支持处理时间,而Flink支持的时间语义包括处理时间、事件时间、注入时间,并且还提供了watermark机制来处理迟到数据。
6.spark/hive数据倾斜
从几个方面来进行回答:
- 是什么
- 为什么
- 怎么解决
7.mapreduce的工作流程
- map阶段:首先通过InputFormat把输入目录下的文件进行逻辑切片,默认大小等于block大小,并且每一个切片由一个maptask来处理,同时将切片中的数据解析成<key,value>的键值对,k表示偏移量,v表示一行内容;紧接着调用Mapper类中的map方法。将每一行内容进行处理,解析为<k,v>的键值对,在wordCount案例中,k表示单词,v表示数字1 ;
- shuffle阶段:map端shuffle和reduce端shuffle,详细类容见 最新大数据开发面试笔记V4.0
- reduce阶段:key相同的数据会调用一次reduce方法,每次调用产生一个键值对,最后将这些键值对写入到HDFS文件中。
8.mapreduce为什么需要排序
MapReduce在reduce阶段需要分组,将key相同的放在一起进行规约,为了达到该目的,有两种算法:hashmap和sort。hashmap算法太耗内存,而sort通过外排可对任意数据量分组,只要磁盘够大就行。map端排序是为了减轻reduce端排序的压力。
9.fink的容错机制
回答checkpoint的原理即可
10.hive的数据类型有哪些
hive的数据类型有原始数据类型和复杂类型。原始类型包括数值型,Boolean,字符串,时间。复杂类型包括数组,map,struct。
11.hive和传统数据库的区别
- 数据量,hive支持大规模的数据计算,mysql支持的小一些
- 数据更新快不快,hive官方是不建议对数据进行修改的,因为非常的慢,这一点我也测试过,而mysql经常会进行数据修改,速度也挺快的
- 查询快不快,hive大多数延迟都比较高的,mysql会低一些,当然这也与数据规模有关,数据规模很大的时候,hive不一定比mysql慢
12.你们的数仓怎么分层的
五层架构:ods、dwd、dwm、dws、ads
13.谈一谈对数仓的理解,为什么要做数据仓库
《面试聊数仓第一季》中存在类似面试题,这里不再解释
14.维度建模有几种模型
《面试聊数仓第一季》中存在类似面试题,这里不再解释
15.听说过拉链表吗,怎么实现的
《面试聊数仓第一季》中存在类似面试题,这里不再解释
---------------------------------------------------------------------------------------------------
ps:希望大家认真准备提前批,这是在正式秋招之前一次非常好的检验自己学习情况的机会
#数据人的面试交流地##提前批##oppo##大数据##大数据开发#