Java八股文面试题大全

Java八股文面试题大全 Java八股文面试题大全目录Java基础集合框架多线程与并发JVMSpring框架Java基础1. Java中的基本数据类型有哪些Java有8种基本数据类型整型byte(1字节)、short(2字节)、int(4字节)、long(8字节)浮点型float(4字节)、double(8字节)字符型char(2字节)布尔型boolean(1字节)2. String、StringBuilder和StringBuffer的区别| 特性 | String | StringBuilder | StringBuffer | |------|--------|---------------|--------------| | 可变性 | 不可变 | 可变 | 可变 | | 线程安全 | 安全 | 不安全 | 安全 | | 性能 | 低 | 高 | 中 |使用场景String字符串不需要频繁修改时StringBuilder单线程环境下频繁修改字符串StringBuffer多线程环境下频繁修改字符串3. 和equals的区别比较的是内存地址引用是否相同equals()默认比较内存地址但String等类重写了该方法比较内容是否相同String s1 new String(hello); String s2 new String(hello); System.out.println(s1 s2); // false System.out.println(s1.equals(s2)); // true集合框架1. ArrayList和LinkedList的区别| 特性 | ArrayList | LinkedList | |------|-----------|------------| | 底层结构 | 动态数组 | 双向链表 | | 随机访问 | O(1) | O(n) | | 插入删除 | O(n) | O(1) | | 内存占用 | 较少 | 较多 |2. HashMap的底层原理JDK 1.8之前数组 链表JDK 1.8及之后数组 链表 红黑树关键点初始容量16负载因子0.75当链表长度≥8且数组长度≥64时链表转换为红黑树扰动函数(h key.hashCode()) ^ (h 16)3. ConcurrentHashMap的实现原理JDK 1.7分段锁SegmentJDK 1.8CAS synchronized锁粒度更细只锁链表头节点多线程与并发1. 线程的创建方式继承Thread类实现Runnable接口实现Callable接口有返回值使用线程池2. synchronized和Lock的区别| 特性 | synchronized | Lock | |------|--------------|------| | 实现方式 | JVM层面 | Java API层面 | | 锁释放 | 自动释放 | 手动释放 | | 锁状态 | 无法判断 | 可判断 | | 公平性 | 非公平 | 可选公平/非公平 |3. 线程池的核心参数public ThreadPoolExecutor( int corePoolSize, // 核心线程数 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 空闲线程存活时间 TimeUnit unit, // 时间单位 BlockingQueueRunnable workQueue, // 工作队列 ThreadFactory threadFactory, // 线程工厂 RejectedExecutionHandler handler // 拒绝策略 )JVM1. JVM内存结构堆存放对象实例GC主要区域栈方法调用、局部变量方法区类信息、常量、静态变量程序计数器当前线程执行的字节码行号本地方法栈Native方法服务2. 垃圾回收算法标记-清除效率低产生内存碎片复制算法适合新生代浪费空间标记-整理适合老年代无碎片分代收集新生代用复制老年代用标记-清除/整理3. 类加载过程加载 → 验证 → 准备 → 解析 → 初始化 → 使用 → 卸载双亲委派模型Bootstrap ClassLoaderExtension ClassLoaderApplication ClassLoaderSpring框架1. Spring IOC和AOPIOC控制反转对象创建权交给Spring容器通过DI依赖注入实现构造器注入、Setter注入、注解注入AOP面向切面编程将通用逻辑从业务代码中抽离实现JDK动态代理、CGLIB代理2. Spring Bean的作用域| 作用域 | 说明 | |--------|------| | singleton | 单例默认 | | prototype | 多例 | | request | 每次HTTP请求创建一个Bean | | session | 同一个Session共享一个Bean | | application | ServletContext生命周期 |3. Spring事务管理隔离级别READ_UNCOMMITTEDREAD_COMMITTEDREPEATABLE_READMySQL默认SERIALIZABLE传播行为REQUIRED默认SUPPORTSMANDATORYREQUIRES_NEW总结本文总结了Java面试中最常见的八股文知识点包括Java基础、集合框架、多线程、JVM和Spring等核心内容。建议结合实际项目经验深入理解每个知识点在面试中展示系统性思考能力。