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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> JavaSE——基础知识回顾14之集合面试题(很重要) -> 正文阅读

[数据结构与算法]JavaSE——基础知识回顾14之集合面试题(很重要)


前言

这是最近我通过观看并理解几个集合底层源码后得到的一些高概率面试题以及答案,很重要,建议熟记于心


提示:以下是本篇文章正文内容,下面案例可供参考

一、ArrayList集合底层部分

1、ArrayList 的底层初始化容量为 10
2、ArrayList的底层一维数组的最大长度为:Integer.MAX_VALUE -8; (21亿多-8)其中这个“-8”是用来存储数组的头部信息的
3、ArrayLIst的扩容机制, 为原长度的1.5倍。

二、LinkedList集合底层

1、注意Node节点类(这个不是太大可能性,需要的话可以在B站上看看关于Node节点类的知识,不难 很简单)

三、HashMap(非常重要的部分)

1、JDK1.7版本,HashMap的数据结构是什么?
答:单向链表+ 数组
2、HashMap中数组的默认初始化容量是多少?
答初始容量为(DEFAULT_INITIAL_CAPACITY,DEFAULT_LOAD_FACTOR)为16,必须是2的幂。
3、什么叫作Hash桶?
答:数组中的单向链表
4、HashMap的数组长度为什么必须是2的幂?
答:计算元素存在数组中下标的算法:hash值&数组长度-1,如果数组长度不是2的幂,减1过后而精致的某一位可能出现0,导致数组某个位置永远存不到数据
5、HashMap的默认负载因子是多少,作用是什么?
答:负载因子:0.75
作用:数组长度-负载因子=阈值(扩容条件)

6、HashMap的默认负载因子(loadFactor)为什么是 0.75?
答:取得了时间与空间的平衡。
假设负载因子过大,导入数组装满后才扩容,牺牲时间,利用空间。
假设负载因子过小,导致数组装载较少内容就扩容,牺牲空间,利用时间

7、HashMap数组最大长度是多少?为什么是这么多?
答:最大长度为:1<<30,因为数组长度必须是2的幂并且HashMap数组最大长度的变量为int类型为了不超出界限,所以1<<30
8、什么叫作Hash碰撞?
答:两个对象的hash值一样,导致在数组中的下标一样
9、HashMap何时扩容?
元素个数>=阈值,并且存入数据的位置不等于null
10、HashMap的扩容机制是什么?
答:是原来的2倍
11、HashMap存入null键的位置?
答:hash数组下标为0的位置。
12、什么叫作hash回环?
答:Hash回环(也称Hash死循环)出现原因:多线程下,线程1不断添加新的数据导致HashMap扩容(数据的迁移)
线程2:不断地遍历,因此在多线程下要避免这个问题。

13、JDK1.7版本与JDK1.8版本的HashMap的区别?
答:JDK1.7:数组+链表(头插法),通过散列算法获取hash值
JKD1.8:数组+链表+红黑树(尾插法),通过低16位^高16位让hash值更加散列

14、JDK1.8版本HashMap为什么添加红黑树的数据结构?
答:因为链表查询慢,红黑树查询快
15、JDK1.8版本什么时候由 数组+链表变成数组+红黑树
答:当链表长度>8的时候并且数组长度>64,从数组+链表变成数组+红黑树
16、JDK1.8版本为什么链表长度大于8时,变成数组+链表+红黑树
答:因为泊松分布(统计概率学),当红黑树里的数据小于6时,又会将数组+红黑树变成数组+链表

总结

今天的内容为以上部分,后续如有补充我会按时添加进来
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 01:30:19  更:2021-08-17 01:30:32 
 
开发: 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/25 21:21:27-

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