史上最全的大数据开发面经及答案汇总【字节跳动】
这是一篇总结了牛客网中10+篇字节大数据开发面经的文章,希望能够对大家有所帮助
本篇后续将会持续更新~~~ 【不断更新答案】
Hadoop篇
1.介绍一下Hadoop hadoop是什么
2.谷歌的三篇论文是否了解,三驾马车GFS,BigTable,MapReduce
3.hdfs源码你知道的话,讲讲元数据怎么管理的?
4.hdfs 你知道namenode的问题吗?怎么解决?应该就是联邦机制
5.hdfs写数据流程
6.namenode如果挂掉了怎么办 【HA配置】
7.说一下mapredeuce
8.哪个阶段最费时间,环形缓冲区的调优以及什么时候需要调
shuffle:排序和溢写磁盘 原则上说,缓冲区越大,磁盘 io 的次数越少,执行速度就越快】
9.环形缓冲区了不了解?说一下他的那个阈值高低的影响
10.写一个wordcount
11.WordCount在MapReduce中键值对变化
<偏移量, 一行数据> -> <单词1, 1> <单词2, 1> .... -> <单词1,10> <单词2,15>
12.map端为什么要排序?
13.map端输出的文件组织形式是什么样的?
14.reduce怎么知道从哪里下载map输出的文件
通过MRAPPMaster获取哪些节点有map输出,当map执行结束后,会汇报给MRAPPMaster。reduce中的一个线程会定期询问MRAPPMaster以便获取map输出的位置
15.如果map输出太多小文件怎么办
开启combiner合并,但是在求平均值的时候是不能使用的
16.MapReduce优化的case
输入端:合并小文件 combineinputformat map端:提高环形缓冲区的大小,减少IO次数 开启combiner
zookeeper篇
1.zookeeper简单介绍一下,为什么要用zk?zk的架构?
2.zk的数据存储,当重启后怎么重构zk的数据模型
3.zk的原理,基于什么协议,follower和observer的区别,zk怎么扩容
4.zab和raft的区别 引申到paxos和raft
5.zk机房扩容有什么要注意的吗?(我只知道过半所以奇数个,其他的不知道
6.cap原则
Flume篇
1.Flume都有什么组件,channel的特性以及什么时候该用什么类型的channel,除了Flume还有什么数据收集工具
DataX,Sqoop
Kafka篇
1.Kafka在项目中起到的作用,如果挂掉怎么保证数据不丢失,不使用Kafka会怎样
2.Kafka呢 怎么保证数据一致性 引申到exactly once
3.Kafka通过哪些机制实现了高吞吐量?
Hive篇
1.如何理解Hive,为什么使用Hive
2.Hive的实现逻辑,为什么处理小表延迟比较高
因为其计算是通过MapReduce,MapReduce是批处理,高延迟的。小文件也要执行MapReduce。Hive的优势在于处理大数据,对于处理小数据没有优势
HBase篇
1.Hbase的架构,读写缓存?
2.blockcache的底层实现?你提到了LRU那除了LRU还可以有什么方案?
3.Hbase重启后怎么重构blockcache?(不会 只知道hlog和memstore)
4.Hbase写入方式 bulkload 不同写入方式的应用场景
Spark篇
1.Spark on yarn的流程,分部署模式答
2.怎样提高并行度 相关参数
3.client和cluster模式的区别
4.Spark shuffle以及为什么要丢弃hashshuffle
5.讲讲Spark为什么比Hadoop快
6.RDD是什么,有什么特点
7.RDD的血缘
8.宽窄依赖
9.stage划分
10.Transform和Action算子分别有什么常用的,他们的区别是什么
11.Spark 能产生shuffle的算子
12.Spark里的reduce by key和group by key两个算子在实现上的区别并且说一下性能
13.Spark内存管理
14.Spark数据落盘
15.看过Spark底层源码没有
16.Spark程序故障重启,checkpoint检查点
17.Spark 数据倾斜
18.用Spark遇到了哪些问题
19.Spark join的有几种实现
20.背压机制应用场景 底层实现
Flink篇
1.Flink的组成
2.Flink流批一体解释一下
3.聊聊Sparkstreaming和Flink?为什么你觉得Flink比Sparkstreaming好?
4.那Flink shuffle呢?你了解吗?
5.watermark用过吗
6.checkpoint Chandy-Lamport算法
7.如何用checkpoint和watermark防止读到乱序数据。
8.Kafka和Flink分别怎么实现exactly once,问的比较深入,我只回答了一些用法,二阶段提交说了流程,没说出来机制。
9.流式框架
1)节点挂了,怎么保证任务正常执行
2)有状态怎么维护之前的状态
3)checkpoint数据重用前提
java基础篇
1.java限定词(private那些)
2.ArrayList原理,为什么初始是10,为什么扩容1.5倍
3.hashmap的实现原理
4.怎么解决hash碰撞+ 时间复杂度+优化+改成红黑树了时间复杂度+继续优化
5.实现单例模式
6.多路复用,NIO这些了解过吗?
7.100M的数组 随机查快还是顺序查快 解释为什么?
并发编程篇
1.如何实现多线程 写过多线程吗
2.4种线程池功能
3.java内存模型
4.java内存模型中,线程和进程会如何分配这些资源
5.volatile的作用
6.synchronized和volited的区别
7.synchronized与lock的区别
8.公平锁与非公锁的区别
9.java锁都有什么,JUC包
10.lock是公平的还是非公平的(答案是可以根据逻辑去自己实现是否公平)
11.怎么保证线程同步?
12.sychornized讲一下 和其他的区别
13.sychornized怎么优化
14.volatile可以保证原子性吗?
15.cas呢?我讲了cas的原理 结果怼我 我不是问你原理 我是问你怎么保证原子性的?
16.reentrantlock底层原理
17.除了reentrantlock,你还知道什么锁
18.读写锁底层实现原理和应用场合
19.synchronize底层实现 锁升级 公平?
20.多线程(线程间的通信,锁,volatile,CAS)
算法篇
都是网上的一些原题,自行寻找答案