面试不落泪!精选一线大厂50道Kafka常见面试题『答案详解』

前言

众所周知,kafka的受欢迎程度在编程界也是首屈一指的,而且Kafka也拥有强劲的就业机会和职业前景。此外,在互联网时代可以拥有Kafka知识对本身也是一条快速增加的道路。故,本文收集了一些一线互联网大厂常见的Kafka面试题,并提供了详细答案,但愿能帮助到你们!java

Kafka常见面试题大全含答案

问题1:什么是Apache Kafka?

答:Apache Kafka是一个发布 - 订阅开源消息代理应用程序。这个消息传递应用程序是用“scala”编码的。基本上,这个项目是由Apache软件启动的。Kafka的设计模式主要基于事务日志设计。面试

问题2:Kafka中有哪几个组件?

答:Kafka最重要的元素是:sql

  • 主题:Kafka主题是一堆或一组消息。
  • 生产者:在Kafka,生产者发布通讯以及向Kafka主题发布消息。
  • 消费者:Kafka消费者订阅了一个主题,而且还从主题中读取和处理消息。
  • 经纪人:在管理主题中的消息存储时,咱们使用Kafka Brokers。

问题3:解释偏移的做用。

答:给分区中的消息提供了一个顺序ID号,咱们称之为偏移量。所以,为了惟一地识别分区中的每条消息,咱们使用这些偏移量。编程

问题4:什么是消费者组?

答:消费者组的概念是Apache Kafka独有的。基本上,每一个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。设计模式

问题5:ZooKeeper在Kafka中的做用是什么?

答:Apache Kafka是一个使用Zookeeper构建的分布式系统。虽然,Zookeeper的主要做用是在集群中的不一样节点之间创建协调。可是,若是任何节点失败,咱们还使用Zookeeper从先前提交的偏移量中恢复,由于它作周期性提交偏移量工做。安全

问题6:没有ZooKeeper可使用Kafka吗?

答:绕过Zookeeper并直接链接到Kafka服务器是不可能的,因此答案是否认的。若是以某种方式,使ZooKeeper关闭,则没法为任何客户端请求提供服务。服务器

问题8:为何Kafka技术很重要?

答:Kafka有一些优势,所以使用起来很重要:架构

  • 高吞吐量:咱们在Kafka中不须要任何大型硬件,由于它可以处理高速和大容量数据。此外,它还能够支持每秒数千条消息的消息吞吐量。
  • 低延迟:Kafka能够轻松处理这些消息,具备毫秒级的极低延迟,这是大多数新用例所要求的。
  • 容错:Kafka可以抵抗集群中的节点/机器故障。
  • 耐久性:因为Kafka支持消息复制,所以消息永远不会丢失。这是耐久性背后的缘由之一。
  • 可扩展性:卡夫卡能够扩展,而不须要经过添加额外的节点而在运行中形成任何停机。

问题9:Kafka的主要API有哪些?

答:Apache Kafka有4个主要API:并发

  • 生产者API
  • 消费者API
  • 流 API
  • 链接器API

问题10:什么是消费者或用户?

答:Kafka消费者订阅一个主题,并读取和处理来自该主题的消息。此外,有了消费者组的名字,消费者就给本身贴上了标签。换句话说,在每一个订阅使用者组中,发布到主题的每一个记录都传递到一个使用者实例。确保使用者实例可能位于单独的进程或单独的计算机上。分布式

问题11:解释领导者和追随者的概念。

答:在Kafka的每一个分区中,都有一个服务器充当领导者,0到多个服务器充当追随者的角色。

问题12:是什么确保了Kafka中服务器的负载平衡?

答:因为领导者的主要角色是执行分区的全部读写请求的任务,而追随者被动地复制领导者。所以,在领导者失败时,其中一个追随者接管了领导者的角色。基本上,整个过程可确保服务器的负载平衡。

问题13:副本和ISR扮演什么角色?

答:基本上,复制日志的节点列表就是副本。特别是对于特定的分区。可是,不管他们是否扮演领导者的角色,他们都是如此。

此外,ISR指的是同步副本。在定义ISR时,它是一组与领导者同步的消息副本。

问题14:为何Kafka的复制相当重要?

答:因为复制,咱们能够确保发布的消息不会丢失,而且能够在发生任何机器错误、程序错误或频繁的软件升级时使用。

问题15:若是副本长时间不在ISR中,这意味着什么?

答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。

问题16:启动Kafka服务器的过程是什么?

答:初始化ZooKeeper服务器是很是重要的一步,由于Kafka使用ZooKeeper,因此启动Kafka服务器的过程是:

  • 要启动ZooKeeper服务器>bin/zooKeeper-server-start.sh config/zooKeeper.properties
  • 接下来,启动Kafka服务器>bin/kafka-server-start.sh config/server.properties

问题17:在生产者中,什么时候发生QueueFullException?

