Java面试现场:从简单到复杂
面试场景
某互联网大厂面试现场,面试官正襟危坐,程序员谢飞机坐在对面,神情专注。
问题1:Java中的基本数据类型有哪些?
谢飞机:有 byte、short、int、long、float、double、char、boolean。它们都是值类型,直接存储值。
✅ 回答正确,清晰简洁。
问题2:请解释Java中的HashMap原理。
谢飞机:HashMap基于哈希表实现,通过key的hashCode计算索引位置,用链表或红黑树处理冲突。当链表长度超过8时转为红黑树,提高查找效率。
✅ 基本原理正确,提到扩容和红黑树优化。
问题3:如何保证HashMap线程安全?
谢飞机:可以用ConcurrentHashMap,它通过分段锁(Segment)机制实现线程安全。或者用Collections.synchronizedMap()包装,但性能较差。
❌ 表现犹豫,未准确说出JDK8后使用CAS+synchronized替代分段锁。
答案要点
- 基本数据类型共8种,直接存储值。
- HashMap基于哈希表,解决冲突用链表/红黑树,扩容阈值为0.75。
- 线程安全方案:ConcurrentHashMap(推荐)、synchronizedMap(不推荐)。
📌 建议深入学习JDK8+的HashMap源码实现,掌握并发设计思想。