牛客网Java八股文|2026秋招面试题汇总(金九银十冲刺专用)
本文整理Java面试100%高频八股考点覆盖Java基础、面向对象、集合、多线程、JVM、Spring核心六大核心模块内容精简、无废话、适配校招/社招面试突击可直接背诵使用。有需要的可以在文末获取一、Java 基础核心八股1. JDK、JRE、JVM 的区别JVMJava虚拟机Java跨平台的核心负责运行Java字节码文件.class不包含编译工具只负责解析执行程序。JREJava运行环境包含 JVM Java核心类库是Java程序运行的必备环境普通用户只需安装JRE即可运行Java程序。JDKJava开发工具包包含 JRE 编译工具(javac)、调试工具等是开发者开发Java程序的全套工具。层级关系JDK ⊃ JRE ⊃ JVM2. 和 equals() 的区别是运算符基本数据类型比较数值是否相等引用数据类型比较对象内存地址是否相同equals()是Object类的方法默认实现和 一致比较对象地址重写后String、Integer等比较对象内容/数值是否相等3. String、StringBuilder、StringBuffer 区别维度StringStringBuilderStringBuffer可变性不可变底层final字符数组可变可变线程安全线程安全不可变非线程安全线程安全方法加synchronized效率低频繁拼接会生成新对象最高中等锁消耗性能适用场景少量字符串定义、不频繁修改单线程频繁字符串拼接多线程频繁字符串拼接4. final、finally、finalize 的区别final修饰符修饰类类不可被继承修饰方法方法不可被重写修饰变量变量变为常量只能赋值一次finally异常处理关键字搭配try-catch使用无论程序是否异常最终都会执行唯一不执行场景System.exit(0)常用于释放资源。finalizeObject类废弃方法JVM垃圾回收前会调用该方法现已被废弃不推荐使用。5. 基本数据类型和包装类区别基本类型8种byte/short/int/long/float/double/char/boolean存栈内存、无默认null、效率高包装类基本类型的对象封装存堆内存、可null、支持泛型、提供大量工具方法自动装箱拆箱JDK5 自动转换装箱基本类型→包装类拆箱包装类→基本类型缓存机制Integer等包装类缓存-128~127数值范围内对象复用超出则新建对象二、面向对象OOP核心八股1. 面向对象四大特性封装隐藏对象内部细节对外暴露统一访问接口提高代码安全性、复用性。继承子类继承父类属性和方法实现代码复用支持单继承、多接口实现。多态同一行为不同实现分为编译多态重载、运行多态重写提高代码扩展性。抽象抽取核心共性隐藏具体实现通过抽象类/接口实现规范代码结构。2. 重载和重写的区别维度重载Overload重写Override定义同类中方法名相同、参数列表不同子类对父类非final、非private、非static方法重新实现参数列表参数个数/类型/顺序必须不同参数列表必须完全一致返回值可任意修改必须是协变返回子类类型权限无权限限制权限不能比父类更严格多态类型编译期多态运行期多态3. 抽象类和接口的区别抽象类abstract class可以有构造方法、成员变量、普通方法、抽象方法单继承一个类只能继承一个抽象类权限支持public、protected、default权限核心模板复用抽取子类通用代码接口interfaceJDK8前只能有常量和抽象方法JDK8支持默认方法、静态方法JDK9支持私有方法多实现一个类可以实现多个接口权限默认public核心行为规范定义功能标准三、Java集合框架高频八股1. ArrayList 和 LinkedList 区别底层结构ArrayList 基于动态数组LinkedList 基于双向链表查询效率ArrayList 随机查询快数组下标寻址O(1)LinkedList 只能遍历查询O(n)增删效率ArrayList 末尾增删快中间增删需移动元素LinkedList 任意位置增删只需修改指针效率更高内存占用ArrayList 存在数组扩容冗余空间LinkedList 每个节点保存前后指针占用内存更多线程安全两者均非线程安全2. HashMap 底层原理核心必背HashMap 是基于数组链表红黑树实现的键值对存储结构无序、key唯一、允许null键null值、非线程安全。存储流程根据key计算hash值通过哈希算法定位数组下标若下标位置无元素直接插入若有元素发生哈希冲突链表长度 8采用拉链法链表尾部插入节点链表长度 ≥8 且 数组容量≥64链表转换为红黑树提升查询效率链表长度 ≤6红黑树退化为链表当元素数量超过负载因子(0.75)*容量触发数组扩容扩容为原容量2倍3. HashMap JDK1.7 和 JDK1.8 核心区别底层结构1.7 数组单向链表1.8 数组单向链表红黑树插入方式1.7 头插法多线程易出现环形链表死循环1.8 尾插法哈希扰动1.8 优化hash算法减少哈希冲突扩容机制1.8 优化扩容迁移逻辑效率更高4. ConcurrentHashMap 如何保证线程安全JDK1.7分段锁机制将数组分为16个Segment每个Segment独立加锁并发度高JDK1.8CAS synchronized实现并发安全锁粒度细化到数组单个节点无冲突时CAS无锁插入有冲突时对链表/红黑树头节点加synchronized锁相比HashTable全局锁并发性能大幅提升四、多线程与并发核心八股1. 进程和线程的区别进程资源分配的最小单位独立占用内存、CPU资源进程间相互隔离开销大线程CPU调度的最小单位隶属于进程共享进程资源开销小、切换快关系一个进程至少包含一个线程多线程可提升程序并发执行效率2. sleep() 和 wait() 的区别归属类sleep() 是Thread类方法wait() 是Object类方法锁释放sleep()不释放锁wait()释放锁唤醒方式sleep() 时间到自动唤醒wait() 需被notify()/notifyAll()唤醒适用场景sleep() 线程休眠wait() 线程间通信3. synchronized 和 Lock 的区别维度synchronizedLockReentrantLock底层JVM原生锁隐式锁JDK代码实现显式锁锁释放自动释放代码执行完/异常必须手动unlock()释放锁特性可重入、不可中断、非公平可重入、可中断、可公平/非公平功能功能单一支持限时锁、条件锁功能丰富4. volatile 关键字作用volatile 是轻量级同步关键字核心两大作用保证可见性线程修改变量后立即刷新到主内存其他线程可实时感知最新值禁止指令重排避免CPU指令优化重排解决单例模式DCL双重检查锁漏洞⚠️不保证原子性无法保证复合操作i的线程安全需配合锁使用5. 线程池核心参数核心7大参数ThreadPoolExecutor核心线程数corePoolSize常驻线程数即使空闲也不会回收最大线程数maximumPoolSize线程池允许的最大线程总数空闲时间keepAliveTime非核心线程空闲超时时间超时被回收时间单位unit空闲时间单位阻塞队列workQueue存储等待执行的任务线程工厂threadFactory创建线程的工厂可自定义线程名称、优先级拒绝策略handler任务爆满时的处理策略4种默认策略五、JVM核心面试八股1. JVM 内存区域划分JVM运行时数据区分为线程私有区和线程共享区线程私有随线程创建/销毁程序计数器记录当前线程执行字节码行号唯一无OOM区域虚拟机栈存储局部变量、方法栈帧方法执行入栈结束出栈本地方法栈服务于native本地方法线程共享随JVM启动/关闭堆内存存储所有对象实例、数组GC主要回收区域方法区元空间存储类信息、常量、静态变量、即时编译代码2. GC 垃圾回收机制哪些对象可回收JVM GC 主要回收堆内存中无引用的对象回收时机内存不足、主动调用GC、定时回收。对象存活判断引用计数法对象引用数为0则回收无法解决循环引用JVM未采用可达性分析算法JVM主流以GC Roots为起点不可到达的对象判定为垃圾对象GC Roots 包含虚拟机栈局部变量对象、本地方法栈引用对象、方法区静态变量/常量引用对象3. 双亲委派模型JVM类加载机制的核心规则子类加载器收到加载请求先向上委托父类加载器加载父类无法加载再由子类加载。加载器层级启动类加载器 扩展类加载器 应用程序类加载器 自定义加载器核心作用保证核心类安全防止自定义类覆盖JDK核心类如java.lang.String实现类的全局唯一性六、Spring 核心八股1. IOC 控制反转原理传统开发开发者主动new对象主动创建依赖关系控制权在程序员。IOC控制反转将对象创建、依赖注入的控制权交给Spring容器程序被动接收对象实现解耦。核心实现Bean工厂 反射机制2. AOP 面向切面编程原理AOP 是在不修改原有业务代码的前提下对方法进行增强实现业务代码与通用日志、事务、权限等横切逻辑解耦。核心原理动态代理目标类有接口JDK动态代理目标类无接口CGLIB动态代理继承子类重写方法3. Spring Bean 生命周期完整流程实例化 → 属性填充 → 初始化 → 销毁Bean实例化Spring通过反射创建Bean对象属性填充自动装配依赖属性DI注入初始化前置处理BeanPostProcessor前置处理初始化执行InitializingBean、自定义init方法初始化后置处理BeanPostProcessor后置处理Bean就绪放入单例池供业务调用销毁容器关闭时执行DisposableBean、自定义destroy方法4. Spring Bean 作用域singleton默认单例整个Spring容器仅一个Bean实例prototype多例每次获取Bean都会新建实例request每次HTTP请求创建一个Beansession每个浏览器会话创建一个Bean七、专栏总结本文覆盖Java面试90%以上基础核心八股所有考点均为大厂校招、社招高频提问点。建议优先背诵集合、多线程、JVM、Spring四大难点模块基础模块熟记核心区别即可面试时可结合场景灵活作答。各位Java的小伙伴有需要跳槽或者面试工作的我在这里准备好了一份2026年精选的Java面试题内容都是经过精简的全部都是高频中大厂的面试真题有需要的可以点击下方名片获取