# 八股-集合类 ## 面试题 - 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有几种方式?