Hash面试题整理

本文介绍了Hash算法的概念,如MD5和SHA1,以及在HashMap中的应用。讨论了HashMap的工作原理,包括碰撞处理、get()和put()方法的细节,以及resize和负载因子的作用。在碰撞时,HashMap通过链表或红黑树解决冲突。当HashMap达到一定负载因子时,会发生rehashing以保持效率。
摘要由CSDN通过智能技术生成

今天依旧是元气满满的小黄鸭,礼拜六?不存在的

1、什么是hash?

Hash:是一种信息摘要算法,它还叫做哈希,或者散列。我们平时使用的MD5,SHA1都属于Hash算法,通过输入key进行Hash计算,就可以获取key的HashCode(),比如我们通过校验MD5来验证文件的完整性。

对于HashCode,它是一个本地方法,实质就是地址取样运算

 

2、什么是碰撞?

好的Hash算法可以出计算几乎出独一无二的HashCode,如果出现了重复的hashCode,就称作碰撞;

就算是MD5这样优秀的算法也会发生碰撞,即两个不同的key也有可能生成相同的MD5。


3、“你知道HashMap的工作原理吗?” “你知道HashMap的get()方法的工作原理吗?”

  • HashMap 是一个散列桶(数组和链表),它存储的内容是键值对 key-value 映射
  • HashMap 采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改
  • HashMap 是非 synchronized,所以 HashMap 很快
  • HashMap 可以接受 null 键和值,而 Hashtable 则不能(原因就是 equlas() 方法需要对象,因为 HashMap 是后出的 API 经过处理才可以)

Has

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值