网站首页 > java教程 正文
作者: 张乘辉 来自:后端进阶
上周客串了一下面试官,在这里就简单记录一下期间我问到的一些关于 Kafka 的面试题目,这些都是我平时在学习 Kafka 的一些总结要点。
- 谈谈你对 kafka 的整体认识?
问这个问题主要是想知道面试者对 Kafka 的整体认识如何,能够大致了解面试者对 Kafka 的相关概念的熟悉程度,比如消息、topic、partition、replica、offset、重平衡、leader/follower、ISR 等等。
- 谈谈 Kafka 吞吐量为何如此高?
多分区、batch send、kafka Reator 网络模型、pagecache、sendfile 零拷贝、数据压缩。
- 谈谈你对生产者储水池机制的理解
sender 线程工作机制、ByteBuffer 缓冲区的作用等等:
- 如何提高 kafka 吞吐量?
生产端调整 batch.size、linger.ms 参数,以及主题分区数合理分配等。
- 生产者 producer 是线程安全的吗?多线程实例还是单线程实例优缺点?
- 消费者 consumer 是线程安全的吗?多线程实例、单线程实例、单 consumer + 多 worker 线程的优缺点?
- 消息拉取时,什么情况下会造成消息重复消费?谈谈你对位移提交的理解?
理解消息交付语义:
最多一次(atmostonce):消息可能丢失也可能被处理,但最多只会被处理一次;
至少一次(atleastonce):消息不会丢失,但可能被处理多次;
精确一次(exactlyonce):消息被处理且只会被处理一次。
假若消费者在消费前提交位移,那么就是“最多一次”,若在消费后提交位移,那么就是“最少一次”,如果能够保证消费和提交位移同在一个事务中执行,就可保证“精确一次”。__consumer_offsets的一些理解。
- 什么时候会产生消费组重平衡以及重平衡会涉及到哪些相关参数、频繁重平衡会造成哪些后果?
消费组成员变更、主题数量变更、订阅信息变更;session.timeout.ms、max.poll.interval.ms、hearbeat.interval.ms;
相关文章:Kafka 重平衡机制
- kafka 默认不支持自动分区重分配,那么如果让你来执行分区重分配,有哪几个步骤,以及在重分配过程中 kafka 会有哪些动作?
RAR、OAR、AR、RAR-OAR、OAR-RAR 相关概念,
相关文章:记一次 Kafka 线上扩容、Kafka 分区重分配源码分析
- 谈谈你对 Preferred leader 选举的理解?
在 broker 挂掉之后,分区 leader 会变更,久而久之就会变得不均衡,Kafka 默认序号最小的副本为 Preferred leader,在 broker 重启回来后,Kafka 会重新调整分区的 Preferred leader 成为 leader,Preferred leader 选举分为手动选举和自动选举,涉及参数 auto.leader.rebalance.enable,还有个默认允许 10% 不均衡策略等等。
- 谈谈你对 ISR 副本同步的理解?ISR 副本同步的缺陷有哪些?
相关文章:Kafka ISR 副本同步机制
- 谈谈你对水印备份机制的理解?LEO 更新机制、HW 更新机制?
相关文章:图解:Kafka 水印备份机制
- 水印备份机制的一些缺陷?数据丢失、数据离散?如何解决的(leader epoch)
相关文章:图解:Kafka 水印备份机制
- 谈谈你对 controller 机制的理解?controller 主要有哪些功能?
更新集群元数据信息、创建主题、删除主题、分区重分配、preferred leader 副本选举、主题分区扩展、broker 加入集群、broker 崩溃、受控关闭、controller leader 选举。
- Kafka 的日志存储机制?
每个分区拥有单独的日志(partition log)、顺序写、到一定大小分成日志段文件(log segment file)、每个 log 文件对应一个索引文件(.index .timeindex)等等。
- Kafka 分区数越多性能就越好吗?为什么?
我的理解:
- 每个分区数都对应一个 log 文件,log 文件是顺序写的,但如果有非常多分区同时刷盘,就会变相成乱序写了,我猜想这也是为什么 RocketMQ 一个 broker 只会拥有一个 CommitLog 的原因之一吧;
- 客户端会为每个分区调用一条线程处理,多线程并发地处理分区消息,分区越多,意味着处理的线程数也就越多,到一定程度后,会造成线程切换开销大;
- 其中一个 broker 挂掉后,如果此时分区特别多,Kafka 分区 leader 重新选举的时间大大增加;
- 每个分区对应都有文件句柄,分区越多,系统文件句柄就越多;
- 客户端在会为每个分区分配一定的缓冲区,如果分区过多,分配的内存也越大。
- 上一篇: 阿里高频面试题汇总
- 下一篇: Java常见算法面试题,这40道Java大厂面试题你知道几个?
猜你喜欢
- 2024-11-17 关于Java虚拟机(JVM)的20道面试题及其答案。(收藏版)
- 2024-11-17 Java常见算法面试题,这40道Java大厂面试题你知道几个?
- 2024-11-17 阿里高频面试题汇总
- 2024-11-17 史上最全106道Java高频面试合集,九大专题,命中率高达95%
- 2024-11-17 十大Java面试问题-您必须知道的Java基础知识
- 2024-11-17 一百五十个终极Java 经典面试题(你会多少题?)
- 2024-11-17 Java面试 | 关于Redis 的面试题
- 2024-11-17 Java面试200+题(含答案):基础+缓存+网络+分布式+数据库+JVM
- 2024-11-17 java高频152 道面试题,具体的内容。(值得收藏)
- 2024-11-17 24道几乎必问的JVM面试题,我只会7道,你能答出几道?
你 发表评论:
欢迎- 最近发表
-
- 搞趣网:我的世界全新皮肤包原始居民下载地址
- 我的世界拔刀剑MOD下载(我的世界拔刀剑mod下载国际版)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- 一些可以显著提高大型 Java 项目启动速度的尝试
- 常见的java敏感异常介绍(java 常见的异常)
- Java 开发者必看!三招实现外部 Jar 包动态加载(含热更新方案)
- Java JAR 启动内存参数配置指南:从基础设置到性能优化
- 对Spring MVC接口进行Mock测试(springmvc对外接口)
- 还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS
- 干掉OpenFeign,SpringBoot 3.0 自带的 HTTP 客户端真香!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)