Kafka面试基础问题与标准答案_第1页
Kafka面试基础问题与标准答案_第2页
Kafka面试基础问题与标准答案_第3页
Kafka面试基础问题与标准答案_第4页
Kafka面试基础问题与标准答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kafka面试基础问题与标准答案考试时间:______分钟总分:______分姓名:______一、选择题1.Kafka中,一个Topic的消息被存储在多个Partition中,同一个Partition内的消息是保证有序的,这句话正确吗?A.正确B.错误2.Kafka中,Producer发送消息时,`acks=0`参数意味着Producer只关心发送行为是否成功,不关心Broker是否收到消息。这句话正确吗?A.正确B.错误3.在Kafka中,ConsumerGroup消费Kafka数据时,默认情况下,同一个Group内的多个Consumer实例会共同消费该Group订阅的所有Topic的所有Partition,保证每个消息只被消费一次。这句话正确吗?A.正确B.错误4.Kafka中,Offset是用来唯一标识Partition中某条消息的递增ID。这句话正确吗?A.正确B.错误5.ZooKeeper在早期的Kafka版本中扮演着重要的角色,它负责管理Kafka集群的元数据信息,例如Broker列表、Topic信息、Partition信息以及Controller选举等。这句话正确吗?A.正确B.错误6.Kafka的Broker通过配置`log.dirs`指定了多个存储目录,如果其中一个目录发生故障,那么该Broker上的所有数据都会丢失。这句话正确吗?A.正确B.错误7.当一个KafkaTopic的ReplicationFactor(副本因子)设置为3,集群中只有1个Broker时,该Topic的数据是高可用的。这句话正确吗?A.正确B.错误8.KafkaConsumer的`auto.offset.reset`参数用于设置当Consumer尝试消费一个尚未有Offset记录的Topic或Partition时的行为。其可取值包括`earliest`和`latest`。这句话正确吗?A.正确B.错误9.Kafka中,Partition的个数是由创建Topic时指定的,一旦创建完成,通常不能修改。这句话正确吗?A.正确B.错误10.KafkaProducer端配置的`key.serializer`和`value.serializer`的作用是将Producer发送的Key和Value数据进行序列化,以便在网络传输和存储时占用更小的空间。这句话正确吗?A.正确B.错误二、多选题1.以下哪些是Kafka集群中Broker的主要职责?A.存储消息数据B.处理Producer的写入请求C.处理Consumer的读取请求D.管理ZooKeeper集群2.以下哪些参数会影响KafkaProducer发送消息的吞吐量?A.`batch.size`B.`linger.ms`C.`buffer.memory`D.`acks`3.以下哪些情况会触发KafkaConsumerGroup进行Rebalance(重平衡)?A.Group内新增了ConsumerB.Group内的某个Consumer实例发生故障C.Group内的某个Consumer主动离开D.某个Topic的Partition数量发生了变化4.以下哪些是Kafka中保证数据不丢失的机制或配置?A.设置Producer的`acks=all`B.为Topic设置足够的ReplicationFactor(副本因子)C.Consumer使用`mit=true`D.正确配置ZooKeeper的Quorum5.Kafka中,关于TopicPartition的描述,以下哪些是正确的?A.Partition是Kafka实现消息有序性的基础单元B.Partition的数量在创建Topic时确定,通常不能修改C.同一个Partition内的消息是有序的,但不同Partition之间的消息无法保证有序D.Partition的个数越多,Consumer消费时的并行度越高6.以下哪些属于Kafka的基本组件?A.BrokerB.TopicC.PartitionD.Offset7.KafkaConsumer在消费消息过程中,关于位移(Offset)管理,以下哪些说法是正确的?A.Consumer可以手动提交位移B.Consumer可以配置自动提交位移C.手动提交位移比自动提交位移更精确D.如果Consumer消费了消息但没有提交位移,重启后可能会丢失已消费的消息8.KafkaProducer发送消息时,`acks`参数的不同取值代表的意义是什么?(请选择所有正确的描述)A.`acks=0`:Producer不等待任何Broker的确认B.`acks=1`:Producer等待LeaderBroker成功写入消息即可C.`acks=all`(或`-1`):Producer等待所有ISR(In-SyncReplicas)中的Broker都成功写入消息后才认为发送成功D.`acks=2`:Producer等待Leader和另一个FollowerBroker成功写入消息9.以下哪些是Kafka消息模型中的基本概念?A.KeyB.ValueC.TopicD.Serializer10.以下哪些场景适合使用Kafka作为消息队列中间件?A.应用解耦B.数据采集C.系统间异步通信D.实时数据流处理三、填空题1.Kafka中,负责维护集群状态、选举Controller以及存储关键配置信息的组件(或系统)是________。2.Kafka的一个Topic被分成多个Partition后,每个Partition内部的消息是按照________的顺序存储和排序的。3.KafkaConsumerGroup中的多个Consumer共同消费一个Topic的所有Partition时,为了保证每个消息只被消费一次,通常需要Consumer实现________接口。4.当KafkaConsumer的`mit`设置为________时,Consumer会根据配置的`auto.offset.reset`策略自动提交消费位移。5.Producer向Broker发送消息时,需要指定消息的________和________。四、简答题1.请简述Kafka中Producer发送消息到Broker的基本流程。2.请解释KafkaConsumerGroup的概念,以及它与单个Consumer消费模式的主要区别。3.什么是Kafka的ISR(In-SyncReplicas)?ISR在保证数据可靠性方面扮演什么角色?4.简述Kafka中Offset的作用,以及Consumer如何管理Offset。5.描述一下Kafka中发生ConsumerGroupRebalance的主要场景。试卷答案一、选择题1.A解析:Kafka的Partition是消息的有序单元,保证单个Partition内消息的有序性是Partition的基本特性。2.B解析:`acks=0`表示Producer只发送请求,不等待Broker任何确认就认为发送成功,无法保证Broker收到。`acks=1`等待Leader写入,`acks=all`等待ISR都写入。3.A解析:这是ConsumerGroup模式的核心特性,通过共享位移和负载均衡实现广播、独占或共享消费,确保消息不丢失(指不重复消费)。4.A解析:Offset是Partition内的唯一消息标识符,通常从0开始递增,是Consumer追踪消费进度的依据。5.A解析:在依赖ZooKeeper的Kafka版本中,ZooKeeper负责集群元数据管理和协调,对于Broker选举、Topic配置管理等至关重要。6.B解析:Broker的`log.dirs`配置了多个目录,数据会分布式存储在这些目录下,单个目录故障只会影响该目录下的数据,不会导致所有数据丢失。7.B解析:ReplicationFactor为3意味着需要至少3个Broker(包含Leader)。如果只有1个Broker,则数据只有一份,该Broker宕机会导致数据丢失,不可用。8.A解析:`auto.offset.reset`确实是Consumer配置项,用于定义Consumer消费没有历史Offset的Topic/Partition时的起始行为,可选`earliest`(从第一条开始)或`latest`(从最后一条开始)。9.A解析:Topic创建后,其Partition数量是固定的,后续修改通常需要删除重建或使用更高级的分区调整工具(如Rebalance工具)。10.A解析:Serializer的作用是将Java对象等原始数据序列化为字节流,以便在Kafka网络传输和磁盘存储中占用空间,并供反序列化使用。二、多选题1.A,B,C解析:Broker的核心职责包括存储消息日志、处理Producer的写请求、处理Consumer的读请求。管理ZooKeeper是早期版本或特定场景下的职责,现代KRaft模式下Broker直接管理集群状态,但广义上仍可视为集群管理的一部分,此处按传统理解选ABC。若考虑KRaft,D也可选,但传统Broker职责侧重ABC。2.A,B,C解析:`batch.size`控制单次发送请求包含的消息数量,`linger.ms`控制等待更多消息凑批量超时时间,`buffer.memory`是Producer可用的总发送缓冲区大小,这些都直接影响发送效率。`acks`影响可靠性,不直接影响吞吐量。3.A,B,C解析:ConsumerGroup的Rebalance由KafkaController触发,原因包括Group内Consumer数量变化(增、删、故障)、配置变更(如`erval.ms`超时导致认为Consumer挂掉)、TopicPartition变化等。TopicPartition数量变化本身不直接触发GroupRebalance,但可能导致后续消费分配。4.A,B,D解析:`acks=all`(或-1)确保数据写入大多数副本才成功,`ReplicationFactor`设置足够高(通常>=2)提供数据冗余,`ZooKeeperQuorum`(或KRaftQuorum)保证集群稳定性和元数据一致性,这些都是数据不丢失的基础。`mit=true`与数据不丢失无关,甚至可能丢失消费记录。5.A,C,D解析:Partition是Kafka有序性的基础,A对。Partition数在创建时确定,不易修改,C对。不同Partition间消息无法保证全局有序,D对。Partition数增加通常提高并行度,D对。但Partition数量过多可能导致管理复杂和资源浪费,并非绝对越高越好,B的绝对化描述有误。6.A,B,C,D解析:Broker,Topic,Partition,Offset都是Kafka的核心概念和组件。Broker是服务器实例,Topic是消息类别,Partition是内部存储单元,Offset是消息ID。7.A,B,C,D解析:手动提交和自动提交都是Consumer管理Offset的机制,A、B对。手动提交可以更精确控制何时提交,避免自动提交因时间间隔过长丢失消费记录,C对。若未提交位移就重启,重启后会从上次提交的位置开始消费,导致该部分消息丢失,D对。8.A,B,C解析:`acks=0`不等待确认,A对。`acks=1`等待Leader写入成功,B对。`acks=all`(-1)等待ISR所有副本写入成功,C对。`acks`没有`2`这个值,D错。9.A,B,C,D解析:Key和Value是消息的基本构成,A、B对。Topic是消息的类别,C对。Serializer/Deserializer是处理Key/Value序列化的工具,属于概念范畴,D对。10.A,B,C,D解析:Kafka作为MQ,天然适用于应用解耦(A)、数据采集(B)、异步通信(C)。其流处理能力(如配合Streams/Connect/KSQL)也使其适用于实时数据处理(D)。三、填空题1.ZooKeeper(或KRaftController)*(注:取决于Kafka版本,ZooKeeper是传统,KRaft是现代,两者都需填)*解析:无论是早期依赖ZooKeeper还是现代的KRaft模式,都存在一个负责集群管理的协调者或系统,传统上称为ZooKeeper集群,KRaft模式下称为Controller。2.时间戳(或发送时间)解析:KafkaPartition内的消息是按照其被写入时的时间戳(精确到毫秒)进行排序存储的,保证了时间上的有序性。3.ConsumerRecords解析:为了实现精确一次消费(at-least-once),Consumer需要实现`ConsumerRecords<T>`的回调接口(在JavaAPI中),该接口提供了消费到的消息列表。4.true解析:`mit`的默认值就是`true`,此时Consumer会按照`erval.ms`的配置自动提交位移。5.Key,Value解析:Producer发送消息时,必须指定消息的键(Key)和值(Value),它们将被序列化后传输。四、简答题1.答:Producer发送消息到Broker的基本流程如下:a.Producer选择要发送消息的目标Topic。b.Producer将消息的Key和Value序列化成字节流。c.Producer根据配置的分区策略(默认按Key哈希或轮询)确定消息属于哪个Partition。d.Producer将消息发送给目标Partition的LeaderBroker。e.LeaderBroker接收到消息后,将其写入Leader副本的日志中。f.根据Producer的`acks`配置,LeaderBroker可能会等待ISR中的其他Broker(根据`acks=all`)写入成功。g.LeaderBroker向Producer发送确认(ACK)响应。h.Producer根据ACK结果决定是否认为发送成功。2.答:KafkaConsumerGroup(消费者组)是一组共同消费KafkaTopic数据的Consumer实例的集合。其核心特点是:*共享消费:Group内的Consumer共享消费该Group订阅的所有Topic的所有Partition,每个Partition由Group内至少一个Consumer实例消费。*负载均衡:消息会根据分区策略(如轮询、随机)分配给Group内的Consumer,实现负载均衡。*位移管理:Group内共享一个消费位移(Offset)状态,通常存储在ZooKeeper或KRaft元数据中。每个Consumer负责消费其分区的消息并提交位移。*保证不丢消息(不重复):在Group内部,每个消息只会被Group内一个Consumer消费一次。与单个Consumer模式相比,ConsumerGroup提供了更高的吞吐量(并行消费)、更好的容错性(单个Consumer故障不影响整体消费)和应用解耦能力。单个Consumer模式则每个Consumer独立消费,无法实现组内并行和共享位移。3.答:ISR(In-SyncReplicas)是指在一个KafkaPartition中,所有与Leader副本保持“同步”的Follower副本的集合。“同步”通常指Follower副本的进度落后于Leader副本的时间不能超过某个阈值(`replica.lag.time.max.ms`)。ISR在保证数据可靠性方面扮演的角色:*写入确认:Producer发送消息时,可以配置`acks=all`,要求Leader等待ISR中的所有(或大部分)副本都写入成功后才返回ACK,从而保证消息至少被保存了一份在多数副本上,提高了数据不丢失的保证。*Leader选举:当LeaderBroker发生故障时,Controller会选择ISR中的某个FollowerBroker接任新的Leader。因为ISR中的Follower至少已经同步了大部分数据,接任Leader可以最大程度地减少数据丢失。*消费端容错:消费者通常只消费来自ISR的消息(除非配置特殊),因为ISR内的副本被认为是“可靠”的,可以保证消息至少存在于一个可靠位置。4.答:Offset是KafkaPartition中每条消息的唯一、递增的标识符,就像数据库的主键一样。Offset的作用:*唯一标识:在特定Partition内,每个消息都有一个唯一的Offset值。*追踪进度:Consumer通过跟踪自己消费到哪个Offset,来管理消费状态和决定下一批次从哪里开始消费。Consumer管理Offset的方式:*自动提交:Consumer可以配置`mit=true`,并设置提交间隔时间(`erval.ms`)。Consumer消费完一批消息后,会自动将自己消费到的最新Offset提交到位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论