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

推荐阅读文章列表:大数据开发面试笔记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,大家都拿到了吗##京东信息集散地#
全部评论

相关推荐

06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
12
111
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务