Java面试题更新 2026-08-03

Java 某中小厂实习八股文拷打,题目难度被标记为简单。请作答。

考察说明

考查 Java 基础核心知识点的掌握程度,包括语法、集合、并发、JVM 等常见八股内容。

回答思路

  1. 【回答框架 1】Java 基础部分重点覆盖面向对象三大特性、基本类型与引用类型区别、String 不可变性及常量池机制、equals 与 hashCode 约定、异常体系分类及处理原则。
  2. 【回答框架 2】集合框架需区分 List、Set、Map 的底层实现与适用场景,例如 ArrayList 基于数组、LinkedList 基于双向链表,HashMap 基于数组加链表加红黑树,并说明线程安全集合与 fail-fast 机制。
  3. 【回答框架 3】并发编程要讲清 synchronized 与 ReentrantLock 的区别、volatile 的可见性与有序性、ThreadLocal 原理及内存泄漏风险,以及线程池核心参数与拒绝策略。
  4. 【回答框架 4】JVM 部分需说明内存区域划分、类加载双亲委派模型、可达性分析算法与常见垃圾回收器,以及 GC Roots 和 Stop-The-World 现象。
  5. 【回答框架 5】针对中小厂实习岗位,回答时体现基础扎实比深挖源码更重要,遇到不确定的知识点应坦诚说明并给出推理思路,避免硬编造。
  6. 【关键点 1】HashMap 在 Java 8 中由数组加链表升级为数组加链表加红黑树,链表长度阈值 8 且数组长度 64 时才树化。
  7. 【关键点 2】synchronized 是 JVM 层面锁,ReentrantLock 是 API 层面锁,后者支持公平锁和可中断获取锁。
  8. 【关键点 3】volatile 保证可见性和有序性,但不保证原子性,适用于状态标记等场景。
  9. 【关键点 4】ThreadLocal 的 key 为弱引用但 value 为强引用,不 remove 可能导致内存泄漏。
  10. 【关键点 5】线程池核心参数包括核心线程数、最大线程数、空闲存活时间、工作队列和拒绝策略,采用 AbortPolicy 默认抛出异常。
  11. 【易错点 1】不要将 volatile 与原子性混淆,不能保证 i++ 操作安全。
  12. 【易错点 2】不要把 ThreadLocal 的弱引用 key 误解为完全避免内存泄漏,value 仍可能泄漏。
  13. 【易错点 3】线程数并非越多越好,过多导致上下文切换开销,应根据 CPU 密集和 IO 密集估算初始值。