关注
说说我自己对这些八股的理解,有问题可以一起讨论
:
1.CurrentHashMap,面试官应该是想让你回答 JDK1.7 和 JDK1.8 的实现区别,为什么 1.8 的更好?1.7 是分段锁,但是锁的粒度还是比较大。所以 1.8 做了改进,如果目标位置上的节点为 null,就先 CAS 把节点直接放进去,避免加锁。如果目标位置存在节点,就使用 synchronized 对“头节点”加锁,接下来读写链表或红黑树就可以保证线程安全了,因为只有一个线程能访问该链表或红黑树。总结就是 CAS + synchronized 更小的锁粒度 + 避免创建 Segment 节约内存
2.哈希冲突的解决方案。开放寻址法,在数组中找到下一个位置放入元素,常见的有线性探测、二次探测、双重哈希。在 ThreadLocal 中,就采用了线性探测法;拉链法,典型的就是 hashmap;扩容,hashmap 和 ThreadLocal 都有通过扩容的方式解决哈希冲突,会设置一个负载因子,比如 0.75,达到该值就扩容。一般就是「扩容+拉链法」解决,拉链法可以解决哈希冲突问题,但哈希冲突多了性能就差了,通过适当地扩容可以降低因哈希冲突过多导致的性能问题,但不限制地扩容又浪费内存。所以要在内存和性能之间做权衡
查看原帖
28 19
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你被哪些公司秒挂过? #
9840次浏览 122人参与
# 26届的你们有几段实习? #
3791次浏览 78人参与
# 如何提高实习转正率? #
5296次浏览 103人参与
# 第一份工作应该只看薪资吗 #
153031次浏览 1534人参与
# 大厂面试初体验 #
13992次浏览 93人参与
# 你想留在一线还是回老家? #
49082次浏览 505人参与
# 你认为哪些项目算烂大街? #
3817次浏览 94人参与
# 你以为的实习VS真实的实习 #
4770次浏览 74人参与
# 选完offer后,你后悔学本专业吗 #
47938次浏览 239人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
9637次浏览 119人参与
# 你后悔自己读研吗? #
4558次浏览 122人参与
# 最难的技术面是哪家公司? #
2976次浏览 36人参与
# 拼多多工作体验 #
29495次浏览 201人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
114055次浏览 793人参与
# 月薪多少能在一线城市生存 #
5497次浏览 111人参与
# leader认为你工作不认真怎么办 #
32159次浏览 151人参与
# 如果可以,你希望哪个公司来捞你 #
104754次浏览 509人参与
# 如果公司降薪,你会跳槽吗? #
80159次浏览 588人参与
# 妈妈治愈了你哪些脆皮时刻 #
29452次浏览 321人参与
# 如果公司给你放一天假,你会怎么度过? #
17725次浏览 129人参与