2025版Java面试宝典:高频考点+避坑指南
【2025版Java面试宝典:高频考点+避坑指南】
▍Java基础核心
① 数据类型与对象
基本类型:byte(8bit)、short(16bit)、int(32bit)、long(64bit)、float(32bit)、double(64bit)、char(16bit)、boolean(1bit),共四类八种
String特性:不可变性(private final char value[]),StringBuffer线程安全(同步锁),StringBuilder非线程安全
② 对象操作黄金法则
操作 要点
== vs equals 基本类型比值,引用类型比地址;String重写equals实现值比较
hashCode重写 必须与equals逻辑一致,否则导致HashMap等容器存储异常
▍进阶必考
① 集合框架
HashMap:链表+红黑树结构(JDK8),允许null键值;Hashtable全方法同步,性能低
ArrayList vs Vector:后者所有方法加synchronized,扩容倍数1.5倍 vs 2倍
② 多线程
线程安全实现:synchronized(JVM级锁)、ReentrantLock(API级锁+公平性选项)
volatile:保证可见性/有序性,不保证原子性(适合状态标记)
③ 异常体系
Error:系统级错误(如OutOfMemoryError),程序无法处理;Exception需捕获/声明
try-with-resources:自动调用close(),优先于finally块
▍框架与设计模式
① Spring核心
IOC:控制反转(对象创建权交给容器),AOP:动态代理实现切面编程
事务传播:PROPAGATION_REQUIRED(默认加入当前事务)vs REQUIRES_NEW(新建事务)
② 设计模式
单例模式:双重校验锁(volatile+synchronized)解决线程安全与延迟加载
工厂模式:SimpleFactory处理单一产品,AbstractFactory支持产品族扩展
▍数据库与JVM
① MySQL优化
索引失效:左模糊查询(%abc)、函数计算字段、隐式类型转换
事务隔离:
- READ COMMITTED:解决脏读(Oracle默认)
- REPEATABLE READ:解决不可重复读(MySQL默认)
② JVM内存模型
堆分区:新生代(Eden+Survivor)、老年代;GC算法:CMS(低停顿)、G1(区域化)
OOM排查:-XX:+
HeapDumpOnOutOfMemoryError生成堆转储文件
▍高级特性
① 反射与动态代理
反射代价:绕过编译器检查,性能开销大(比直接调用慢50倍+)
JDK动态代理:基于接口实现,InvocationHandler控制调用逻辑
② Java8新特性
Lambda表达式:简化匿名内部类(如()->System.out.println())
Stream API:链式操作(filter-map-collect)提升集合处理效率
▍代码陷阱
java
Copy Code
// 面试高频坑点
Integer a = 128, b = 128;
System.out.println(a == b); // false(超出-128~127缓存):ml-citation{ref="1,6" data="citationList"}
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1.intern() == s2); // true(强制入池):ml-citation{ref="6,7" data="citationList"}
避坑指南:
i++非原子操作(实际包含取值、计算、赋值三步)
String拼接优先用StringBuilder(避免产生中间String对象)
(评论区可留言你的面试难题,获取定制解析)