美团一面面经,JAVA后台,回馈牛客

我实在太菜了,问的不算很难,但是我答的不好
面试官很好



时长四十分钟,直接问问题,没有自我介绍

1、Hashmap的扩容机制原理,只说了1.5倍扩,因为原理我忘了
2、项目中用的啥JVM收集器,内存回收的机制,新生代老年代的两种算法,两种算法各有啥缺点,有没有搞过JVM调优(调优完全不会)
3、算法题:让我又做了一遍笔试第一题(因为他看到我的笔试试卷,知道我第一题没做出来)
4、Mysql的索引优化接触过没,一条update的语句执行过程
5、输入URL后发生了啥,如果网络不好,按照TCP协议里会怎么样,我答的是会丢包,然后超时重传,然后问我重传的时间多少,我直接说忘了
6、类加载机制说一下
#实习面经##美团##实习##Java工程师##面经#
全部评论
关于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. 有个细节可以注意一下,哈希值的获取其实是结合了高位与低位,避免了只有高位变化时候的哈希冲突,源码上好像有解释 个人理解,不一定对,有问题请指正😁
3 回复 分享
发布于 2020-03-21 22:45
hashmap不是1.5倍扩容吧,是2倍扩容吧,list才是1.5倍扩容
1 回复 分享
发布于 2020-03-20 17:18
狠人
点赞 回复 分享
发布于 2020-03-26 00:03
hashcode &len-1  2的幂次增长,这样方便位运算
点赞 回复 分享
发布于 2020-03-21 23:20
考虑阿里机会不,可内推菜鸟
点赞 回复 分享
发布于 2020-03-21 22:57
😂和arraylist弄混了吧
点赞 回复 分享
发布于 2020-03-21 16:44
两倍啊 你要知道为什么要2的倍数啊 是为了更加好得取余 定位到哪一个坑
点赞 回复 分享
发布于 2020-03-21 00:34

相关推荐

评论
5
23
分享

创作者周榜

更多
牛客网
牛客企业服务