| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 全网最全HashMap面试题整理 -> 正文阅读 |
|
[数据结构与算法]全网最全HashMap面试题整理 |
话不多说,直接看题 1.JDK1.7版本,HashMap的数据结构是什么?答:数组加单向链表 2.什么叫做Hash桶答:数组中的单向链表 3.HashMap的数组长度为什么必须是2的幂?答:因为在计算元素下标(索引)时是根据hash&数组长度-1,如果不是数组长度不是2的幂,那么数组长度-1的二进制额某一位可能不是一,就会出现某些下标永远存不到数据 4.HashMap的默认负载因子是多少,作用是什么?答:默认的负载因子是0.75,,作用是数组长度*负载因子=阈值(扩容条件) 5.HashMap的默认负载因子为什么是0.75?答:官方解释是时间与空间的平衡 如果负载因子过大,就会牺牲时间,利用空间 如果负载因子过小,就会牺牲空间,利用时间 6.HashMap数组最大长度是多少?答:1<<30 7.HashMap数组最大长度为什么是1 << 30?答:因为HashMap的数组长度必须是2的幂,而数组的最大长度是int类型,即Integer.Max,Integer.Max为1<<31 - 1,所以HashMap的数组长度只能是1<<30 8.什么叫做Hash碰撞/冲突?答:hash值相同,则计算出的下标就相同,这样就造成了hash碰撞 9.HashMap何时扩容?答:当元素个数>=阈值时就会扩容 10.HashMap扩容机制是什么?答:原来的两倍 11.HashMap存入null键的位置?答:下标为0的地方 12.什么叫做Hash回环?答:在多线程模式下,当一个线程不断的遍历集合,另一个线程不断的添加数据,添加数据就会扩容,则就会出现hash回环。 注意:Hash回环参数完全就该程序员背锅,因为HashMap中明确说明了HashMap不是一个线程安全的 13.JDK1.7版本和JDK1.8版本的HashMap的区别答:1.7中HashMap底层是数组+单向链表 且单向链表中插入元素是用头插法 1.8中HashMap底层是数组+单向链表+红黑树 且单向链表中插入元素是用尾插法 1.7中是运用散列算法计算hash值,而1.8中是通过低16^高16位计算hash值,使其更加散列 14.JDK1.8版本HashMap为什么添加红黑树的数据结构?答:因为链表查询慢,红黑树查询快 15.JDK1.8版本什么时候由数组+链表变成数组+红黑树答:当链表的长度>8且数组元素>64就会由链表转换为红黑树 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 1:36:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |