
1. Java基础面试题概述2026年的Java技术栈虽然引入了更多新特性但基础部分始终是面试考察的重中之重。根据近三年一线大厂的面试统计基础题在技术面中的占比仍高达35%-45%。这份题库覆盖了Java SE最核心的9大知识模块包含高频考点和易错点解析。2. 核心考点解析2.1 JVM内存模型2026更新版堆内存分区变化年轻代默认比例从8:1:1调整为6:2:2G1收集器元空间新增动态收缩机制JDK21典型问题示例// 考察字符串常量池位置变化 String s1 new String(hello) new String(world); s1.intern(); String s2 helloworld; System.out.println(s1 s2); // JDK17 false → JDK21 true内存屏障新特性新增LoadStore屏障类型针对ARM架构优化内存可见性指令集扩展JEP 4232.2 并发编程深度考点虚拟线程实战题// 考察虚拟线程与平台线程区别 try (var executor Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 10_000).forEach(i - { executor.submit(() - { Thread.sleep(Duration.ofSeconds(1)); return i; }); }); } // 此处需要多少真实线程锁优化新机制偏向锁在JDK20后彻底移除新增自适应自旋锁JEP 429分段锁粒度动态调整算法3. 语法特性与API变化3.1 模式匹配进阶用法switch表达式模式匹配// 类型模式守卫模式组合 String format(Object obj) { return switch(obj) { case Integer i i 100 - Large number; case Double d when d 0 - Negative; case String s - s.length() 10 ? Long text : Short text; default - Unknown; }; }记录类(RECORD)陷阱record Point(int x, int y) { // 验证规范构造器 public Point { if (x 0 || y 0) throw new IllegalArgumentException(); } }3.2 新I/O API重点结构化并发示例// 新版HTTP客户端结构化并发 try (var scope new StructuredTaskScope.ShutdownOnFailure()) { FutureString user scope.fork(() - fetchUser()); FutureString order scope.fork(() - fetchOrder()); scope.join(); return new Response(user.resultNow(), order.resultNow()); }4. 异常处理与调试4.1 异常体系更新异常链改进新增addSuppressed()批量方法堆栈跟踪压缩算法JEP 358典型陷阱题try { Files.readString(Path.of(nonexist.txt)); } catch (IOException e) { throw new RuntimeException(e); // 此处丢失什么信息 }4.2 JShell调试技巧即时验证题jshell String text ... Multiple ... Line ... Text;5. 集合框架深度优化5.1 新集合API序列化过滤// 防御性反序列化 var filter ObjectInputFilters.rejectFilter( cl - cl.getName().contains(Invoker), ObjectInputFilters.Status.REJECTED );不可变集合ListString list List.of(A, B); SetInteger set Set.of(1, 2, 3); MapString, Integer map Map.ofEntries( Map.entry(a, 1), Map.entry(b, 2) );6. 面向对象设计进阶6.1 密封类(Sealed Class)典型考题public sealed interface Shape permits Circle, Rectangle, Triangle { double area(); } // 子类必须为final/sealed/non-sealed6.2 代理模式新实现动态代理优化interface Service { void serve(); } Object proxy Proxy.newProxyInstance( loader, new Class?[] { Service.class }, (p, method, args) - { System.out.println(Before); return null; // 实际调用 } );7. Java模块化系统7.1 module-info关键配置服务加载机制module com.example { requires java.logging; exports com.example.api; provides Service with MyServiceImpl; }7.2 模块化迁移问题常见错误// 未开放反射权限时 Field field String.class.getDeclaredField(value); field.setAccessible(true); // 抛出InaccessibleObjectException8. 最新工具链考察8.1 jpackage打包典型命令jpackage --name MyApp --input lib --main-jar app.jar8.2 jlink裁剪最小运行时jlink --add-modules java.base --output minimal9. 综合设计题缓存系统设计// 要求实现带过期时间的LRU class TimedCacheK,V { private final MapK, CacheEntryV map; private final DequeK queue; private final ScheduledExecutorService cleaner; record CacheEntryV(V value, long expireTime) {} }10. 避坑指南Null处理Optional.orElse()与orElseGet()的性能差异新版Objects.requireNonNullElseGet()日期计算// 时区敏感操作 ZoneId.getAvailableZoneIds().stream() .filter(z - z.contains(Asia)) .forEach(System.out::println);性能对比传统for vs forEach vs Stream并行流内存占用测试工具jcmd GC.heap_info编码规范新版Java编码风格检查规则JEP 396自动格式化工具jformat版本兼容// 多版本jar构建 javac --release 11 -d classes/11 src/11/* javac --release 17 -d classes/17 src/17/*面试准备建议每天针对性练习3-5个核心知识点结合JShell快速验证。对于虚拟线程、模式匹配等新特性建议通过OpenJDK官方用例进行实操。