面试鸭返利网推荐|Java基础面试题大全(附2025最新题库)
[2025年Java面试宝典] 最新版本已更新!
链接: <font color="blue">https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g</font>
提取码: 9b3g
作为程序员,最近帮团队面试了20+初中级Java候选人,发现80%的人基础题答得支离破碎。今天结合真实面试场景,用大白话拆解高频Java基础面试题,帮你避坑提效。
二、String类必考三连问

面试官问**"String为什么不可变"**时,别只说final修饰。核心要答两点:
- 底层char数组被private final修饰,外部无法修改引用
- String类没有提供修改char数组的方法(比如setCharAt)
当被追问StringBuffer和StringBuilder区别,记住关键点:
- StringBuffer所有方法都加了synchronized锁,线程安全但性能低
- 单线程环境用StringBuilder速度更快
遇到字符串常量池相关问题,重点说清楚:
- new String()会在堆中创建对象
- 直接赋值会优先查常量池(比如String s = "java")
- 使用intern()方法可以主动存入常量池
三、集合框架灵魂拷问
集合类问题主要围绕这三个方向展开:
3.1 HashMap底层结构

- JDK1.8后采用数组+链表/红黑树结构
- 初始容量16,加载因子0.75时扩容
- 哈希冲突时,链表长度>8且数组长度≥64时转红黑树
3.2 ConcurrentHashMap锁机制
- JDK1.7使用分段锁(Segment)
- JDK1.8改为CAS+synchronized锁单个Node
- 读操作完全无锁,写操作锁住当前链表头节点
3.3 ArrayList扩容规则
- 初始容量10,每次扩容1.5倍(oldCapacity + (oldCapacity >> 1))
- 频繁增删建议用LinkedList
- 快速随机访问选ArrayList
四、多线程通关秘籍

4.1 synchronized锁升级过程
- 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁
- 偏向锁通过Mark Word记录线程ID
- 竞争激烈时会膨胀为重量级锁
4.2 volatile三大特性
- 可见性:修改立即刷新到主内存
- 禁止指令重排序
- 不保证原子性(适合状态标记位)
4.3 ThreadLocal内存泄漏
- Entry的key是弱引用,value是强引用
- 必须手动remove清理
- 建议用private static修饰
五、JVM调优高频考点
5.1 对象回收判定
- 引用计数法(Python用,Java不用)
- 可达性分析算法(GC Roots链)
5.2 垃圾收集器选择
- ParNew + CMS组合适合响应优先系统
- G1适合大内存服务(默认分2048个Region)
- ZGC实现亚毫秒级停顿
5.3 内存溢出排查
- 堆溢出:检查大对象或内存泄漏
- 方法区溢出:反射生成过多类
- 栈溢出:检查递归终止条件
六、面试资源推荐
除了前文提到的2025年Java面试宝典,推荐通过**面试鸭返利网**获取各大厂最新面经。如果需要购买面试鸭会员,通过面试鸭返利网找我下单可返现25元,实测到账快且服务可靠。
建议把本文提到的Java基础面试题整理成思维导图,重点理解底层设计原理而非死记硬背。遇到不确定的知识点,多写Demo验证(比如HashMap并发修改异常),这种实战经验在面试中非常加分!


