# 八股-集合类
## 面试题
- ArrayList、LinkedList与Vector的区别?
- ArrayList的subList方法有什么需要注意的地方吗?
- ArrayList的序列化是怎么实现的?
- ConcurrentHashMap为什么在JDK 1.8中废弃分段锁?
- ConcurrentHashMap为什么在JDK1.8中使用synchronized而不是ReentrantLock
- ConcurrentHashMap在哪些地方做了并发控制
- ConcurrentHashMap是如何保证fail-safe的?
- ConcurrentHashMap是如何保证线程安全的?
- HashMap、Hashtable和ConcurrentHashMap的区别?
- HashMap在get和put时经过哪些步骤?
- HashMap是如何扩容的?
- HashMap用在并发场景中有什么问题?
- HashMap的hash方法是如何实现的?
- HashMap的remove方法是如何实现的?
- HashMap的容量设置多少合适?
- HashMap的数据结构是怎样的?
- JDK1.8中HashMap有哪些改变?
- Java 8中的Stream用过吗?都能干什么?
- Java中的集合类有哪些?如何分类的?
- Set是如何保证元素不重复的
- Stream的并行流是如何实现的?
- hash冲突通常怎么解决?
- 为什么ConcurrentHashMap不允许null值?
- 为什么HashMap的Cap是2^n,如何保证?
- 为什么HashMap的默认负载因子设置成0.75
- 为什么在JDK8中HashMap要转成红黑树
- 什么是COW,如何保证的线程安全?
- 什么是fail-fast?什么是fail-safe?
- 你能说出几种集合的排序方式?
- 同步容器(如Vector)的所有操作一定是线程安全的吗?
- 如何将集合变成线程安全的?
- 遍历的同时修改一个List有几种方式?