当前位置: 首页 > 面试经验 >

百度数开高频面试题|有同学收到面试邀请了吗

优质
小牛编辑
127浏览
2023-07-22

百度数开高频面试题|有同学收到面试邀请了吗

推荐阅读文章列表:大数据开发面试笔记V4.0 || 面试聊数仓第一季 || 小白大数据学习路线

一、前言

7月11日,百度开启了2024届校园招聘提前批专场!!!

同学们不要担心没准备好,只用准备到8成即可,赶紧投起来,hc有限!!!

为了帮助大家收割百度提前批offer,最近整理了一些百度高频的面试题,题目不多,建议全部吃透!!!

二、高频面试题总结

1. Flink里面断流怎么处理

线上断流指的是在变更过程中导致下游数据延迟的时长

解法 1:双链路切换。此解法的关键是再搭建一条相同的实时链路作为备用链路,当变更有状态 SQL 时,可以在备用链路上做回溯,重新计算历史数据,回溯完成后先验证备用链路的结果数据,确保没问题后再在链路最下游的数据服务层切换读取的表,完成整个变更流程。

解法 2:旁路状态生成。与双链路切换不同点在于,这里变更的是链路上的单个作业,思路是临时启动一个旁路作业来回溯,构建出新逻辑的状态,验证数据完成后再重启线上作业,以此完成 SQL 和状态的同时切换。

解法 3:历史状态迁移前两个方法的思路比较类似,都是基于历史数据重新计算,构建出新状态。但这个思路是基于历史状态迁移出新状态,这种方法构建出的新状态虽然不能保证完整性,但在某些情况下,业务也是可以接受的。目前我们通过改造 State Process API 支持在 SQL 算子及其上下游关系不变的情况下,允许 Join 和 Agg 算子来新增列。

2. Flink的exactly-once是怎么实现的

Checkpoint的Chandy-Lamport算法

详细答案见此文->字节最全数开面试题|有同学拿了字节提前批offer

3. Checkpoint的时候barrier什么时候发送

CheckpointCoordinator(检查点协调器) 周期性的向该流应用的所有source算子发送 barrier(屏障)

4. Sparkstreaming和Flink的区别

答案见此文->字节最全数开面试题|有同学拿了字节提前批offer

5. Spark任务提交流程

首先spark的客户端将作业提交给yarn的RM,然后RM会分配container,并且选择合适的NM启动ApplicationMaster,然后AM启动Driver,紧接着向RM申请资源启动executor,Executor 进程启动后会向 Driver 反向注册,全部注册完成后 Driver 开始执行main 函数,当执行到行动算子,触发一个 Job,并根据宽依赖开始划分 stage(阶段的划分),每个 stage 生成对应的 TaskSet(任务的切分),之后将 task 分发到各个 Executor 上执行。

6. Spark的stage切分原理

对于窄依赖,不会进行划分,也就是将这些转换操作尽量放在在同一个 stage中,可以实现流水线并行计算。 对于宽依赖,由于有 shuffle 的存在,只能在父 RDD 处理完成后,才能开始接下来的计算,也就是说需要要划分 stage(从后往前,遇到宽依赖就切割stage

7. RDD是什么

它翻译过来就叫做弹性分布式数据集,是一种数据结构,可以理解成是一个集合。在代码中的话,RDD是一个抽象类。还有一个非常重要的特点:RDD是不保存数据的,仅仅封装了计算逻辑,也就是你直接打印RDD是看不见具体值的。

8. RDD和DataFrame有什么区别

第一、spark1.0产生有了RDD,spark1.3产生了DataFrame

第二、RDD不支持sparksql操作,但是DataFrame支持sparksql操作

第三、RDD一般会和spark mllib同时使用,但是DataFrame一般不和spark mllib同时使用

9. Spark中的哪些算子会产生shuffle

reduceByKey、groupByKey、sortByKey、join、repartition等

10. Zookeeper的分布式一致性协议是什么

zab协议;借鉴了paxos算法,是专门为zookeeper设计的支持崩溃恢复的原子广播协议。paxos算法中采用多个提案者会存在竞争acceptor的问题,于是zab协议就只采用了一个提案者,而zookeeper的一致性就是基于zab协议实现的,也就是只有一个leader可以发起提案。它包括两种基本的工作模式:正常和异常的时候。

11. HQL转换为MR的流程是什么

首先客户端提交HQL以后,hive通过解析器将SQL转换成抽象语法树,然后通过编译器生成逻辑执行计划,再通过优化器进行优化,最后通过执行器转换为可以运行的物理计划,比如MapReduce/spark,然后提交到yarn上执行

12. UDF了解吗

分为UDF、UDAF、UDTF;UDF一对一,UDAF多对一,UDTF一对多

13. Left Semi Join是什么

Left Semi Join(左半连接)是 IN/EXISTS 子查询的一种更高效的实现。

select     
	t1.key,   
	t1.value
from t1  
left semi join t2 
on t1.key = t2.key;
等价于
select     
	key,    
	value
from t1 
where key in 
(
	select key 
	from t2
);

14. 数据倾斜问题

看之前的文章,面试必问!!!

15. 思考:tbl_v2x starttime, endtime > 10s 是一个任务,tbl_pnc startime, enditme, status = 'auto-driver'的统计,统计每一天,任务的闭环率

这是本人之前面试被问过的一道题,还是有难度的,可以评论区讨论一下

---------------------------------------------------------

最全的大数据笔记点击下方 ↓

2023最新大数据开发面试笔记V4.0

----------------------------------------------------------

#数据人的面试交流地##大数据开发工程师面经##提前批过来人的忠告##百度信息集散地#
 类似资料: