JDK 面试题
本节汇总 JDK 各版本相关的经典面试题。
Java 8 相关
Q: Lambda 表达式和匿名内部类的区别?
| 区别 | Lambda | 匿名内部类 |
|---|---|---|
| this 引用 | 指向外层类 | 指向匿名类本身 |
| 编译方式 | invokedynamic | 生成新类 |
| 变量作用域 | 可访问 effectively final | 可访问任何变量 |
Q: Stream 和 Collection 的区别?
java
List<String> list = Arrays.asList("a", "b");
list.stream()
.filter(s -> s.length() > 0)
.map(String::toUpperCase);Java 11 相关
Q: var 关键字的局限性?
java
var list = new ArrayList<String>();
var stream = list.stream();Java 17 相关
Q: Sealed Classes 的作用?
java
sealed class Shape permits Circle, Rectangle {}Java 21 相关
Q: 虚拟线程和线程池的区别?
| 对比 | 线程池 | 虚拟线程 |
|---|---|---|
| 数量 | 受限(数十到数百) | 极多(数百万) |
| 创建成本 | 高 | 极低 |
| 适用场景 | CPU 密集型 | IO 密集型 |
小结
理解原理,对比分析,有使用经验更佳。
