栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

20220510荣耀通开实习面经

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

20220510荣耀通开实习面经

没答出来的问题:

1. HashMap的使用中,equals和hashcode的关系是怎么样的?(基础题,没答出来)

解决:去读一下了HashMap的源码,其中每一个Node都有一个hash字段,由key值算出;当需要重写equals方法来比较键的对象值相等的时候,同时也要去重写hashcode函数的。因为当插入一个新的键值对的时候putVal函数:

先看table是否为空,若为空,则resize();

再看此要插入的键的hash对应的桶是否为空,若为空,直接插入;

最后(看链表的情况)依次比较此桶的链表的每个节点和要插入的新节点:

1)先比较此节点和新节点的hash值(key算出)

2)只有当两个hash值相等时,再比较key的地址是否一样或者key的equals是否相等

3)当两个条件都满足的时候,就会替换调此键值对。

所以,当map.put("hello",1)后,再map.put("hello",2),因为String重写了equals比较值,也重写了hashcode(值相等时,hash值也相等),这样在putVal中的if条件才会满足,那map中的(“hello”,1)会替换成(“hello”,2)。

这样,使用get(key)才能拿到这个唯一的键对应的值。

另外,比较的时候优先使用hash来比较,速度明显会快很多。

参考博客:

Java中重写equals方法为什么要重写hashcode方法? (baidu.com)

2. 并发量更大的时候怎么解决?(简单的乐观锁cas几次不能满足)

3. 秒杀问题怎么解决并发安全问题?

参考博客:

(30条消息) redis解决商品秒杀问题_WHJwhj552200的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873699.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号