Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

怎样用 List 实现栈和队列?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

同一端进出就是栈,比如 LPUSH 加 LPOP。两端分开进出就是队列,比如 RPUSH 加 LPOP。阻塞取用 BLPOP 等命令可等待新元素。

讲清原理

弹出后元素已经离开列表。消费者中途崩溃可能丢掉已取任务,需要处理中列表、确认和恢复,或选 Streams。

消息投递、待确认和重领分属不同阶段
消息投递、待确认和重领分属不同阶段

例子与易错点

简单顺序任务可用列表。要重领、确认、查看积压时,可用 Streams 消费组并设计幂等。

左进左出取出 B。右进左出取出 A。

LPUSH q13:stack A B
LPOP q13:stack
RPUSH q13:queue A B
LPOP q13:queue

相关题 · 第 14 题、第 15 题

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。