JDK JDK 学习手册8 → 27 · JDK 专用学习站
INTERVIEW · JDK 8

面试模块:15 道题,接住下一问

先自己回答,再展开对照。答案里带追问与版本陷阱,比结论更重要。
使用方式按主题筛选,先答后看。能回答「为什么」和「版本边界」才算过关;只背结论会在追问处露馅。
Q01

Lambda 和匿名内部类在编译产物、this 语义和捕获方式上有什么本质区别?

Lambda 与函数式接口高频JEP 126
Q02

Lambda 捕获的局部变量为什么必须是 final 或 effectively final?

Lambda 与函数式接口进阶
Q03

方法引用的四种形式是什么?重载时编译器如何选择?

Lambda 与函数式接口进阶
Q04

Stream 的中间操作和终止操作如何分工?惰性求值和短路分别依赖什么?

Stream 流水线高频JEP 107
Q05

parallel stream 在什么条件下才值得用?它的线程池和风险是什么?

Stream 流水线高频JEP 107
Q06

Collectors.toMap 和 groupingBy 在重复键、null 值上分别是什么行为?

Stream 流水线进阶JEP 107
Q07

Optional 应该用在哪里?为什么不适合作为字段、方法参数和集合元素?

Optional高频
Q08

orElse 和 orElseGet 的区别是什么?什么情况下会写出 bug?

Optional进阶
Q09

java.time 相比 Date/Calendar 做了哪些设计修正?为什么它是线程安全的?

java.time高频JEP 150
Q10

LocalDateTime、Instant、ZonedDateTime 分别表示什么?跨时区存储应该用哪个?

java.time进阶JEP 150
Q11

HashMap 的 hash 扰动、容量、扩容和树化条件分别是什么?

集合与 HashMap高频
Q12

JDK 8 的 HashMap 在并发 put 下会发生什么?JDK 7 的扩容死循环在 8 里还有吗?

集合与 HashMap进阶
Q13

PermGen 为什么被移除?Metaspace 在分配位置、上限和参数上有什么不同?

JVM 与内存高频JEP 122
Q14

Metaspace OOM 如何定位?常见的 class loader 泄漏有哪些?

JVM 与内存进阶JEP 122
Q15

从 7 升到 8,哪些地方最容易出兼容性问题?default 方法真的完全二进制兼容吗?

迁移与兼容进阶JEP 122JEP 126

怎么刷这套题HOWTO

  1. 先按主题筛:一次只攻一个主题,避免题目切换导致理解断裂。
  2. 先自答再展开:用 30 秒说出结论 + 一条原因 + 一个例子。
  3. 重点看追问:追问模拟面试官的第二层问题,能接住才算真会。
  4. 最后看版本陷阱:同一 API 在不同 JDK 的状态差异,是最容易答错的点。
  5. 标记掌握:不确定的不要标记;隔天再复习一遍。

难度说明LEVELS

  • 高频:面试中出现频率高,或属于 JDK 8 的核心卖点。
  • 进阶:需要理解机制、版本边界或实现取舍,答好能拉开差距。

JDK 学习手册 · JDK / Java 专用学习站 · 纯静态 · 双击 index.html 即可使用

本站专注 JDK 版本演进与 Java 教学,非 Oracle / OpenJDK 官方站点。版本数据来自 OpenJDK 官方 Features 表;课程示例已在对应本机 JDK 实测。构建日期 2026-11-12。