Java八股文核心知识点全解析 Java八股文核心知识点全解析目录Java基础集合框架多线程与并发JVM虚拟机Spring框架Java基础1. 和 equals 的区别比较的是地址值equals比较的是内容值。String s1 new String(hello); String s2 new String(hello); System.out.println(s1 s2); // false System.out.println(s1.equals(s2)); // true2. String为什么是不可变的String类被final修饰不可继承内部使用final char[]数组存储保证线程安全、安全性、字符串常量池优化3. 重写和重载的区别| 特性 | 重写(Override) | 重载(Overload) | |------|----------------|----------------| | 发生位置 | 子父类之间 | 同一个类中 | | 参数列表 | 必须相同 | 必须不同 | | 返回类型 | 相同或协变 | 无关 | | 访问权限 | 不能更严格 | 无关 |集合框架1. ArrayList和LinkedList的区别// ArrayList: 基于动态数组查询快增删慢 // LinkedList: 基于双向链表增删快查询慢2. HashMap底层原理JDK1.8之后数组 链表 红黑树初始容量16负载因子0.75当链表长度8且数组长度64时链表转红黑树解决哈希冲突链地址法3. ConcurrentHashMap实现原理JDK1.7分段锁Segment数组JDK1.8CAS synchronized锁单个桶多线程与并发1. 线程创建方式// 方式1继承Thread类 class MyThread extends Thread { public void run() { /* ... */ } } // 方式2实现Runnable接口 class MyRunnable implements Runnable { public void run() { /* ... */ } } // 方式3实现Callable接口有返回值 class MyCallable implements CallableString { public String call() { return result; } } // 方式4线程池 ExecutorService pool Executors.newFixedThreadPool(10);2. synchronized和Lock的区别| 特性 | synchronized | Lock | |------|--------------|------| | 释放锁 | 自动释放 | 手动释放 | | 公平性 | 非公平 | 可配置 | | 中断 | 不可中断 | 可中断 | | 条件变量 | 单一条件 | 多条件 |3. 线程池核心参数ThreadPoolExecutor( int corePoolSize, // 核心线程数 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 空闲线程存活时间 TimeUnit unit, // 时间单位 BlockingQueueRunnable workQueue, // 工作队列 ThreadFactory threadFactory, // 线程工厂 RejectedExecutionHandler handler // 拒绝策略 );JVM虚拟机1. JVM内存结构┌─────────────────────────────────┐ │ 方法区元空间 │ ├─────────────────────────────────┤ │ 堆内存 │ ├────────────┬────────────────────┤ │ 虚拟机栈 │ 本地方法栈 │ ├────────────┴────────────────────┤ │ 程序计数器 │ └─────────────────────────────────┘2. 垃圾回收算法标记-清除效率低产生内存碎片复制算法适合新生代空间利用率低标记-整理适合老年代无碎片分代收集根据对象生命周期选择不同算法3. 类加载过程加载 → 验证 → 准备 → 解析 → 初始化双亲委派模型启动类加载器 ↓ 扩展类加载器 ↓ 应用程序类加载器Spring框架1. Spring IOC和AOPIOC控制反转将对象创建交给Spring管理降低耦合度核心容器BeanFactory、ApplicationContextAOP面向切面编程将公共逻辑抽取为切面实现方式JDK动态代理、CGLIB2. Spring Bean生命周期实例化 → 属性赋值 → 初始化 → 销毁 ↓ 执行Aware接口 ↓ BeanPostProcessor ↓ init-method3. Spring事务传播机制| 传播行为 | 说明 | |---------|------| | REQUIRED | 有事务就加入没有就新建默认 | | SUPPORTS | 有事务就加入没有就非事务运行 | | MANDATORY | 必须在事务中运行 | | REQUIRES_NEW | 总是新建事务 | | NOT_SUPPORTED | 非事务运行 | | NEVER | 必须非事务运行 | | NESTED | 嵌套事务 |总结掌握以上核心知识点能够应对大部分Java面试场景。建议结合实际项目经验深入理解每个知识点的应用场景和最佳实践。持续学习不断进步相关标签: Java, 面试, 八股文, JVM, Spring