京东大数据开发高频面试题及答案【互联网回暖了!!!】

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

一、前言

京东2024届校园招聘面向应届生开放8000+岗位!!!

冲起来,兄弟们,我帮大家整理好了大数据开发的高频面试题,希望对你有用!!!

二、高频面试题总结

1. clickhouse的写入和读取为什么快

写入:ClickHouse采用类LSM Tree的结构,数据写入后定期在后台Compaction,而且, ClickHouse在数据导入时全部是顺序写入,写入后数据段不可更改,在后台 compaction 时也是多个段 合并排序后写回磁盘。

读取:本质就是利用优秀的存储引擎来减少磁盘IO对性能的影响比如mergeTreeReplacingMergeTree等,同ClickHouse在将数据写入磁盘前,会进行预排序,以保证数据在磁盘上是有序的,在实现范围查找时可以将随机读变成顺序读,从而有效提高IO效率。另外,压缩可以减少写入和读取的数据量,从而减少IO的时间

2. hbase中rowkey的设计原则是什么,如何解决热点现象

设计原则:

  • 长度原则
  • 散列原则
  • 唯一原则

热点现象:预分区+rowkey设计

3. kafka的副本机制

Kafka有主题的概念,每个主题又分为若干个分区。副本的概念是在分区层级下定义的,每个分区配置有若干个副本

4. hdfs为什么是128M一块

首先解释为什么不能设置太大,也不能设置太小?

  1. 如果块设置过大,一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;另一方面,mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。
  2. 如果块设置过小,一方面存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,不可取;另一方面文件块过小,寻址时间增大,导致程序一直在找block的开始位置。

再解释为什么设置为128m?

  1. HDFS中平均寻址时间大概为10ms;
  2. 经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态;所以最佳传输时间为10ms/0.01=1000ms=1s
  3. 目前磁盘的传输速率普遍为100MB/s;计算出最佳block大小:100MB/s x 1s = 100MB所以我们设定block大小为128MB

5. Hive的数据存储格式有哪些,优缺点

  1. TextFile行存储优点:数据操作方便,直接使用put上传数据文件,并且可以直接使用cat 查看HDFS上的文件内容;缺点:直接存储文件,数据量级大,磁盘开销大。
  2. SequenceFile行存储优点:可压缩、可分割,优化磁盘利用率和I/O;缺点:含有键值对的二进制文件,数据量级大,对于Hadoop生态系统之外的工具不适用,需要通过text文件转化加载。
  3. rcfile行列式存储优点:可压缩、高效的列存取、查询效率较高;缺点读取全量数据性能低(扫描的数据块多效率低 )。
  4. orcfile列式存储,优点:压缩快、快速列存取、效率比rcfile高,上层presto查询引擎和orc格式兼容性较好;缺点:查询引擎不支持 impala 只能用hive查询数据。
  5. parquet列存储,优点:支持多种查询引擎。

6. udf函数的分类

udf、udaf、udtf

7. MapReduce的执行过程 

请阅读之前的文章

8. flink和spark的区别是什么 

请阅读之前的文章

9. hbase的特点和底层,和mysql有什么区别

HBase主要包括region server和master,region server主要用于region的管理,而master主要用于管理region server,另外还有zookeeper和hdfs,zookeeper主要是用来保证master的高可用,hdfs提供存储服务

  • hbase是一个数据库,而hive一般用于构建数据仓库
  • hbase可以看做是一个存储框架,而hive是一款分析框架
  • hbase的查询延迟比较低,常用于在线实时的业务,而hive常用于离线的业务

10. flink有哪些算子

map、flatMap、filter、keyBy、reduce、union、split、connect等

11. flink的窗口函数

滚动窗口Tumbling Windows

滑动窗口Sliding Windows

会话窗口Session Windows

12. flink的精准一次性如何保证的

checkpoint算法

13. kafka是如何保证数据不丢失和不重复的,从生产者和消费者考虑

保证数据不丢失:

生产者端:producer发送数据到kafka的时候,当kafka接收到数据之后,需要向producer发送ack确认收到,如果producer接收到ack,才会进行下一轮的发送,否则重新发送数据....【大数据开发面试笔记V4.0含所有答案】

消费者端:消费者消费数据的时候会不断提交offset,就是消费数据的偏移量,以免挂了,下次可以从上次消费结束的位置继续消费....【大数据开发面试笔记V4.0含所有答案】

保证数据不重复:

问题:当我们把ack级别设置为-1之后,假设leader收到数据并且同步ISR队列之后,在返回ack之前leader挂掉了,那么producer端就会认为数据发送失败,再次重新发送,那么此时集群就会收到重复的数据,这样在生产环境中显然是有问题的【大数据开发面试笔记V4.0含所有答案】

14. 数据倾斜

请阅读之前的文章

15. zookeper的leader选举机制,常见的一些应用场景,举例说明 

zookeeper刚启动的时候:投票过半数时,服务器id大的胜出

我举个例子吧,假设有3台服务器,服务器1先启动,此时只有它一台服务器启动了,没有任何服务器可以进行通信,因此处于Looking状态,紧接着服务器2启动,它就会和1进行通信,交换选举结果,此时id较大的2胜出,并且满足半数以上的服务器同意选举2,所以2就成为了leader,最后服务器3启动,虽然自己的id大一些,但是前面已经选出了leader,因此自己就成为了follower

#数据人的面试交流地##秋招的第一个offer,大家都拿到了吗##京东信息集散地#
全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
12 107 评论
分享
牛客网
牛客企业服务