答:每当Kafka生产者试图以代理的身份在当时没法处理的速度发送消息时,一般都会发生QueueFullException。可是,为了协做处理增长的负载,用户须要添加足够的代理,由于生产者不会阻止。

问题18:解释Kafka Producer API的做用。

答:容许应用程序将记录流发布到一个或多个Kafka主题的API就是咱们所说的Producer API。

问题19:Kafka和Flume之间的主要区别是什么?

答:Kafka和Flume之间的主要区别是:

  • 工具类型

    • Apache Kafka——Kafka是面向多个生产商和消费者的通用工具。
    • Apache Flume——Flume被认为是特定应用程序的专用工具。
  • 复制功能

    • Apache Kafka——Kafka能够复制事件。
    • Apache Flume——Flume不复制事件。

问题20:Apache Kafka是分布式流处理平台吗?若是是,你能用它作什么?

答:毫无疑问,Kafka是一个流处理平台。它能够帮助:

  • 轻松推送记录
  • 能够存储大量记录,而不会出现任何存储问题
  • 它还能够在记录进入时对其进行处理。

问题21:你能用Kafka作什么?

答:它能够以多种方式执行,例如:

  • 为了在两个系统之间传输数据,咱们能够用它构建实时的数据流管道。
  • 另外,咱们能够用Kafka构建一个实时流处理平台,它能够对数据快速作出反应。

问题22:在Kafka集群中保留期的目的是什么?

答:保留期限保留了Kafka群集中的全部已发布记录。它不会检查它们是否已被消耗。此外,能够经过使用保留期的配置设置来丢弃记录。并且,它能够释放一些空间。

问题23:解释Kafka能够接收的消息最大为多少?

答:Kafka能够接收的最大消息大小约为1000000字节。

问题24:传统的消息传递方法有哪些类型?

答:基本上,传统的消息传递方法有两种,如:

  • 排队:这是一种消费者池能够从服务器读取消息而且每条消息转到其中一个消息的方法。
  • 发布-订阅:在发布-订阅中,消息被广播给全部消费者。

问题25:ISR在Kafka环境中表明什么?

答:ISR指的是同步副本。这些一般被分类为一组消息副本,它们被同步为领导者。

问题26:什么是Kafka中的地域复制?

答:对于咱们的集群,Kafka MirrorMaker提供地理复制。基本上,消息是经过MirrorMaker跨多个数据中心或云区域复制的。所以,它能够在主动/被动场景中用于备份和恢复;也能够将数据放在离用户更近的位置,或者支持数据位置要求。

问题27:解释多租户是什么?

答:咱们能够轻松地将Kafka部署为多租户解决方案。可是,经过配置主题能够生成或使用数据,能够启用多租户。此外,它还为配额提供操做支持。

问题28:消费者API的做用是什么?

答:容许应用程序订阅一个或多个主题并处理生成给它们的记录流的API,咱们称之为消费者API。

问题29:解释流API的做用?

答:一种容许应用程序充当流处理器的API,它还使用一个或多个主题的输入流,并生成一个输出流到一个或多个输出主题,此外,有效地将输入流转换为输出流,咱们称之为流API。

问题30:链接器API的做用是什么?

答:一个容许运行和构建可重用的生产者或消费者的API,将Kafka主题链接到现有的应用程序或数据系统,咱们称之为链接器API。

问题31:解释生产者是什么?

答:生产者的主要做用是将数据发布到他们选择的主题上。基本上,它的职责是选择要分配给主题内分区的记录。

问题32:比较RabbitMQ与Apache Kafka

答:Apache Kafka的另外一个选择是RabbitMQ。那么,让咱们比较二者:

  • 功能

    • Apache Kafka– Kafka是分布式的、持久的和高度可用的,这里共享和复制数据
    • RabbitMQ中没有此类功能
  • 性能速度

    • Apache Kafka–达到每秒100000条消息。
    • RabbitMQ–每秒20000条消息。

问题33:比较传统队列系统与Apache Kafka

答:让咱们比较一下传统队列系统与Apache Kafka的功能:

  • 消息保留

    • 传统的队列系统 - 它一般从队列末尾处理完成后删除消息。
    • Apache Kafka中,消息即便在处理后仍然存在。这意味着Kafka中的消息不会因消费者收到消息而被删除。
  • 基于逻辑的处理

    • 传统队列系统不容许基于相似消息或事件处理逻辑。
    • Apache Kafka容许基于相似消息或事件处理逻辑。

问题34:为何要使用Apache Kafka集群?

答:为了克服收集大量数据和分析收集数据的挑战,咱们须要一个消息队列系统。所以Apache Kafka应运而生。其好处是:

  • 只需存储/发送事件以进行实时处理,就能够跟踪Web活动。
  • 经过这一点,咱们能够发出警报并报告操做指标。
  • 此外,咱们能够将数据转换为标准格式。
  • 此外,它容许对主题的流数据进行连续处理。
  • 因为它的普遍使用,它秒杀了竞品,如ActiveMQ,RabbitMQ等。

