2.Java集合常见面试题总结

ArrayList 可以添加 null 值吗?

ArrayList 的扩容机制

0 -- 10 --* 1.5

Set的3种实现类

  1. HashSet
  2. LinkHashSet(按照FIFO实现,底层是哈希表+双向链表)
  3. TreeSet(红黑树,自定义排序存储)

Queue的4个接口

quque

deque

priorityQueue

BlockingQueue

Map

HashMap 和 Hashtable 的区别

只需要知道HashTable是被淘汰了的CurrentHashMap

HashMap 和 HashSet 区别

HashSet直接调用的HashMap的方法(add = put,contains = containsKey等)

HashMap 和 TreeMap 区别

多了排序的功能

HashSet 如何检查重复?

HashMap

1、1.7和1.8的区别

3个:

红黑树

尾插法

扰动次数

2、hash的模为什么是2的幂次方?

  1. 越大越好
  2. 取模时 % == & 的前提是n为2的幂次方

3、扩容机制

  1. 超过64之后就不扩容了,改用链表和红黑树(每次扩容变为原来的2倍)
  2. 链表长度大于8时变为红黑树
  3. 扩容过程中,一个红黑树会被分为两半,预估每一半的长度,如果小于6就退化为链表

ConcurrentHashMap

1.7:

  1. 分段,默认16个段,把整个表分割为16个子Hash表,同时最多允许16个线程访问
  2. 拉链法,因此链表长度可能会很长。
  3. 使用悲观锁ReentrantLock

1.8:

  1. 舍弃分段的思想,每一个槽位都是一个独立的节点,并发量取决于有多少个槽位
  2. 红黑树,访问速度会变快
  3. 使用乐观锁CAS

ConcurrentHashMap迭代器是强一致性还是弱一致性?

为什么ConcurrentHashMap不能输入null?

什么是二义性混淆?

为什么单线程可以,多线程不行

ConcurrentHashMap 能保证复合操作的原子性吗

相关推荐
沐知全栈开发几秒前
TypeScript String
开发语言
DFT计算杂谈3 分钟前
AMSET 设置多核并行计算
java·前端·css·html·css3
Gerardisite20 分钟前
CRM、ERP、OA 如何连接企业微信?QiWe 提供标准化解决方案
java·python·机器人·自动化·企业微信
城管不管21 分钟前
Maven Helper
java·macos·intellij-idea
ch.ju24 分钟前
Java程序设计(第3版)第三章——数组的动态获取
java·开发语言
Java知识技术分享35 分钟前
策略模式的两种实现:抽象类和接口
java·spring·策略模式
液态不合群38 分钟前
Redis--哨兵机制与CAP定理
java·redis·bootstrap
曹牧40 分钟前
Java:PDF文件扁平化处理
java·开发语言·pdf
灰色人生qwer41 分钟前
解决IDEA运行Java程序jdk版本不匹配问题
java·开发语言·intellij-idea
小侯不躺平.42 分钟前
C++ Boost库【3】 --类型推导
开发语言·c++