赞
踩
11. 消费者提交消费位移时提交的是当前消费到的最新消息的offset还是offset+1?
offset+1
12. 有哪些情形会造成重复消费?
消费者消费后没有commit offset(程序崩溃/强行kill/消费耗时/自动提交偏移情况下unscrible)
13. 那些情景下会造成消息漏消费?
消费者没有处理完消息 提交offset(自动提交偏移 未处理情况下程序异常结束)
14. KafkaConsumer是非线程安全的,那么怎么样实现多线程消费?
1.在每个线程中新建一个KafkaConsumer
2.单线程创建KafkaConsumer,多个处理线程处理消息(难点在于是否要考虑消息顺序性,offset的提交方式)
15. 简述消费者与消费组之间的关系
消费者从属与消费组,消费偏移以消费组为单位。每个消费组可以独立消费主题的所有数据,同一消费组内消费者共同消费主题数据,每个分区只能被同一消费组内一个消费者消费。
16. 当你使用kafka-topics.sh创建(删除)了一个topic之后,Kafka背后会执行什么逻辑?
创建:在zk上/brokers/topics/下节点 kafkabroker会监听节点变化创建主题
删除:调用脚本删除topic会在zk上将topic设置待删除标志,kafka后台有定时的线程会扫描所有需要删除的topic进行删除
17. topic的分区数可不可以增加?如果可以怎么增加?如果不可以,那又是为什么?
可以
18. topic的分区数可不可以减少?如果可以怎么减少?如果不可以,那又是为什么?
不可以
19. 创建topic时如何选择合适的分区数?
根据集群的机器数量和需要的吞吐量来决定适合的分区数
20. Kafka目前有那些内部topic,它们都有什么特征?各自的作用又是什么?
__consumer_offsets 以下划线开头,保存消费组的偏移
21. 优先副本是什么?它有什么特殊的作用?
优先副本 会是默认的leader副本 发生leader变化时重选举会优先选择优先副本作为leader
22. Kafka有哪几处地方有分区分配的概念?简述大致的过程及原理
创建主题时
如果不手动指定分配方式 有两种分配方式
消费组内分配
23. 简述Kafka的日志目录结构
每个partition一个文件夹,包含四类文件.index .log .timeindex leader-epoch-checkpoint
.index .log .timeindex 三个文件成对出现 前缀为上一个segment的最后一个消息的偏移 log文件中保存了所有的消息 index文件中保存了稀疏的相对偏移的索引 timeindex保存的则是时间索引
leader-epoch-checkpoint中保存了每一任leader开始写入消息时的offset 会定时更新
follower被选为leader时会根据这个确定哪些消息可用
24. Kafka中有那些索引文件?
如上
25. 如果我指定了一个offset,Kafka怎么查找到对应的消息?
1.通过文件名前缀数字x找到该绝对offset 对应消息所在文件
2.offset-x为在文件中的相对偏移
3.通过index文件中记录的索引找到最近的消息的位置
4.从最近位置开始逐条寻找
26. 如果我指定了一个timestamp,Kafka怎么查找到对应的消息?
原理同上 但是时间的因为消息体中不带有时间戳 所以不精确
27. 聊一聊你对Kafka的Log Retention的理解
kafka留存策略包括 删除和压缩两种
删除: 根据时间和大小两个方式进行删除 大小是整个partition日志文件的大小
超过的会从老到新依次删除 时间指日志文件中的最大时间戳而非文件的最后修改时间
压缩: 相同key的value只保存一个 压缩过的是clean 未压缩的dirty 压缩之后的偏移量不连续 未压缩时连续
**28. 聊一聊你对Kafka的Log Compaction的理解
29. 聊一聊你对Kafka底层存储的理解(页缓存、内核层、块层、设备层)
30. 聊一聊Kafka的延时操作的原理
31. 聊一聊Kafka控制器的作用
32. 消费再均衡的原理是什么?(提示:消费者协调器和消费组协调器)
33. Kafka中的幂等是怎么实现的**
pid+序号实现,单个producer内幂等
33. Kafka中的事务是怎么实现的(这题我去面试6家被问4次,照着答案念也要念十几分钟,面试官简直凑不要脸。实在记不住的话…只要简历上不写精通Kafka一般不会问到,我简历上写的是“熟悉Kafka,了解RabbitMQ….”)
**34. Kafka中有那些地方需要选举?这些地方的选举策略又有哪些?
35. 失效副本是指什么?有那些应对措施?
36. 多副本下,各个副本中的HW和LEO的演变过程
37. 为什么Kafka不支持读写分离?
38. Kafka在可靠性方面做了哪些改进?(HW, LeaderEpoch)
39. Kafka中怎么实现死信队列和重试队列?
40. Kafka中的延迟队列怎么实现**(这题被问的比事务那题还要多!!!听说你会Kafka,那你说说延迟队列怎么实现?)
**41. Kafka中怎么做消息审计?
42. Kafka中怎么做消息轨迹?
43. Kafka中有那些配置参数比较有意思?聊一聊你的看法
44. Kafka中有那些命名比较有意思?聊一聊你的看法
45. Kafka有哪些指标需要着重关注?**
生产者关注MessagesInPerSec、BytesOutPerSec、BytesInPerSec 消费者关注消费延迟Lag
46. 怎么计算Lag?(注意read_uncommitted和read_committed状态下的不同)
参考 如何监控kafka消费Lag情况
47. Kafka的那些设计让它有如此高的性能?
零拷贝,页缓存,顺序写
**48. Kafka有什么优缺点?
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
img" style=“zoom: 33%;” />
[外链图片转存中…(img-WSHYO4Zg-1713300346359)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。