知识点标签

消息队列面试题解析

消息队列相关面试题解析,按真实面经题目沉淀核心机制、易错点和面试官追问。

15 道题 2 个岗位 5 个公司

消息队列相关面试题

java中有哪些以队列、链表为底层实现的数据结构?

Java 里要区分“队列接口”和“链表底层”。Queue、Deque 是行为抽象,表示先进先出、双端队列或优先级访问;LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue 这类才是链式节点结构。ArrayDeque、ArrayBlockingQueue、PriorityQueue 虽然暴露队列接口,但底层分别是循环数组、有界数组和二叉堆数组,不是链表。LinkedHashMap 则是哈希表加双向链表,用链表维护插入顺序或访问顺序,但它本身不实现 Queue。

Kafka 为什么吞吐量高?

Kafka 的高吞吐不是单点优化,而是围绕日志追加模型构建的一整套链路设计:生产端批量发送和压缩降低请求次数与网络字节数,Broker 端用顺序写和 Page Cache 减少随机磁盘 IO,发送文件时利用零拷贝降低用户态与内核态拷贝成本,Topic 分区让读写并行扩展,消费者拉取模型让消费端按自身能力批量读取。同时,ISR、acks、副本数、刷盘策略等可靠性配置会影响吞吐,面试中要讲清这些设计如何共同减少 IO、网络、CPU 和锁竞争开销。

为什么会使用 Redis 实现消息队列?它适合哪些场景?

为什么会使用 Redis 实现消息队列?它适合哪些场景?这道腾讯牛客题的关键是围绕“Redis 实现消息队列场景”讲清概念、机制、取舍和边界。Redis 可以做轻量消息队列,适合延迟敏感、吞吐中等、业务可接受 at-least-once 和重复消费的场景。常见实现包括 List、Pub/Sub 和 Streams,其中 Streams 更适合可靠消费。

Redis 如何保证消息可靠性?

Redis 如何保证消息可靠性?这道腾讯牛客题的关键是围绕“Redis 消息队列可靠性边界”讲清概念、机制、取舍和边界。Redis 可以做轻量消息队列,但可靠性取决于使用 Pub/Sub、List 还是 Streams。Pub/Sub 基本不保存离线消息,List 需要自己设计确认和重试,Streams 支持 consumer group、pending list 和 ACK,更适合需要可靠消费的场景。