后端答题框架贝壳互联网中厂贝壳 Java
HashMap底层的数据结构是怎么样的?
HashMap 基于数组、链表和红黑树,先 hash 定位桶位,冲突后链表或树化存储。 扩容通常按负载因子触发,容量翻倍后元素要重新分布;JDK 8 之后链表过长且数组足够大时会树化。
面试后端互联网公司面经互联网中厂贝壳
答题框架
当前只提供答题框架,不代表已经完成事实与工程边界复核。
这题可以按「结论 -> 原理 -> 场景 -> 风险」来答,重点放在后端工程里的可落地理解。
答题要点:
1. HashMap 基于数组、链表和红黑树,先 hash 定位桶位,冲突后链表或树化存储。
2. 扩容通常按负载因子触发,容量翻倍后元素要重新分布;JDK 8 之后链表过长且数组足够大时会树化。
3. 线程安全场景不能用 HashMap,ConcurrentHashMap 通过更细粒度的并发控制提升并发读写能力。
容易被追问:
- 为什么树化阈值不是很小?
- ConcurrentHashMap 读为什么快?
注意事项:
- 不要只说 HashMap 线程不安全,要说明并发写可能导致数据覆盖或结构异常。
答题练习
- 1HashMap 基于数组、链表和红黑树,先 hash 定位桶位,冲突后链表或树化存储。
- 2扩容通常按负载因子触发,容量翻倍后元素要重新分布;JDK 8 之后链表过长且数组足够大时会树化。
- 3线程安全场景不能用 HashMap,ConcurrentHashMap 通过更细粒度的并发控制提升并发读写能力。
常见错误
- 不要只说 HashMap 线程不安全,要说明并发写可能导致数据覆盖或结构异常。
可能追问
- 为什么树化阈值不是很小?
- ConcurrentHashMap 读为什么快?
来源记录
- 原始来源
- 小林coding
- 来源页面
- 贝壳 Java 面试
- 最近收录
- 2026-07-05
- 官方复核
- 贝壳 Java 面试、Java、HashMap底层的数据结构是怎么样的?、ConcurrentHashMap是怎么实现线程安全和并发的?、ConcurrentHashMap支持并发写, ConcurrentHashMap实现大小获取的size()函数是怎么实现的、线程池ThreadPoolExecutor的核心参数以及在它的生命周期中这些核心参数的作用是什么, 能描述下吗?、说一下synchronized和ReentrantLock的区别 synchronized 和 ReentrantLock 都是 Java 中提供的可重入锁:、synchronized底层原理了解过吗、JAVA里的类加载机制了解吗、类加载时, 类加载器的双亲委派机制了解吗、MySQL、你一般通过什么来判断一个字段需不需要建索引?