Java 面试八股文(必备)

一、Java 基础(必问)

1. Java 的特点有哪些?

答:Java 是一门面向对象的编程语言,具有以下特点:1)跨平台:一次编写,到处运行(JVM)2)面向对象:封装、继承、多态3)自动内存管理:垃圾回收机制(GC)4)安全性强:沙箱机制、字节码验证5)多线程支持:线程机制、并发包6)丰富的标准库:集合、IO、网络、并发等

2. JDK、JRE、JVM 区别?

答:

  • JVM:Java 虚拟机,负责运行 Java 字节码
  • JRE:Java 运行环境(包含 JVM + 核心类库)
  • JDK:Java 开发工具包(包含 JRE + 编译器 javac 等开发工具)

3. 面向对象三大特性?

答:1)封装:隐藏实现细节,提供接口2)继承:子类继承父类属性与方法3)多态:同一方法不同实现(运行时绑定)

我总结的java面试八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/0n9XOd

二、集合框架(高频)

1. List、Set、Map 区别?

答:

  • List:有序可重复(ArrayList、LinkedList)
  • Set:无序不可重复(HashSet、TreeSet)
  • Map:键值对映射(HashMap、TreeMap)

2. ArrayList 与 LinkedList 区别?

答:

  • ArrayList:基于数组,查询快,插入删除慢
  • LinkedList:基于双向链表,插入删除快,查询慢
  • 总结:读多写少用 ArrayList写多读少用 LinkedList

3. HashMap 原理?

答:HashMap 基于 数组 + 链表/红黑树实现:1)通过 key 的 hashCode 计算 hash 值2)根据 hash 值定位数组下标3)若发生冲突,则用链表或红黑树存储4)当链表长度 > 8 且数组长度 > 64 时,链表转红黑树

三、并发(必问)

1. synchronized 与 Lock 区别?

答:

  • synchronized:内置锁,JVM 层面实现,简单易用
  • Lock:显式锁(ReentrantLock),可响应中断、可公平锁、可尝试加锁
  • 总结:业务简单用 synchronized业务复杂用 Lock

2. volatile 关键字作用?

答:1)保证 可见性:写入的值会立即刷新到主内存2)禁止指令重排(部分情况下)3)不保证原子性(需要结合锁或 CAS)

3. Java 内存模型(JMM)?

答:Java 内存模型由 主内存 + 工作内存 构成:

  • 变量存放在主内存
  • 线程操作变量时先拷贝到工作内存
  • 修改后再同步回主内存 核心问题:可见性、原子性、有序性

四、JVM(面试核心)

1. JVM 内存结构?

答:

  • 方法区:存放类信息、常量、静态变量
  • :对象实例存放地(GC 主要区域)
  • :方法调用、局部变量
  • 本地方法栈:Native 方法调用
  • 程序计数器:记录线程执行位置

2. 垃圾回收算法?

答:

  • 标记-清除
  • 复制算法(新生代)
  • 标记-整理(老年代)

3. 常见垃圾回收器?

答:

  • Serial:单线程,适合小内存
  • Parallel:多线程,吞吐量高
  • CMS:低停顿
  • G1:兼顾吞吐量与停顿(推荐)

五、数据库(必问)

1. SQL 索引的类型?

答:

  • B+Tree 索引:最常用
  • Hash 索引:等值查询快
  • 全文索引:文本搜索
  • 联合索引:多个字段组合

2. 事务的四大特性(ACID)?

答:

  • Atomicity(原子性)
  • Consistency(一致性)
  • Isolation(隔离性)
  • Durability(持久性)

3. 事务隔离级别?

答:

  • READ UNCOMMITTED(读未提交)
  • READ COMMITTED(读已提交)
  • REPEATABLE READ(可重复读)
  • SERIALIZABLE(串行化)

六、微服务与框架(加分项)

1. Spring 的核心是什么?

答:Spring 的核心是 IOC(控制反转)AOP(面向切面编程)

  • IOC:容器负责创建对象、管理依赖
  • AOP:横切关注点(事务、日志、权限)

2. 什么是依赖注入?

答:依赖注入是把对象的依赖由容器注入,而不是对象自己创建。

七、面试“答题技巧”八股总结

1)结构化回答

  • 先给结论
  • 再解释原因
  • 最后举例或补充

2)遇到不会的问题

  • 不要慌
  • 先说出你知道的相关概念
  • 再说明你会怎么查或怎么验证

3)面试官喜欢听的表达

  • “我理解的是……”
  • “通常我们会这样处理……”
  • “在项目中我遇到过类似情况……”

Java 面试八股文的本质不是死记硬背,而是 把常见知识点形成可复用的回答结构。只要掌握“结论—原理—应用—场景”的答题模板,你就能在面试中稳住节奏。

全部评论

相关推荐

评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务