news 2026/5/16 11:07:39

Java八股文面试题大全

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java八股文面试题大全

Java八股文面试题大全

目录

  1. Java基础
  2. 集合框架
  3. 多线程与并发
  4. JVM
  5. Spring框架

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:分段锁(Segment)
  • JDK 1.8:CAS + synchronized(锁粒度更细,只锁链表头节点)

多线程与并发

1. 线程的创建方式

  1. 继承Thread类
  2. 实现Runnable接口
  3. 实现Callable接口(有返回值)
  4. 使用线程池

2. synchronized和Lock的区别

| 特性 | synchronized | Lock | |------|--------------|------| | 实现方式 | JVM层面 | Java API层面 | | 锁释放 | 自动释放 | 手动释放 | | 锁状态 | 无法判断 | 可判断 | | 公平性 | 非公平 | 可选公平/非公平 |

3. 线程池的核心参数

public ThreadPoolExecutor( int corePoolSize, // 核心线程数 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 空闲线程存活时间 TimeUnit unit, // 时间单位 BlockingQueue<Runnable> workQueue, // 工作队列 ThreadFactory threadFactory, // 线程工厂 RejectedExecutionHandler handler // 拒绝策略 )

JVM

1. JVM内存结构

  • :存放对象实例,GC主要区域
  • :方法调用、局部变量
  • 方法区:类信息、常量、静态变量
  • 程序计数器:当前线程执行的字节码行号
  • 本地方法栈:Native方法服务

2. 垃圾回收算法

  1. 标记-清除:效率低,产生内存碎片
  2. 复制算法:适合新生代,浪费空间
  3. 标记-整理:适合老年代,无碎片
  4. 分代收集:新生代用复制,老年代用标记-清除/整理

3. 类加载过程

加载 → 验证 → 准备 → 解析 → 初始化 → 使用 → 卸载

双亲委派模型

  • Bootstrap ClassLoader
  • Extension ClassLoader
  • Application ClassLoader

Spring框架

1. Spring IOC和AOP

IOC(控制反转)

  • 对象创建权交给Spring容器
  • 通过DI(依赖注入)实现:构造器注入、Setter注入、注解注入

AOP(面向切面编程)

  • 将通用逻辑从业务代码中抽离
  • 实现:JDK动态代理、CGLIB代理

2. Spring Bean的作用域

| 作用域 | 说明 | |--------|------| | singleton | 单例(默认) | | prototype | 多例 | | request | 每次HTTP请求创建一个Bean | | session | 同一个Session共享一个Bean | | application | ServletContext生命周期 |

3. Spring事务管理

隔离级别

  • READ_UNCOMMITTED
  • READ_COMMITTED
  • REPEATABLE_READ(MySQL默认)
  • SERIALIZABLE

传播行为

  • REQUIRED(默认)
  • SUPPORTS
  • MANDATORY
  • REQUIRES_NEW

总结

本文总结了Java面试中最常见的八股文知识点,包括Java基础、集合框架、多线程、JVM和Spring等核心内容。建议结合实际项目经验深入理解每个知识点,在面试中展示系统性思考能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 11:06:04

3ds Max建模学习心得

在踏入3ds Max的虚拟世界之前&#xff0c;我们往往容易陷入一个误区&#xff0c;认为建模仅仅是枯燥的软件操作与指令堆砌。然而&#xff0c;当你真正沉下心来完成一个高精细度的作品时&#xff0c;你会发现这其实是一场技术与艺术深度交融的奇妙旅程。3ds Max绝不仅仅是一款冰…

作者头像 李华
网站建设 2026/5/16 11:04:24

星露谷物语SMAPI模组加载器:5分钟快速安装与完全使用指南

星露谷物语SMAPI模组加载器&#xff1a;5分钟快速安装与完全使用指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 你是否曾经因为星露谷物语模组安装复杂、兼容性问题频发而头疼&#xff1f;模组…

作者头像 李华
网站建设 2026/5/16 11:02:32

Cursor-Sisyphus:基于结构化提示词工程,打造自动化AI编程工作流

1. 项目概述&#xff1a;一个为开发者设计的“西西弗斯”式代码助手如果你是一名开发者&#xff0c;尤其是经常使用 Cursor 这类 AI 驱动的代码编辑器的朋友&#xff0c;那么你一定对“代码生成-审查-修改”这个循环深有体会。AI 助手能快速生成代码片段&#xff0c;但生成的代…

作者头像 李华
网站建设 2026/5/16 11:02:30

SMILE-factory开源项目:基于深度学习的表情驱动技术实践指南

1. 项目概述&#xff1a;一个让表情包“活”起来的开源工厂最近在折腾一些图像生成和动画相关的项目&#xff0c;偶然在GitHub上翻到了一个叫“SMILE-factory”的仓库&#xff0c;作者是leehanchung。光看名字&#xff0c;你可能会觉得这是个什么“微笑工厂”&#xff0c;听起来…

作者头像 李华
网站建设 2026/5/16 11:01:16

绕过硬件限制:Win11 22H2 升级安装的实战技巧与避坑指南

1. 为什么我们需要绕过Win11的硬件检测&#xff1f; 每次Windows推出新版本&#xff0c;总有一批老设备被官方"抛弃"。微软对Win11 22H2的硬件要求堪称史上最严&#xff1a;必须支持TPM 2.0、CPU需第八代英特尔或Zen2以上、至少4GB内存和64GB存储。我去年就用一台201…

作者头像 李华
网站建设 2026/5/16 11:01:09

Arm Neoverse CMN-650架构解析与多核一致性优化实践

1. Arm Neoverse CMN-650架构概览在现代多核处理器设计中&#xff0c;缓存一致性是确保系统正确性和性能的关键要素。Arm Neoverse CMN-650作为第二代一致性网状网络(Coherent Mesh Network)解决方案&#xff0c;通过创新的拓扑结构和协议优化&#xff0c;为数据中心和基础设施…

作者头像 李华