Java面试宝典(完整版,高频必背)

一、Java 基础核心

  1. JDK、JRE、JVM 区别

• JVM:Java虚拟机,跨平台核心,只认class字节码

• JRE:JVM + 核心类库,运行Java程序必备

• JDK:JRE + 编译工具(javac)、调试工具,开发必备

  1. 面向对象三大特性

封装、继承、多态

• 封装:隐藏内部实现,暴露公共方法

• 继承:子类复用父类代码,单继承、多实现

• 多态:父类引用指向子类对象,编译看父类,运行看子类

  1. 基本数据类型 & 包装类

基本类型8种:
byte、short、int、long、float、double、char、boolean

• 包装类:都是引用类型,默认值null

• 自动装箱拆箱:JDK5+ 基本类型和包装类自动转换

• 缓存机制:Integer(-128~127)、Byte、Short、Long 有缓存

  1. == 和 equals 区别

• ==:基本类型比值,引用类型比内存地址

• equals:默认同==,String、Integer等重写后比内容

  1. String、StringBuilder、StringBuffer

• String:不可变,底层final字符数组,频繁拼接效率低

• StringBuilder:可变、线程不安全、效率高(常用)

• StringBuffer:可变、线程安全、加了synchronized

  1. 重载 和 重写

• 重载:同类中,方法名相同、参数列表不同,和返回值无关

• 重写:子类重写父类方法,方法名/参数/返回值一致,权限不能更严格

二、集合框架高频面试

  1. ArrayList 和 LinkedList

• ArrayList:底层数组,查询快、增删慢,线程不安全

• LinkedList:底层双向链表,增删快、查询慢

  1. HashMap 核心(必问)

• 底层:数组+链表+红黑树

• JDK8:链表长度≥8且数组长度≥64 转红黑树;小于6 退化成链表

• 负载因子默认0.75,初始容量16

• 线程不安全,并发推荐:ConcurrentHashMap

  1. HashMap 为什么线程不安全

多线程扩容、插入时易出现环形链表、数据覆盖、丢失数据

三、Java 异常体系

• 分两大类:Error(系统级错误,无法处理)、Exception

• Exception 分:

◦ 编译时异常(受检):必须try-catch或throws

◦ 运行时异常(RuntimeException):可不用捕获

• 常用关键字:try、catch、finally、throw、throws

• finally:除非System.exit,否则一定会执行

四、JVM 面试重点

  1. JVM 内存区域

程序计数器、虚拟机栈、本地方法栈、堆、方法区

  1. 堆内存分代

新生代(Eden、Survivor From/To)、老年代

• 垃圾回收:Minor GC(新生代)、Full GC(整堆)

  1. 垃圾回收 GC

• 判定垃圾:引用计数法、可达性分析

• 常用收集器:G1、ZGC、Parallel GC

五、多线程 & 并发

  1. 线程创建四种方式

继承Thread、实现Runnable、实现Callable+Future、线程池

  1. synchronized 和 Lock

• synchronized:内置锁,自动加解锁,可修饰方法/代码块

• Lock:手动锁,灵活,可超时、可中断

  1. 线程池七大参数

核心线程数、最大线程数、空闲时间、队列、拒绝策略、线程工厂

六、Spring 核心面试

  1. IOC 控制反转:对象创建和依赖交给Spring容器管理

  2. DI 依赖注入:构造器、setter、注解注入

  3. AOP 面向切面:动态代理,做日志、事务、权限

  4. Spring Bean 生命周期:实例化→属性填充→初始化→销毁

七、SpringBoot 高频

• 自动配置原理:@EnableAutoConfiguration

• 内置Tomcat、约定大于配置

• yml 和 properties 区别、配置优先级

八、MySQL 数据库

  1. 索引结构:B+树

  2. 事务四大特性:ACID

  3. 事务隔离级别、脏读/不可重复读/幻读

  4. 慢查询优化、联合索引最左前缀原则

九、Redis 必问

• 五种基本数据类型

• 缓存穿透、击穿、雪崩 解决方案

• 过期淘汰策略、持久化RDB/AOF

十、常用面试手写题

  1. 单例模式(饿汉、懒汉、双重校验锁)

  2. 冒泡、二分查找

  3. 反转链表

  4. 线程交替打印

更多推荐