【Java 面试】专题精选 Java 核心技术各方向的经典面试题,覆盖基础语法、容器框架、并发编程、JVM 虚拟机四大板块。题目源自真实面试场景,侧重考察原理理解与实战应用能力,适合系统性备战 Java 技术面试。
掌握度栏请自行标记:✅ 已掌握 | ⚠️ 模糊 | ❌ 未掌握
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Java 常识 | Java 语言有什么优势? | 简单 | ⭐⭐ | ✅ |
| Java 常识 | Oracle JDK 和 Open JDK 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 常识 | Java SE 和 Java EE 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 常识 | JDK、JRE、JVM 之间有什么关系? | 简单 | ⭐⭐ | ✅ |
| Java 常识 | Java 如何调用外部可执行程序或系统命令? | 中等 | ⭐⭐ | ✅ |
| Java 常识 | Java 和 C++、Go 语言的区别,各自的优缺点? | 中等 | ⭐⭐ | ✅ |
| Java 常识 | Java 里程碑版本中的核心特性有哪些? | 中等 | ⭐⭐ | ⚠️ |
| Java 基础语法 | Java 有几种注释形式? | 简单 | ⭐⭐ | ✅ |
| Java 基础语法 | Java 有哪些标识符命名规则? | 简单 | ⭐⭐ | ✅ |
| Java 基础语法 | Java 中有哪些关键字? | 简单 | ⭐⭐ | ✅ |
| Java 基础语法 | Java 中 static 关键字有什么用? | 简单 | ⭐ | ✅ |
| Java 基础语法 | volatile 关键字的作用和原理? | 中等 | ⭐ | ✅ |
| Java 基础语法 | transient 关键字有什么用? | 中等 | ⭐ | ✅ |
| Java 基础语法 | native 关键字有什么用? | 简单 | ⭐ | ✅ |
| Java 基础语法 | 移位操作中 <<、>>、>>> 有什么区别? | 中等 | ⭐ | ✅ |
| Java 数据类型 | Java 是否只支持值传递? | 简单 | ⭐⭐ | ✅ |
| Java 数据类型 | Java 有哪些值类型? | 简单 | ⭐⭐ | ✅ |
| Java 数据类型 | 什么是装箱、拆箱? | 简单 | ⭐⭐ | ✅ |
| Java 数据类型 | 包装类型的缓存机制了解么? | 中等 | ⭐⭐ | ✅ |
| Java 数据类型 | 比较包装类型为什么不能用 ==? | 简单 | ⭐⭐ | ✅ |
| Java 数据类型 | 为什么浮点数运算的时候会有精度丢失的风险? | 中等 | ⭐⭐ | ✅ |
| Java 数据类型 | 如何解决浮点数运算的精度丢失问题? | 简单 | ⭐⭐ | ✅ |
| Java 数据类型 | 超过 long 整型的数据应该如何表示? | 简单 | ⭐⭐ | ✅ |
| Java 数据类型 | 自动装箱拆箱有哪些陷阱? | 中等 | ⭐ | ✅ |
| Java 数据类型 | Java 是如何处理整数溢出的? | 中等 | ⭐ | ❌ |
| Java 变量 | 静态变量、成员变量、局部变量的区别? | 简单 | ⭐⭐ | ✅ |
| Java 变量 | 为什么成员变量有默认值? | 简单 | ⭐⭐ | ✅ |
| Java 变量 | 字符型常量和字符串常量的区别? | 简单 | ⭐⭐ | ✅ |
| Java 方法 | Java 方法有哪些类型? | 简单 | ⭐⭐ | ✅ |
| Java 方法 | 静态方法和实例方法有何不同? | 简单 | ⭐⭐ | ✅ |
| Java 方法 | 重载和重写有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 方法 | 什么是可变长参数? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | Exception 和 Error 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | Checked Exception 和 Unchecked Exception 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | Throwable 类常用方法有哪些? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | try-catch-finally 如何使用? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | finally 中的代码一定会执行吗? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | 如何使用 try-with-resources 代替try-catch-finally? | 简单 | ⭐⭐ | ⚠️ |
| Java 异常 | NoClassDefFoundError 和 ClassNotFoundException 有什么区别 | 简单 | ⭐⭐ | ✅ |
| Java 异常 | 异常使用有哪些需要注意的地方? | 简单 | ⭐⭐ | ✅ |
| Java 异常 | Java 中 final、finally 和 finalize 有什么区别? | 中等 | ⭐⭐ | ⚠️ |
| Java 异常 | instanceof 关键字的作用? | 简单 | ⭐ | ✅ |
| Java 异常 | Java 的 switch 语句在 JDK 14+ 有哪些增强? | 中等 | ⭐ | ⚠️ |
| Java 异常 | Java 9 引入的模块化系统(JPMS)有什么用? | 中等 | ⭐ | ❌ |
| Java 异常 | Java 中的 Record(JDK 16+)有什么用? | 中等 | ⭐ | ❌ |
| Java 异常 | Sealed Classes(JDK 17+)有什么用? | 中等 | ⭐ | ❌ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Java 面向对象 | public、private、protected,以及无修饰符有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 面向对象 | 对象实体与对象引用有何不同? | 简单 | ⭐⭐ | ✅ |
| Java 面向对象 | 接口和抽象类有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 面向对象 | 什么是 Java 内部类?内部类有什么作用? | 中等 | ⭐⭐ | ✅ |
| Java 面向对象 | 四种内部类有什么区别? | 中等 | ⭐ | ⚠️ |
| Java 面向对象 | 为什么 Java 不支持多重继承? | 简单 | ⭐⭐ | ✅ |
| Java 面向对象 | 深拷贝和浅拷贝有什么区别? | 中等 | ⭐⭐ | ✅ |
| Java 面向对象 | 面向对象和面向过程有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 面向对象 | 面向对象三大特征和五大原则是什么? | 中等 | ⭐⭐ | ✅ |
| Java 面向对象 | Java 中 final 关键字有什么用? | 简单 | ⭐ | ✅ |
| Java 面向对象 | this 和 super 关键字有什么用? | 中等 | ⭐ | ✅ |
| Java 面向对象 | 接口的默认方法冲突如何解决? | 中等 | ⭐ | ⚠️ |
| Java 面向对象 | Java 多态的实现原理是什么? | 中等 | ⭐ | ✅ |
| Object | Object 类的常见方法有哪些? | 简单 | ⭐⭐ | ✅ |
| Object | == 和 equals() 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Object | 为什么重写 equals() 时必须重写 hashCode() 方法? | 简单 | ⭐⭐ | ✅ |
| Object | finalize 有什么用? | 简单 | ⭐⭐ | ⚠️ |
| Object | Object#clone() 方法和 Cloneable 接口如何使用? | 中等 | ⭐ | ✅ |
| String | String、StringBuffer、StringBuilder 有什么区别? | 简单 | ⭐⭐ | ✅ |
| String | String 为什么是不可变的? | 简单 | ⭐⭐ | ✅ |
| String | 字符串拼接用“+” 还是 StringBuilder? | 简单 | ⭐⭐ | ✅ |
| String | String#equals() 和 Object#equals() 有何区别? | 简单 | ⭐⭐ | ✅ |
| String | 字符串常量池有什么用? | 简单 | ⭐⭐ | ✅ |
| String | String s = new String("abc") 创建了几个字符串对象? | 简单 | ⭐⭐ | ✅ |
| String | String#intern 方法有什么用? | 简单 | ⭐⭐ | ⚠️ |
| String | String 类型的变量和常量做“+”运算时会发生什么? | 简单 | ⭐⭐ | ✅ |
| String | JDK 9 对 String 做了哪些优化(Compact Strings)? | 中等 | ⭐ | ❌ |
| String | StringJoiner 和 String.join 有什么用? | 中等 | ⭐ | ⚠️ |
| String | String 的 equals 方法是如何实现的? | 简单 | ⭐ | ✅ |
| String | String、StringBuilder、StringBuffer 的扩容机制? | 中等 | ⭐ | ❌ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Java 泛型 | Java 泛型的作用是什么? | 中等 | ⭐⭐ | ✅ |
| Java 泛型 | 什么是 Java 泛型的上下界限定符? | 中等 | ⭐⭐ | ⚠️ |
| Java 泛型 | 泛型擦除的作用是什么? | 中等 | ⭐⭐ | ⚠️ |
| Java 反射 | 什么是反射?反射有什么作用? | 简单 | ⭐⭐ | ✅ |
| Java 反射 | 反射有什么优缺点? | 简单 | ⭐⭐ | ✅ |
| Java 反射 | 什么是 Java 中的动态代理? | 中等 | ⭐⭐ | ✅ |
| Java 反射 | JDK 动态代理和 CGLIB 动态代理有什么区别? | 中等 | ⭐⭐ | ✅ |
| Java 注解 | Java 中的注解原理是什么? | 中等 | ⭐⭐ | ✅ |
| Java 注解 | 如何自定义注解并使用注解处理器? | 中等 | ⭐ | |
| Java 枚举 | Java 枚举的原理是什么? | 中等 | ⭐ | ⚠️ |
| Java 枚举 | 为什么说枚举是实现单例的最佳方式? | 中等 | ⭐ | ⚠️ |
| Java 枚举 | EnumMap 和 EnumSet 有什么用? | 简单 | ⭐ | ❌ |
| Java SPI | 什么是 SPI,有什么用? | 中等 | ⭐⭐ | ✅ |
| Java IO | 什么是序列化?什么是反序列化? | 简单 | ⭐⭐ | ✅ |
| Java IO | Java 提供了哪些 IO 方式? | 中等 | ⭐⭐ | ⚠️ |
| Java IO | NIO 如何实现多路复用? | 困难 | ⭐⭐ | ⚠️ |
| Java IO | Java 写入文件到磁盘会经历哪些过程? | 困难 | ⭐⭐ | ❌ |
| Java 语法糖 | Java 中有哪些常见的语法糖? | 中等 | ⭐⭐ | ✅ |
| JDK 8 新特性 | Optional 的正确使用方式? | 中等 | ⭐⭐ | ✅ |
| JDK 8 新特性 | Lambda 表达式和函数式接口是什么? | 中等 | ⭐⭐⭐ | ✅ |
| JDK 8 新特性 | Stream API 的核心操作有哪些? | 困难 | ⭐⭐⭐ | ⚠️ |
| JDK 8 新特性 | Java 8 接口的默认方法和静态方法是什么? | 中等 | ⭐⭐ | ✅ |
| JDK 8 新特性 | Java 8 的 java.time API 解决了什么问题? | 中等 | ⭐⭐ | ✅ |
| JDK 11 新特性 | Java 11 的 var 局部变量类型推断怎么用?有什么限制? | 中等 | ⭐⭐ | ❌ |
| JDK 11 新特性 | Java 11 的 HTTP Client API 有什么特点? | 中等 | ⭐⭐ | ❌ |
| JDK 11 新特性 | Java 11 的字符串 API 有哪些增强? | 中等 | ⭐ | ❌ |
| JDK 11 新特性 | Java 11 对 GC 有哪些重要更新? | 中等 | ⭐⭐ | ❌ |
| JDK 17 新特性 | JDK 17 的 Sealed Classes(密封类)是什么? | 中等 | ⭐⭐⭐ | ❌ |
| JDK 17 新特性 | JDK 17 的 Record(记录类)是什么? | 中等 | ⭐⭐⭐ | ❌ |
| JDK 17 新特性 | JDK 17 的文本块(Text Blocks)是什么? | 中等 | ⭐⭐ | ❌ |
| JDK 17 新特性 | JDK 17 的 instanceof 模式匹配是什么? | 中等 | ⭐⭐ | ✅ |
| JDK 17 新特性 | JDK 17 的 switch 表达式增强是什么? | 中等 | ⭐⭐ | ⚠️ |
| JDK 21 新特性 | JDK 21 的 switch 模式匹配有什么增强? | 中等 | ⭐⭐⭐ | ❌ |
| JDK 21 新特性 | JDK 21 的记录模式(Record Patterns)是什么? | 中等 | ⭐⭐ | ❌ |
| JDK 21 新特性 | JDK 21 的未命名变量(Unnamed Variables)是什么? | 中等 | ⭐⭐ | ❌ |
| JDK 21 新特性 | JDK 21 的 Scoped Values 是什么?与 ThreadLocal 有什么区别? | 中等 | ⭐⭐ | ❌ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Java 容器简介 | Java 中有哪些集合类? | 简单 | ⭐⭐ | ✅ |
| Java 容器简介 | 什么是序列集合(Sequenced Collections)? | 中等 | ⭐⭐⭐ | ❌ |
| Java 容器简介 | Comparable 和 Comparator 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Java 容器简介 | 什么是 ConcurrentModificationException? | 中等 | ⭐⭐ | ⚠️ |
| List | ArrayList 可以添加 null 值吗? | 简单 | ⭐⭐ | ✅ |
| List | ArrayList 如何扩容? | 简单 | ⭐⭐⭐ | ✅ |
| List | ArrayList 和数组有什么区别? | 简单 | ⭐⭐ | ✅ |
| List | ArrayList 和 LinkedList 有什么区别? | 简单 | ⭐⭐ | ✅ |
| List | CopyOnWriteArrayList 的原理是什么? | 中等 | ⭐⭐ | ✅ |
| List | RandomAccess 接口有什么用? | 中等 | ⭐ | ✅ |
| List | Iterator 和 Iterable 有什么区别? | 中等 | ⭐ | ✅ |
| List | fail-fast 和 fail-safe 机制有什么区别? | 中等 | ⭐ | ❌ |
| Set | HashSet、LinkedHashSet 和 TreeSet 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Queue | Queue 与 Deque 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Queue | ArrayDeque 与 LinkedList 有什么区别? | 简单 | ⭐⭐ | ✅ |
| Queue | PriorityQueue 有什么用? | 简单 | ⭐⭐ | ✅ |
| Queue | BlockingQueue 有什么用? | 简单 | ⭐⭐ | ✅ |
| Queue | ArrayBlockingQueue 和 LinkedBlockingQueue 有什么区别? | 中等 | ⭐⭐ | ⚠️ |
| Queue | Vector 和 Stack 为什么被弃用? | 中等 | ⭐ | ✅ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Map | 什么是 Hash 碰撞?如何解决 Hash 碰撞? | 简单 | ⭐ | ✅ |
| Map | HashMap 和 Hashtable 有什么区别? | 中等 | ⭐⭐ | ✅ |
| Map | 对比一下 HashMap 和 HashSet? | 中等 | ⭐⭐ | ✅ |
| Map | HashMap、TreeMap、LinkedHashMap 有什么区别? | 中等 | ⭐⭐ | ✅ |
| Map | HashMap 底层实现原理是什么? | 困难 | ⭐⭐⭐ | ✅ |
| Map | JDK 1.8 对 HashMap 做了哪些改动? | 困难 | ⭐⭐⭐ | ✅ |
| Map | HashMap 为什么线程不安全? | 困难 | ⭐⭐ | ✅ |
| Map | WeakHashMap 有什么用? | 中等 | ⭐ | ✅ |
| Map | ConcurrentHashMap 和 Hashtable 有什么区别? | 中等 | ⭐⭐ | ✅ |
| Map | ConcurrentHashMap 的底层实现原理是什么? | 困难 | ⭐⭐⭐ | ✅ |
| Map | ConcurrentHashMap 为什么 key 和 value 不能为 null? | 中等 | ⭐ | ⚠️ |
| Map | ConcurrentHashMap 能保证复合操作的原子性吗? | 中等 | ⭐ | ✅ |
| Map | HashMap 的扩容(resize)源码分析 | 困难 | ⭐ | ✅ |
| Map | HashMap 的负载因子为什么是 0.75? | 中等 | ⭐ | ✅ |
| Map | ConcurrentHashMap 的 size() 方法如何实现? | 中等 | ⭐ | ⚠️ |
| Map | HashMap 和 TreeMap 何时该用哪个? | 中等 | ⭐ | ✅ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Stream API | Stream API 的中间操作和终端操作有什么区别? | 中等 | ⭐ | ⚠️ |
| Stream API | 什么是短路操作? | 中等 | ⭐ | ❌ |
| Stream API | 并行流(Parallel Stream)的原理和注意事项? | 中等 | ⭐ | ⚠️ |
| Stream API | Collectors 工具类有哪些常用方法? | 中等 | ⭐ | ✅ |
| Java 容器工具类 | 排序操作 | 简单 | ⭐ | ✅ |
| Java 容器工具类 | 查找,替换操作 | 简单 | ⭐ | ✅ |
| Java 容器工具类 | 同步控制 | 简单 | ⭐ | ✅ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| 并发简介 | 并发和并行有什么区别? | 简单 | ⭐⭐ | ✅ |
| 并发简介 | 同步和异步有什么区别? | 简单 | ⭐⭐ | ✅ |
| 并发简介 | 阻塞和非阻塞有什么区别? | 简单 | ⭐⭐ | ✅ |
| 并发简介 | 进程、线程、协程、管程有什么区别? | 中等 | ⭐⭐ | ✅ |
| 并发简介 | Java 线程和操作系统的线程有什么区别? | 中等 | ⭐ | ⚠️ |
| 并发简介 | Java 传统线程和虚拟线程有什么区别? | 中等 | ⭐⭐⭐ | ⚠️ |
| 并发简介 | 单核 CPU 支持 Java 多线程吗? | 中等 | ⭐ | ✅ |
| 并发简介 | 并发一定比串行更快吗? | 简单 | ⭐⭐ | ✅ |
| 并发简介 | 什么是并发安全?有哪些线程不安全的情况? | 简单 | ⭐ | ✅ |
| 并发简介 | 为什么会有并发安全问题? | 中等 | ⭐⭐ | ✅ |
| 并发简介 | 哪些场景需要额外注意并发安全问题? | 中等 | ⭐ | ✅ |
| 并发简介 | 什么是死锁?如何发现死锁?如何避免死锁? | 困难 | ⭐⭐ | ✅ |
| 并发简介 | 什么是活锁?如何避免活锁? | 中等 | ⭐ | ❌ |
| 并发简介 | 什么是饥饿问题?如何避免饥饿? | 中等 | ⭐ | ❌ |
| 并发简介 | 简单介绍一下 Java 并发编程? | 简单 | ⭐ | ✅ |
| Java 内存模型 | 什么是 Java 内存模型? | 中等 | ⭐⭐ | ⚠️ |
| Java 内存模型 | 什么是 Happens-Before 规则?有什么用? | 困难 | ⭐ | ✅ |
| Java 内存模型 | 什么是 Java 内存屏障?有什么用? | 困难 | ⭐⭐ | ⚠️ |
| Java 内存模型 | volatile 有什么作用? | 中等 | ⭐⭐⭐ | ✅ |
| Java 内存模型 | volatile 能完全保证并发安全吗? | 中等 | ⭐⭐ | ✅ |
| Java 内存模型 | volatile 和 synchronized 有什么区别?volatile 能替代 synchronized 吗? | 中等 | ⭐⭐ | ✅ |
| Java 内存模型 | synchronized 有什么作用? | 中等 | ⭐⭐⭐ | ✅ |
| Java 内存模型 | synchronized 的实现原理是什么? | 中等 | ⭐⭐⭐ | ✅ |
| Java 内存模型 | JDK6 对synchronized 进行了哪些优化? | 困难 | ⭐⭐⭐ | ✅ |
| Java 内存模型 | synchronized 锁升级的详细过程是怎样的? | 困难 | ⭐⭐⭐ | ✅ |
| Java 内存模型 | 为什么 DCL 单例模式需要 volatile? | 困难 | ⭐⭐ | ✅ |
| Java 内存模型 | final 关键字可以保证线程的可见性吗? | 中等 | ⭐⭐ | ⚠️ |
| Java 线程 | Java 线程生命周期有哪些状态?状态之间如何切换? | 中等 | ⭐⭐⭐ | ✅ |
| Java 线程 | Java 中,创建线程有几种方式? | 中等 | ⭐⭐ | ✅ |
| Java 线程 | 可以直接调用 Thread.run() 方法么? | 简单 | ⭐⭐ | ✅ |
| Java 线程 | Thread.start() 的内部原理是什么? | 中等 | ⭐ | ✅ |
| Java 线程 | 如何正确停止 Java 线程? | 中等 | ⭐ | ✅ |
| Java 线程 | 可以使用 Thread.stop,Thread.suspend 和 Thread.resume 停止线程吗?为什么? | 中等 | ⭐ | ✅ |
| Java 线程 | 一个线程两次调用 Thread.start() 方法会怎样? | 简单 | ⭐⭐ | ✅ |
| Java 线程 | Thread.sleep()、Thread.yield()、Thread.join()、Object.wait() 有什么区别? | 简单 | ⭐ | ✅ |
| Java 线程 | 为什么 Thread.sleep()、Thread.yield() 设计为静态方法? | 中等 | ⭐ | ✅ |
| Java 线程 | 为什么 Object.wait()、Object.notify() 和 Object.notifyAll() 被定义在 Object 类里? | 中等 | ⭐ | ✅ |
| Java 线程 | 为什么 Object.wait()、Object.notify() 和 Object.notifyAll() 必须在 synchronized 方法/块中被调用? | 中等 | ⭐ | ✅ |
| Java 线程 | 使用 volatile 标记方式停止线程正确吗? | 中等 | ⭐⭐ | ✅ |
| Java 线程 | Java 线程之间如何进行通信? | 中等 | ⭐⭐ | ✅ |
| Java 线程 | 高优先级的 Java 线程一定先执行吗? | 简单 | ⭐⭐ | ✅ |
| Java 线程 | 什么是守护线程?用户线程和守护线程有什么区别? | 中等 | ⭐ | ✅ |
| Java 线程 | 什么是 FutureTask?它的原理是什么? | 中等 | ⭐ | ❌ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Java 锁 | Java 中,根据不同维度划分,锁有哪些分类? | 中等 | ⭐⭐ | ✅ |
| Java 锁 | 悲观锁和乐观锁有什么区别? | 中等 | ⭐⭐ | ✅ |
| Java 锁 | 公平锁和非公平锁有什么区别? | 中等 | ⭐⭐ | ✅ |
| Java 锁 | AQS 的实现原理是什么? | 困难 | ⭐⭐⭐ | ✅ |
| Java 锁 | synchronized 和 ReentrantLock 有什么区别? | 中等 | ⭐⭐⭐ | ✅ |
| Java 锁 | ReentrantLock 的实现原理是什么? | 困难 | ⭐⭐⭐ | ✅ |
| Java 锁 | ReentrantReadWriteLock 的实现原理是什么? | 困难 | ⭐⭐ | ✅ |
| Java 锁 | StampedLock 的实现原理是什么? | 困难 | ⭐ | ⚠️ |
| Java 锁 | Condition 的原理是什么?与 Object.wait/notify 有什么区别? | 中等 | ⭐ | ✅ |
| Java 锁 | AQS 的 CLH 队列与原始 CLH 队列有什么区别? | 困难 | ⭐ | ⚠️ |
| Java 无锁 | 什么是 CAS?CAS 的实现原理是什么? | 中等 | ⭐⭐⭐ | ✅ |
| Java 无锁 | CAS 算法存在哪些问题? | 中等 | ⭐⭐⭐ | ✅ |
| Java 无锁 | LongAdder 的原理是什么?为什么高并发下比 AtomicLong 快? | 困难 | ⭐⭐ | ✅ |
| Java 无锁 | Java 中支持哪些原子类? | 中等 | ⭐ | ✅ |
| Java 无锁 | 什么是 ThreadLocal? | 中等 | ⭐⭐ | ✅ |
| Java 无锁 | ThreadLocal 的原理是什么? | 中等 | ⭐⭐⭐ | ✅ |
| Java 无锁 | 如何解决 ThreadLocal 内存泄漏问题? | 中等 | ⭐⭐ | ✅ |
| Java 无锁 | InheritableThreadLocal 的实现原理是什么? | 中等 | ⭐⭐ | ⚠️ |
| Java 无锁 | TransmittableThreadLocal 是什么?解决了什么问题? | 中等 | ⭐ | ⚠️ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| Java 线程池 | 为什么要用线程池? | 简单 | ⭐⭐ | ✅ |
| Java 线程池 | Java 创建线程池有哪些方式? | 简单 | ⭐⭐⭐ | ✅ |
| Java 线程池 | Java 线程池有哪些核心参数?各有什么作用? | 中等 | ⭐⭐⭐ | ✅ |
| Java 线程池 | Java 线程池的工作原理是什么? | 中等 | ⭐⭐ | ✅ |
| Java 线程池 | Java 线程池的核心线程会被回收吗? | 简单 | ⭐⭐ | ✅ |
| Java 线程池 | 如何合理地设置 Java 线程池的线程数? | 中等 | ⭐ | ✅ |
| Java 线程池 | Java 线程池支持哪些阻塞队列,如何选择? | 中等 | ⭐⭐ | ✅ |
| Java 线程池 | Java 线程池支持哪些拒绝策略?如何选择? | 中等 | ⭐⭐ | ✅ |
| Java 线程池 | Java 线程池内部任务出异常后,如何知道是哪个线程出了异常? | 中等 | ⭐ | ✅ |
| Java 线程池 | Java 线程池中 shutdown 与 shutdownNow 的区别是什么? | 中等 | ⭐ | ⚠️ |
| Java 线程池 | Java 线程池参数在运行过程中能修改吗?如何修改? | 困难 | ⭐ | ✅ |
| Java 线程池 | DelayQueue 和 ScheduledThreadPool 有什么区别? | 中等 | ⭐ | ⚠️ |
| Java 线程池 | 1000 个任务,每个任务 0.1s,最大响应时间 1s,线程池参数怎么设置? | 中等 | ⭐⭐ | ✅ |
| Java 并发同步工具 | CountDownLatch 的工作原理是什么? | 中等 | ⭐⭐⭐ | ✅ |
| Java 并发同步工具 | CyclicBarrier 的工作原理是什么? | 中等 | ⭐⭐ | ⚠️ |
| Java 并发同步工具 | Semaphore 的工作原理是什么? | 中等 | ⭐ | ❌ |
| Java 并发同步工具 | 对比一下 CountDownLatch、 CyclicBarrier、Semaphore? | 困难 | ⭐ | ⚠️ |
| Java 并发同步工具 | Exchanger 的工作原理是什么? | 中等 | ⭐ | ❌ |
| Java 并发同步工具 | Phaser 的工作原理是什么? | 中等 | ⭐ | ❌ |
| Java 并发分工工具 | ForkJoinPool 的工作原理是什么? | 困难 | ⭐⭐ | ✅ |
| Java 并发分工工具 | CompleteFuture 有哪些用法? | 中等 | ⭐⭐ | ⚠️ |
| Java 并发分工工具 | CompleteFuture 的工作原理是什么? | 困难 | ⭐ | ❌ |
| Java 并发分工工具 | 虚拟线程的结构化并发是什么? | 困难 | ⭐⭐ | ❌ |
| Java 并发分工工具 | BlockingQueue 的核心方法有哪些?抛异常/返回特殊值/阻塞/超时四类方法有什么区别? | 中等 | ⭐ | ✅ |
| Java 并发分工工具 | Timer 的工作原理是什么? | 中等 | ⭐⭐ | ❌ |
| Java 并发分工工具 | 时间轮(Time Wheel)的工作原理是什么? | 困难 | ⭐⭐ | ✅ |
| Java 并发应用 | Java 中如何控制多线程的执行顺序? | 中等 | ⭐⭐ | ✅ |
| Java 并发应用 | Java 中如何实现生产者消费者模式? | 中等 | ⭐⭐ | ✅ |
| Java 容器 | Java 线程安全的集合有哪些? | 中等 | ⭐⭐ | ✅ |
| Java 容器 | ConcurrentHashMap 的实现原理是什么? | 困难 | ⭐⭐⭐ | ✅ |
| Java 容器 | CopyOnWriteArrayList 的原理是什么?适用什么场景? | 中等 | ⭐ | ✅ |
| Java 容器 | ConcurrentLinkedQueue 的原理是什么? | 中等 | ⭐ | ❌ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| JVM 简介 | 说说 Java 的执行流程? | 中等 | ⭐⭐⭐ | ✅ |
| JVM 简介 | JVM 由哪些部分组成? | 中等 | ⭐⭐⭐ | ✅ |
| JVM 简介 | Java 是如何实现跨平台的? | 中等 | ⭐⭐ | ✅ |
| 类加载 | 什么情况下 Java 类会被加载? | 中等 | ⭐⭐ | ⚠️ |
| 类加载 | Java 对象在虚拟机中怎样存储? | 中等 | ⭐⭐ | ⚠️ |
| 类加载 | Java 对象的创建过程是怎样的? | 中等 | ⭐⭐⭐ | ✅ |
| 类加载 | Java 类的生命周期是怎样的? | 中等 | ⭐⭐⭐ | ✅ |
| 类加载 | 什么是类加载器? | 困难 | ⭐⭐ | ✅ |
| 类加载 | 有哪些场景破坏了双亲委派模型? | 困难 | ⭐⭐⭐ | ⚠️ |
| JVM 内存管理 | JVM 的内存区域是如何划分的? | 困难 | ⭐⭐⭐ | ✅ |
| JVM 内存管理 | JVM 产生 OOM 有哪几种情况? | 困难 | ⭐⭐⭐ | ✅ |
| JVM 内存管理 | 字符串常量池有什么用? | 简单 | ⭐⭐ | ✅ |
| JVM 内存管理 | 为什么 Java 8 移除了永久代(PermGen)并引入了元空间(Metaspace)? | 困难 | ⭐⭐ | ✅ |
| 字节码 | Java 是编译型语言还是解释型语言? | 中等 | ⭐⭐ | ✅ |
| 字节码 | 什么是 Java 字节码?它与机器码有什么区别? | 中等 | ⭐⭐ | ✅ |
| 字节码 | .class 文件的结构包含哪些主要部分? | 中等 | ⭐⭐ | ⚠️ |
| 字节码 | 如何查看 Java 字节码?常用工具有哪些? | 中等 | ⭐⭐ | ✅ |
| 字节码 | Java 字节码有哪些典型应用场景? | 中等 | ⭐⭐ | ✅ |
| 字节码 | 什么是 JIT? | 中等 | ⭐ | ✅ |
| 字节码 | 什么是逃逸分析? | 困难 | ⭐⭐ | ⚠️ |
| 字节码 | 什么是 AOT? | 困难 | ⭐⭐ | ⚠️ |
| 分类 | 标题 | 难度 | 热度 | 掌握度 |
|---|
| 垃圾收集 | 如何判断 Java 对象是否可以被回收? | 困难 | ⭐⭐⭐ | ✅ |
| 垃圾收集 | 为什么不建议使用 finalize()? | 中等 | ⭐⭐ | ⚠️ |
| 垃圾收集 | 什么是三色标记?如何解决漏标问题? | 困难 | ⭐⭐⭐ | ❌ |
| 垃圾收集 | 什么是安全点和安全区域? | 中等 | ⭐⭐ | ❌ |
| 垃圾收集 | Java 对象有哪些引用类型? | 中等 | ⭐⭐ | ✅ |
| 垃圾收集 | Java 中有哪些垃圾回收算法? | 中等 | ⭐⭐⭐ | ✅ |
| 垃圾收集 | Java 中常见的垃圾收集器有哪些? | 中等 | ⭐⭐⭐ | ✅ |
| 垃圾收集 | Java 中的 Young GC、Old GC、Full GC 和 Mixed GC 的区别是什么? | 困难 | ⭐⭐ | ⚠️ |
| 垃圾收集 | JVM 的内存分配策略是怎样的?对象何时晋升老年代? | 中等 | ⭐⭐⭐ | ✅ |
| 垃圾收集 | Java 的 CMS 垃圾回收流程是怎样的? | 困难 | ⭐⭐ | ⚠️ |
| 垃圾收集 | Java 的 G1 垃圾回收流程是怎样的? | 困难 | ⭐⭐ | ⚠️ |
| 垃圾收集 | Java 的 ZGC 垃圾回收流程是怎样的? | 困难 | ⭐⭐ | ❌ |
| 垃圾收集 | Java 的 Shenandoah 垃圾回收流程是怎样的? | 困难 | ⭐⭐ | ❌ |
| 垃圾收集 | JVM 垃圾回收时产生的 concurrent mode failure 的原因是什么? | 困难 | ⭐⭐ | |
| 调优 | JDK 内置了哪些工具? | 简单 | ⭐⭐ | ✅ |
| 调优 | 常用的 JVM 配置参数有哪些? | 中等 | ⭐⭐⭐ | ⚠️ |
| 调优 | 如何在 Java 中进行内存泄漏分析? | 中等 | ⭐⭐⭐ | ✅ |
| 调优 | 如何对 Java 的垃圾回收进行调优? | 中等 | ⭐⭐ | ⚠️ |
| 调优 | Java 应用的内存持续性增长,但是监控显示堆内存没有什么变化,可能的原因有哪些? | 中等 | ⭐⭐ | |
◾ 💧 钝悟的 IT 知识图谱 ◾ 🎯 钝悟的博客 ◾