IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 20220510荣耀通开实习面经 -> 正文阅读

[数据结构与算法]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博客

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:37:25  更:2022-05-12 16:39:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:54:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码