问题35:解释术语“Log Anatomy”

答:咱们将日志视为分区。基本上,数据源将消息写入日志。其优势之一是,在任什么时候候,都有一个或多个消费者从他们选择的日志中读取数据。下面的图表显示,数据源正在写入一个日志,而用户正在以不一样的偏移量读取该日志。

问题36:Kafka中的数据日志是什么?

答:咱们知道,在Kafka中,消息会保留至关长的时间。此外,消费者还能够根据本身的方便进行阅读。尽管如此,有一种可能的状况是,若是将Kafka配置为将消息保留24小时,而且消费者可能停机超过24小时,则消费者可能会丢失这些消息。可是,咱们仍然能够从上次已知的偏移中读取这些消息,但仅限于消费者的部分停机时间仅为60分钟的状况。此外,关于消费者从一个话题中读到什么,Kafka不会保持状态。

问题37:解释如何调整Kafka以得到最佳性能。

答:所以,调优Apache Kafka的方法是调优它的几个组件:

  • 调整Kafka生产者
  • Kafka代理调优
  • 调整Kafka消费者

问题38:Apache Kafka的缺陷

答:Kafka的局限性是:

  • 没有完整的监控工具集
  • 消息调整的问题
  • 不支持通配符主题选择
  • 速度问题

问题39:列出全部Apache Kafka业务

答:Apache Kafka的业务包括:

  • 添加和删除Kafka主题
  • 如何修改Kafka主题
  • 如何关机
  • 在Kafka集群之间镜像数据
  • 找到消费者的位置
  • 扩展您的Kafka群集
  • 自动迁移数据
  • 退出服务器
  • 数据中心

问题40:解释Apache Kafka用例?

答:Apache Kafka有不少用例,例如:

  • Kafka指标
  • 可使用Kafka进行操做监测数据。此外,为了生成操做数据的集中提要,它涉及到从分布式应用程序聚合统计信息。
  • Kafka日志聚合
  • 从组织中的多个服务收集日志。
  • 流处理
  • 在流处理过程当中,Kafka的强耐久性很是有用。

问题41:Kafka的一些最显著的应用。

答:Netflix,Mozilla,Oracle

问题42:Kafka流的特色。

答:Kafka流的一些最佳功能是

  • Kafka Streams具备高度可扩展性和容错性。
  • Kafka部署到容器,VM,裸机,云。
  • 咱们能够说,Kafka流对于小型,中型和大型用例一样可行。
  • 此外,它彻底与Kafka安全集成。
  • 编写标准Java应用程序。
  • 彻底一次处理语义。
  • 并且,不须要单独的处理集群。

问题43:Kafka的流处理是什么意思?

答:连续、实时、并发和以逐记录方式处理数据的类型,咱们称之为Kafka流处理。

问题44:系统工具备哪些类型?

答:系统工具备三种类型:

  • Kafka迁移工具:它有助于将代理从一个版本迁移到另外一个版本。
  • Mirror Maker:Mirror Maker工具备助于将一个Kafka集群的镜像提供给另外一个。
  • 消费者检查:对于指定的主题集和消费者组,它显示主题,分区,全部者。

问题45:什么是复制工具及其类型?

答:为了加强持久性和更高的可用性,这里提供了复制工具。其类型为

  • 建立主题工具
  • 列表主题工具
  • 添加分区工具

问题46:Java在Apache Kafka中的重要性是什么?

答:为了知足Kafka标准的高处理速率需求,咱们可使用java语言。此外,对于Kafka的消费者客户,Java也提供了良好的社区支持。因此,咱们能够说在Java中实现Kafka是一个正确的选择。

问题47:说明Kafka的一个最佳特征。

答:Kafka的最佳特性是“各类各样的用例”。

这意味着Kafka可以管理各类各样的用例,这些用例对于数据湖来讲很是常见。例如日志聚合、Web活动跟踪等。

问题48:解释术语“主题复制因子”。

答:在设计Kafka系统时,考虑主题复制是很是重要的。

问题50:Kafka提供的保证是什么?

答:生产者向特定主题分区发送的消息的顺序相同。

  • 此外,消费者实例按照它们存储在日志中的顺序查看记录。
  • 此外,即便不丢失任何提交给日志的记录,咱们也能够容忍最多N-1个服务器故障。

写在最后

一线互联网大厂,面试所考到的知识可不止Kafka,固然多拥有一个技术点,对本身的面试也是一件好事;那么针对Java成员,笔者整理了一套完整的已下线互联网企业面试专题;包含了Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务等架构技术

须要这份面试题的朋友请点击下方传送门;便可免费领取完整的面试专题文件

传送门

如下是部分面试题截图

相关文章
相关标签/搜索