大厂Java基础面试重在理解与应用,而非死记硬背;需逻辑清晰、边界明确、联系实际场景,如解释==与equals要结合String/Integer重写、HashMap key要求、类型提升规则(s1 += 1合法而s1 = s1 + 1报错)、StringBuilder/StringBuffer对比需涵盖可变性、线程安全、适用场景,以及HashMap转红黑树的阈值设定与性能权衡。

大厂Java基础面试不考死记硬背,而是看你怎么理解、怎么用。重点不是答对所有题,而是逻辑清晰、边界明确、能联系实际场景。
紧扣核心概念,别掉进术语陷阱
比如问“== 和 equals 的区别”,光说“==比地址,equals比内容”不够。得说明:String、Integer等包装类重写了equals,所以“abc”.equals(“abc”)为true;但new String(“abc”) == new String(“abc”)为false——因为是两个不同对象。再补一句:如果自定义类要用HashMap做key,就必须同时重写equals和hashCode,否则可能找不到元素。
代码细节要经得起推敲
像“short s1 = 1; s1 = s1 + 1; 有错吗?”这种题,本质考Java的类型提升规则。s1+1会自动提升为int,赋值给short需强制转换,所以编译报错;而s1 += 1 是复合赋值,编译器自动处理了类型收缩,合法。类似还有float f = 3.4(错误,3.4是double字面量,需写3.4f)、Math.round(-11.5)结果是-11(四舍五入向正无穷方向取整)。
对比类问题要列清维度
遇到“String、StringBuilder、StringBuffer区别”,别只背“可变/不可变”。直接按三栏说:
- 是否可变:String不可变,后两者可变;
- 线程安全:String天然线程安全,StringBuffer方法加了synchronized,StringBuilder无同步;
- 适用场景:拼接少用String,单线程高频拼接用StringBuilder,多线程环境才选StringBuffer。
原理类问题要讲清“为什么”
问“HashMap为什么用红黑树替代链表”,不能只答“为了提高查找效率”。要点出:当链表长度≥8且数组长度≥64时转树,是因为链表查找是O(n),红黑树稳定在O(log n);但长度太短时建树开销反而更大,所以设阈值。再提一句:TreeMap底层也是红黑树,但它是有序的,而HashMap不保证顺序。
立即学习“Java免费学习笔记(深入)”;


















