跳转至

二、并发 / 多线程 / JVM

本分类覆盖 CPU 缓存模型、JMM、锁原理、AQS、原子类、并发集合、阻塞队列与线程池。

题目列表

基础

# 题目 核心考点
1 两个线程交替打印奇偶数 wait/notify、Lock/Condition
2 进程与线程的区别 资源分配、调度单位
3 JVM 最多支持多少个线程 栈大小、OS 限制
4 堆 OOM 后其他线程能否工作 OOM 后的 JVM 状态
5 Java GC 机制 分代收集、垃圾判定
6 Java 并发面试题汇总 JUC、AQS、锁
7 Java NIO 高频考点 Buffer、Channel、Selector
8 Instrumentation 是什么 Java Agent、字节码增强

底层原理

# 题目 核心考点
9 CPU 多级缓存模型 L1/L2/L3、缓存行
10 总线加锁与 MESI 协议 M/E/S/I、缓存一致性
11 volatile 如何保证可见性/有序性 不保证原子性
12 volatile 底层:lock 与内存屏障 StoreLoad、LoadLoad
13 synchronized 底层原理 monitor、对象头、锁升级
14 可见性硬件基础:寄存器/缓存/写缓冲器 Store Buffer、Invalidate Queue
15 指令重排发生在哪些地方 编译器/CPU/内存系统
16 synchronized 三大特性保证 原子/可见/有序
17 写缓冲器与无效队列优化 MESI 内存屏障来源

原子类与 CAS

# 题目 核心考点
18 AtomicInteger 的 CAS 无锁原理 do-while 自旋
19 AtomicInteger 与 Unsafe 类 偏移量、JNI
20 CAS 底层 CPU 指令 lock cmpxchg
21 CAS 三大缺点与解决 ABA、自旋、单变量

锁机制

# 题目 核心考点
22 AQS 原理 state、CLH 队列、模板方法
23 AQS 非公平加锁策略 先 CAS 抢
24 AQS 队列唤醒过程 LockSupport.unpark
25 ReentrantLock 公平锁 hasQueuedPredecessors
26 ThreadLocal 源码 ThreadLocalMap、弱引用、内存泄漏

并发集合

# 题目 核心考点
27 JDK7 HashMap 死循环:环形链表 头插法成环
28 JDK7 HashMap 死循环与丢数据 并发覆盖
29 ConcurrentHashMap 初始化 懒初始化、sizeCtl
30 ConcurrentHashMap CAS 加锁 桶空 CAS、桶非空 synchronized
31 ConcurrentHashMap 链表与红黑树 TreeBin、树化阈值
32 JDK8 ConcurrentHashMap 锁优化 放弃分段锁
33 CopyOnWriteArrayList 写时复制
34 CopyOnWriteArrayList 弱一致性 读无锁、快照迭代

阻塞队列

# 题目 核心考点
35 LinkedBlockingQueue 读写双锁
36 ArrayBlockingQueue 单锁循环数组

线程池

# 题目 核心考点
37 线程池核心成员变量 7 大参数、ctl
38 线程池执行流程 addWorker、Worker
39 线程池种类与使用场景 Fixed/Cached/Scheduled