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

全部评论

相关推荐

📍面试公司:虾皮🕐面试时间:1.06💻面试岗位:后端开发❓面试问题:1. 自我介绍2. 实习介绍3.  对kafka了解多少4. 如何保证消息不丢失5. 消息幂等怎么保证的6. 消息有序性怎么保证7. kafka是支持水平扩展的,那么我可以无限增加consumer数量去增加消费能力吗8. 消费者数量大于分区数量会出现什么情况9. 他会竞争吗,怎么竞争的呢10. kafka里面有一种leader和fowller这种概念,他的leader是怎么选举的,如果leader挂了,之后怎么选举,举一个例子11. kafka是支持多分区的,他是保证所有partition都写成功后返回,还是自己写成功后就返回,就认为成功了12. 你们mysql用的那种存储引擎13. innodb和myisam的区别14. 事物的四大特性怎么实现的15. binlog日志的作用16. redolog日志的呢17. MVCC机制的原理18. MVCC能解决幻读的问题吗19. 执行一条select语句时mysql内部执行的过程20. 在哪一阶段判断要不要走索引、21. 什么情况下不会走索引22. 怎么分析SQL的执行计划23. 实习中redis怎么用的24. redis持久化机制25. 你们redis用的单机还是集群,单机的话有什么问题26. 集群跟单机或主从的区别27. 集群支持多DB吗28. 集群怎么保证可靠性的29. 集群能解决那种大key问题吗30. 像一个key可能会比较大,比如一个userId下面挂了很多信息,它在单机和集群的表现是什么样子31. 我有一个一亿个数据的文件,每一行他是一个数字这样,怎么把这个文件里的数据排序32. 手撕:打家劫舍首尾相连版33. 反问
发面经攒人品
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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