求上岸公务员! level
获赞
146
粉丝
8
关注
3
看过 TA
46
门头沟学院
2021
Java
IP属地:湖北
暂未填写个人简介
私信
关注
2020-10-23 00:09
门头沟学院 Java
0 点赞 评论 收藏
分享
2020-09-29 11:31
已编辑
门头沟学院 Java
0 点赞 评论 收藏
分享
2020-09-15 16:27
已编辑
门头沟学院 Java
一只大脑斧:你三面完顺丰链接还有效吗
0 点赞 评论 收藏
分享
2020-04-28 15:36
已编辑
门头沟学院 Java
0 点赞 评论 收藏
分享
2020-03-20 18:10
已编辑
门头沟学院 Java
我实在太菜了,问的不算很难,但是我答的不好 面试官很好 时长四十分钟,直接问问题,没有自我介绍 1、Hashmap的扩容机制原理,只说了1.5倍扩,因为原理我忘了 2、项目中用的啥JVM收集器,内存回收的机制,新生代老年代的两种算法,两种算法各有啥缺点,有没有搞过JVM调优(调优完全不会) 3、算法题:让我又做了一遍笔试第一题(因为他看到我的笔试试卷,知道我第一题没做出来) 4、Mysql的索引优化接触过没,一条update的语句执行过程 5、输入URL后发生了啥,如果网络不好,按照TCP协议里会怎么样,我答的是会丢包,...
SC11010:关于hashmap的翻倍扩容,我有一点理解,抛砖引玉,同学你可以参考一下 1. 1.8之前用头插法,因为头插法快,毕竟拉链法是没有维护尾指针的(印象中应该是没有),每次尾插是需要定位到尾节点的 2. 1.8针对hashmap并发环境下的隐患,改成了尾插,但是如1所说,性能是个问题 3. 1.8的容量要求是2的幂次,然后翻倍扩容,这样会出现这么一种情况:容量n的表,位置a的元素,在扩容后只会出现在两个地方,a或n+a,举个例子,容量是4的表,0号位置的元素可能是0、4、8,如果翻倍扩容,0--0,4--4,8--0,但是如果是一半扩容,0--0,4--4,8--1 4. 你去看一下1.8的扩容,它是先存储在一个链表中(因为按照3,所有需要迁移的元素都会到同一个位置),最后在把链表放到散列位置的。这样就解决了2里面的性能问题。 5. 其实如果不是2的幂次,定位散列位置也很快,都是(newSize-1)&hashCode 6. 有个细节可以注意一下,哈希值的获取其实是结合了高位与低位,避免了只有高位变化时候的哈希冲突,源码上好像有解释 个人理解,不一定对,有问题请指正😁
投递美团等公司10个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务