整理了Java 面试必问的基础题覆盖基础语法、面向对象、集合、异常、多线程、JVM 等核心考点答案简洁好记适合面试突击背诵。一、Java 基础语法1. JDK、JRE、JVM 的区别JVMJava 虚拟机负责将字节码翻译成机器码实现跨平台。JREJava 运行时环境包含 JVM 核心类库只能运行 Java 程序。JDKJava 开发工具包包含 JRE 编译器 (javac) 调试工具既能运行又能开发 Java 程序。2. 和 equals () 的区别基本类型比较值引用类型比较内存地址。equals()未重写和 一样比较地址重写如 String、Integer比较内容。3. String、StringBuilder、StringBuffer 区别String不可变字符序列线程安全效率低。StringBuilder可变字符序列非线程安全效率最高。StringBuffer可变字符序列线程安全加了 synchronized效率中等。4. 重载和重写的区别重载Overload同一个类中方法名相同参数列表不同个数、类型、顺序与返回值无关。重写Override子类重写父类方法方法名、参数列表、返回值都相同子类权限不能更小不能抛出更大异常。5. final 关键字的作用修饰类类不能被继承。修饰方法方法不能被重写。修饰变量变量变为常量只能赋值一次。二、面向对象OOP6. 面向对象的四大特性封装、继承、多态、抽象封装隐藏实现细节对外提供接口。继承子类复用父类属性和方法。多态父类引用指向子类对象编译看左边运行看右边。抽象抽离公共特征用抽象类 / 接口实现。7. 接口和抽象类的区别表格特性接口抽象类继承多实现单继承方法默认 public abstractJDK8 支持默认方法可以有抽象 / 普通方法变量只能是 public static final 常量可以有普通变量构造器无有8. 多态的实现条件继承 / 实现关系方法重写父类引用指向子类对象三、集合框架高频9. List、Set、Map 的区别List有序、可重复、可通过索引访问。Set无序、不可重复。Map键值对存储Key 不可重复Value 可重复。10. ArrayList 和 LinkedList 区别ArrayList数组结构查询快增删慢线程不安全。LinkedList双向链表查询慢增删快线程不安全。11. HashMap 和 Hashtable 区别HashMap线程不安全允许 null 键 / 值效率高。Hashtable线程安全synchronized不允许 null效率低。12. HashMap 底层原理JDK7数组 链表 JDK8数组 链表 红黑树链表长度≥8 转红黑树≤6 转回链表 核心通过 hash 算法计算索引解决哈希冲突用链表 / 红黑树。13. ConcurrentHashMap 线程安全原理JDK7分段锁Segment减小锁粒度。JDK8CAS synchronized锁头节点效率更高。四、异常处理14. Checked 和 Unchecked 异常区别受检异常Checked编译期必须处理try-catch/throws如 IOException、SQLException。非受检异常Unchecked运行时异常编译不检查如 NullPointerException、ArrayIndexOutOfBoundsException。15. throw 和 throws 区别throw手动抛出一个异常对象在方法体内。throws方法声明可能抛出异常在方法签名上。16. final、finally、finalize 区别final修饰类、方法、变量不可变。finally配合 try-catch一定执行除非 JVM 退出用于释放资源。finalizeObject 方法垃圾回收前调用已废弃。五、多线程与并发17. 线程和进程的区别进程操作系统资源分配的最小单位独立内存空间。线程CPU 调度的最小单位共享进程内存。18. 创建线程的 4 种方式继承 Thread 类实现 Runnable 接口实现 Callable 接口带返回值线程池 Executors/ThreadPoolExecutor19. 线程的生命周期新建 → 就绪 → 运行 → 阻塞 → 死亡20. sleep () 和 wait () 区别sleep ()Thread 方法不释放锁时间到自动唤醒。wait ()Object 方法释放锁需 notify ()/notifyAll () 唤醒。21. synchronized 和 Lock 区别synchronizedJVM 实现自动加锁解锁不可中断非公平锁。LockAPI 层面手动加锁解锁可中断支持公平 / 非公平锁。22. 死锁的四个条件互斥条件请求与保持不可剥夺循环等待破坏任意一个即可避免死锁。六、JVM 与内存23. JVM 内存模型运行时数据区程序计数器虚拟机栈本地方法栈堆存储对象GC 主要区域方法区存储类信息、常量、静态变量24. 堆内存分代新生代Eden 两个 Survivor老年代元空间JDK8 替代永久代25. GC 垃圾回收机制判断对象死亡引用计数法、可达性分析算法垃圾回收算法标记 - 清除、标记 - 复制、标记 - 整理七、IO 流26. BIO、NIO、AIO 区别BIO同步阻塞一个连接一个线程。NIO同步非阻塞多路复用。AIO异步非阻塞回调通知。27. 字节流和字符流字节流InputStream/OutputStream处理所有文件图片、视频。字符流Reader/Writer处理纯文本文件。面试突击建议先背高频题 和 equals、HashMap、多线程、异常、面向对象。结合场景说比如问集合直接说业务中用 ArrayList 做查询、HashMap 做缓存。手写代码准备单例模式、排序、线程创建、HashMap 原理。
Java 基础高频面试题
整理了Java 面试必问的基础题覆盖基础语法、面向对象、集合、异常、多线程、JVM 等核心考点答案简洁好记适合面试突击背诵。一、Java 基础语法1. JDK、JRE、JVM 的区别JVMJava 虚拟机负责将字节码翻译成机器码实现跨平台。JREJava 运行时环境包含 JVM 核心类库只能运行 Java 程序。JDKJava 开发工具包包含 JRE 编译器 (javac) 调试工具既能运行又能开发 Java 程序。2. 和 equals () 的区别基本类型比较值引用类型比较内存地址。equals()未重写和 一样比较地址重写如 String、Integer比较内容。3. String、StringBuilder、StringBuffer 区别String不可变字符序列线程安全效率低。StringBuilder可变字符序列非线程安全效率最高。StringBuffer可变字符序列线程安全加了 synchronized效率中等。4. 重载和重写的区别重载Overload同一个类中方法名相同参数列表不同个数、类型、顺序与返回值无关。重写Override子类重写父类方法方法名、参数列表、返回值都相同子类权限不能更小不能抛出更大异常。5. final 关键字的作用修饰类类不能被继承。修饰方法方法不能被重写。修饰变量变量变为常量只能赋值一次。二、面向对象OOP6. 面向对象的四大特性封装、继承、多态、抽象封装隐藏实现细节对外提供接口。继承子类复用父类属性和方法。多态父类引用指向子类对象编译看左边运行看右边。抽象抽离公共特征用抽象类 / 接口实现。7. 接口和抽象类的区别表格特性接口抽象类继承多实现单继承方法默认 public abstractJDK8 支持默认方法可以有抽象 / 普通方法变量只能是 public static final 常量可以有普通变量构造器无有8. 多态的实现条件继承 / 实现关系方法重写父类引用指向子类对象三、集合框架高频9. List、Set、Map 的区别List有序、可重复、可通过索引访问。Set无序、不可重复。Map键值对存储Key 不可重复Value 可重复。10. ArrayList 和 LinkedList 区别ArrayList数组结构查询快增删慢线程不安全。LinkedList双向链表查询慢增删快线程不安全。11. HashMap 和 Hashtable 区别HashMap线程不安全允许 null 键 / 值效率高。Hashtable线程安全synchronized不允许 null效率低。12. HashMap 底层原理JDK7数组 链表 JDK8数组 链表 红黑树链表长度≥8 转红黑树≤6 转回链表 核心通过 hash 算法计算索引解决哈希冲突用链表 / 红黑树。13. ConcurrentHashMap 线程安全原理JDK7分段锁Segment减小锁粒度。JDK8CAS synchronized锁头节点效率更高。四、异常处理14. Checked 和 Unchecked 异常区别受检异常Checked编译期必须处理try-catch/throws如 IOException、SQLException。非受检异常Unchecked运行时异常编译不检查如 NullPointerException、ArrayIndexOutOfBoundsException。15. throw 和 throws 区别throw手动抛出一个异常对象在方法体内。throws方法声明可能抛出异常在方法签名上。16. final、finally、finalize 区别final修饰类、方法、变量不可变。finally配合 try-catch一定执行除非 JVM 退出用于释放资源。finalizeObject 方法垃圾回收前调用已废弃。五、多线程与并发17. 线程和进程的区别进程操作系统资源分配的最小单位独立内存空间。线程CPU 调度的最小单位共享进程内存。18. 创建线程的 4 种方式继承 Thread 类实现 Runnable 接口实现 Callable 接口带返回值线程池 Executors/ThreadPoolExecutor19. 线程的生命周期新建 → 就绪 → 运行 → 阻塞 → 死亡20. sleep () 和 wait () 区别sleep ()Thread 方法不释放锁时间到自动唤醒。wait ()Object 方法释放锁需 notify ()/notifyAll () 唤醒。21. synchronized 和 Lock 区别synchronizedJVM 实现自动加锁解锁不可中断非公平锁。LockAPI 层面手动加锁解锁可中断支持公平 / 非公平锁。22. 死锁的四个条件互斥条件请求与保持不可剥夺循环等待破坏任意一个即可避免死锁。六、JVM 与内存23. JVM 内存模型运行时数据区程序计数器虚拟机栈本地方法栈堆存储对象GC 主要区域方法区存储类信息、常量、静态变量24. 堆内存分代新生代Eden 两个 Survivor老年代元空间JDK8 替代永久代25. GC 垃圾回收机制判断对象死亡引用计数法、可达性分析算法垃圾回收算法标记 - 清除、标记 - 复制、标记 - 整理七、IO 流26. BIO、NIO、AIO 区别BIO同步阻塞一个连接一个线程。NIO同步非阻塞多路复用。AIO异步非阻塞回调通知。27. 字节流和字符流字节流InputStream/OutputStream处理所有文件图片、视频。字符流Reader/Writer处理纯文本文件。面试突击建议先背高频题 和 equals、HashMap、多线程、异常、面向对象。结合场景说比如问集合直接说业务中用 ArrayList 做查询、HashMap 做缓存。手写代码准备单例模式、排序、线程创建、HashMap 原理。