1.数组与集合区别,用过哪些?说说Java中的集合?Java中的线程安全的集合是什么?Collections和Collection的区别?集合遍历的方法有哪些?
2.List?讲一下java里面list的几种实现,几种实现有什么不同?list可以一边遍历一边修改元素吗?list如何快速删除某个指定下标的元素?
3.Arraylist和LinkedList的区别,哪个集合是线程安全的?ArrayList线程安全吗?把ArrayList变成线程安全有哪些方法?为什么ArrayList不是线程安全的,具体来说是哪里不安全?ArrayList 和 LinkedList 的应用场景?ArrayList的扩容机制说一下?线程安全的 List, CopyonWriteArraylist是如何实现线程安全的
4.Map?如何对map进行快速遍历?HashMap实现原理介绍一下?了解的哈希冲突解决方法有哪些?HashMap是线程安全的吗? hashmap的put过程介绍一下?HashMap的put(key,val)和get(key)过程?
5.hashmap 调用get方法一定安全吗?HashMap一般用什么做Key?为啥String适合做Key呢?为什么HashMap要用红黑树而不是平衡二叉树?hashmap key可以为null吗?
6.重写HashMap的equal和hashcode方法需要注意什么?重写HashMap的equal方法不当会出现什么问题?列举HashMap在多线程下可能会出现的问题?
7.HashMap的扩容机制介绍一下?HashMap的大小为什么是2的n次方大小呢?往hashmap存20个元素,会扩容几次?说说hashmap的负载因子?
8.Hashmap和Hashtable有什么不一样的?Hashmap一般怎么用?ConcurrentHashMap怎么实现的?分段锁怎么加锁的?分段锁是可重入的吗?已经用了synchronized,为什么还要用CAS呢?ConcurrentHashMap用了悲观锁还是乐观锁?
9.HashTable 底层实现原理是什么?HashTable线程安全是怎么实现的?hashtable 和concurrentHashMap有什么区别?说一下HashMap和Hashtable、ConcurrentMap的区别?
10. Set集合有什么特点?如何实现key无重复的?有序的Set是什么?记录插入顺序的集合是什么?