博客记录-day119-Java集合,Kafka面试题

147 阅读2分钟

一、语雀-Java集合面试题

1、为什么在JDK8中HashMap要转成红黑树

✅为什么在JDK8中HashMap要转成红黑树

image.png

1. 为什么是链表长度8时候转

image.png

2. 双向链表是怎么回事

image.png

2、HashMap的hash方法是如何实现的?

✅HashMap的hash方法是如何实现的?

image.png

image.png

1. 扰动计算

image.png

3、同步容器(如Vector)的所有操作一定是线程安全的吗?

✅同步容器(如Vector)的所有操作一定是线程安全的吗?

image.png

image.png

1. 同步容器问题

image.png

2. 并发容器

image.png

4、ConcurrentHashMap是如何保证线程安全的?

✅ConcurrentHashMap是如何保证线程安全的?

image.png

5、ConcurrentHashMap在哪些地方做了并发控制

✅ConcurrentHashMap在哪些地方做了并发控制

image.png

1. 初始化桶阶段

image.png

2. put元素阶段

image.png

3. 扩容阶段

image.png

6、ConcurrentHashMap是如何保证fail-safe的?

✅ConcurrentHashMap是如何保证fail-safe的?

image.png

7、HashMap用在并发场景中有什么问题?

✅HashMap用在并发场景中有什么问题?

1. 扩容过程

image.png

image.png

8、什么是COW,如何保证的线程安全?

✅什么是COW,如何保证的线程安全?

image.png

9、Java 8中的Stream用过吗?都能干什么?

image.png

image.png

image.png

10、ConcurrentHashMap为什么在JDK 1.8中废弃分段锁?

✅ConcurrentHashMap为什么在JDK 1.8中废弃分段锁?

image.png

image.png

二、语雀-Kafka面试题

1、为什么要使用消息队列?

✅为什么要使用消息队列?

image.png

2、Kafka、ActiveMQ、RabbitMQ和RocketMQ都有哪些区别?

✅Kafka、ActiveMQ、RabbitMQ和RocketMQ都有哪些区别?

image.png

image.png

image.png

3、Kafka的架构是怎么样的?

✅Kafka的架构是怎么样的?

image.png

image.png

image.png

4、Kafka如何保证消息不丢失?

✅Kafka如何保证消息不丢失?

image.png

1. 生产者端

image.png

2. kafka集群

image.png

3. 消费者端

image.png

5、Kafka如何实现顺序消费?

✅Kafka如何实现顺序消费?

Kafka中,Topic 是数据的逻辑容器,用于分类存储消息(如order_eventsuser_logs),而Partition 是 Topic 的物理分片,每个 Partition 是一个独立、有序的消息队列。同一 Partition 内消息按生产者写入顺序严格递增,保证局部顺序性;但跨 Partition 或跨 Topic的消息可能乱序。通过多 Partition 设计,Kafka 实现了并行处理(消费者组内每个成员消费不同 Partition)、横向扩展和负载均衡,同时利用副本机制(Leader-Follower)保障高可用性。开发者需权衡顺序性与性能:单 Partition 适合强顺序场景,多 Partition(结合轮询或 key-based 分区)可提升吞吐量,但可能引入乱序。

image.png

6、Kafka 几种选举过程简单介绍一下?

✅Kafka 几种选举过程简单介绍一下?

1. Partition Leader 选举

image.png

2. Controller 选举

image.png