高频并发场景实战

共 19 题
#

1. 线程池参数如何根据业务类型(CPU 密集/IO 密集/混合)设定?动态线程池(如美团方案)解决什么痛点?

A 更省
B
C 更快
D 参数运行时不可调、调参需重启 ✓ 正确答案
#

2. ThreadLocal 内存泄漏的完整链路(Entry 弱引用 key 与强引用 value)与线程池复用场景的脏数据风险?

A
B value 弱引用
C 弱引用 key + 强引用 value + 线程长期存活 ✓ 正确答案
D key 强引用
#

3. 秒杀场景的并发控制,库存预扣、Redis Lua 原子操作与数据库乐观锁如何组合?

A
B 加锁
C Redis Lua 原子扣减 + DB 乐观锁兜底 ✓ 正确答案
D 阻塞
#

4. 分布式事务的并发控制,库存/余额场景的乐观锁与重试如何?

A 乐观锁(WHERE stock >= n) ✓ 正确答案
B 加锁
C 阻塞
D
#

5. 线程池长任务(>1 分钟)偶发 hang 时的系统化排查步骤(jstack / ThreadMXBean)?

A 多次采样 jstack + ThreadMXBean ✓ 正确答案
B 一次 dump
C 重启
D
#

6. 生产环境 CPU 飙高的排查全流程,top -Hp、jstack、线程号十六进制转换、火焰图如何串联?

A
B 优先级
C nid(十六进制线程号) ✓ 正确答案
D 线程名
#

7. 生产环境频繁 Full GC 的排查路径,GC 日志、jmap 直方图、MAT 支配树如何逐步定位泄漏点?

A 分析对象引用链,定位泄漏点 ✓ 正确答案
B
C 统计
D 压缩
#

8. 线上死锁的定位(jstack 死锁检测)与锁顺序/超时设计

A 一致锁顺序 + tryLock 超时 ✓ 正确答案
B
C 任意
D 随机
#

9. CompletableFuture.allOf 在部分失败时的处理与降级策略设计?

A 该任务 exceptionally 返回默认值 ✓ 正确答案
B
C 阻塞
D 加锁
#

10. ForkJoinPool 的工作窃取原理与 JDK 默认 pool 并行的性能拐点?

A 无限
B 核数 - 1 ✓ 正确答案
C 核数
D
#

11. CompletableFuture 编排多个远程调用的异常传播与超时兜底设计?

A
B 加锁
C 每调用 orTimeout 超时兜底 ✓ 正确答案
D 阻塞
#

12. 缓存与数据库双写一致性,先更新库还是先删缓存,如何用延时双删/消息补偿?

A
B 先更新库再删缓存 ✓ 正确答案
C 任意
D 先删缓存
#

13. 同步 RPC 调用改造为 MQ/事件异步后的数据一致性与补偿设计

A 阻塞
B 本地事务 + 消息 / 事务消息 ✓ 正确答案
C
D 加锁
#

14. 并发批量任务的拆分、进度上报与失败重试

A 加锁
B 阻塞
C
D 原子计数/游标 ✓ 正确答案
#

15. ThreadLocal 在线程池下的数据泄漏(InheritableThreadLocal vs TransmittableThreadLocal)?

A InheritableThreadLocal
B 静态
C
D TransmittableThreadLocal ✓ 正确答案
#

16. 线程池参数调优,CPU 密集/IO 密集任务的核心线程数与队列策略如何选择?

A 核数 + 1 ✓ 正确答案
B
C 任意
D 核数 × 100
#

17. 分布式下的并发幂等,唯一索引、状态机与幂等键如何配合?

A 唯一索引(幂等键) ✓ 正确答案
B
C 阻塞
D 加锁
#

18. 本地缓存与分布式缓存的分层,Caffeine + Redis 的两级缓存一致性如何?

A 加锁
B MQ/广播通知 ✓ 正确答案
C
D 阻塞
#

19. 线程池监控指标(活跃线程/队列积压/拒绝数)与告警阈值

A 正常
B
C 容量不足,应告警 ✓ 正确答案
D 加速