一、语雀-Java集合面试题
1、为什么在JDK8中HashMap要转成红黑树
1. 为什么是链表长度8时候转
2. 双向链表是怎么回事
2、HashMap的hash方法是如何实现的?
1. 扰动计算
3、同步容器(如Vector)的所有操作一定是线程安全的吗?
1. 同步容器问题
2. 并发容器
4、ConcurrentHashMap是如何保证线程安全的?
5、ConcurrentHashMap在哪些地方做了并发控制
1. 初始化桶阶段
2. put元素阶段
3. 扩容阶段
6、ConcurrentHashMap是如何保证fail-safe的?
✅ConcurrentHashMap是如何保证fail-safe的?
7、HashMap用在并发场景中有什么问题?
1. 扩容过程
8、什么是COW,如何保证的线程安全?
9、Java 8中的Stream用过吗?都能干什么?
10、ConcurrentHashMap为什么在JDK 1.8中废弃分段锁?
✅ConcurrentHashMap为什么在JDK 1.8中废弃分段锁?
二、语雀-Kafka面试题
1、为什么要使用消息队列?
2、Kafka、ActiveMQ、RabbitMQ和RocketMQ都有哪些区别?
✅Kafka、ActiveMQ、RabbitMQ和RocketMQ都有哪些区别?
3、Kafka的架构是怎么样的?
4、Kafka如何保证消息不丢失?
1. 生产者端
2. kafka集群
3. 消费者端
5、Kafka如何实现顺序消费?
Kafka中,Topic 是数据的逻辑容器,用于分类存储消息(如order_events、user_logs),而Partition 是 Topic 的物理分片,每个 Partition 是一个独立、有序的消息队列。同一 Partition 内消息按生产者写入顺序严格递增,保证局部顺序性;但跨 Partition 或跨 Topic的消息可能乱序。通过多 Partition 设计,Kafka 实现了并行处理(消费者组内每个成员消费不同 Partition)、横向扩展和负载均衡,同时利用副本机制(Leader-Follower)保障高可用性。开发者需权衡顺序性与性能:单 Partition 适合强顺序场景,多 Partition(结合轮询或 key-based 分区)可提升吞吐量,但可能引入乱序。