# Collection Interview Questions

Top 40 Java collection interview questions and answers

# 一般的问题

  • 1)什么是Java Collections API? 列出其优势?

  • 2)解释馆藏层次?

  • 3)为什么Collection接口没有扩展Cloneable和Serializable接口?

  • 4)为什么Map接口没有扩展Collection接口?

# 列表界面相关

  • 5)为什么要使用List接口? 什么是实现List接口的主要类?

  • 6)如何将String数组转换为ArrayList?

  • 7)如何反转列表?

# 设置界面相关

  • 8)为什么要使用Set接口? 什么是实现Set接口的主要类?

  • 9)HashSet如何存储元素?

  • 10)是否可以将null元素添加到TreeSet或HashSet?

# 地图界面相关

  • 为什么要使用Map界面? 什么是实现Map接口的主要类?

  • 什么是IdentityHashMap和WeakHashMap?

  • 解释ConcurrentHashMap吗? 这个怎么运作?

  • 哈希图如何工作?

  • 如何为哈希表设计一个好的密钥?

  • 16)Map界面提供哪些不同的Collection视图?

  • 17)什么时候使用HashMap或TreeMap?

# 告诉差异问题

  • 18)Set和List之间的区别?

  • 19)列表和地图之间的区别?

  • 20)HashMap和HashTable之间的区别?

  • 21)Vector和ArrayList之间的区别?

  • 22)迭代器和枚举之间的区别?

  • 23)HashMap和HashSet之间的区别?

  • 24)Iterator和ListIterator之间的区别?

  • 25)TreeSet和SortedSet之间的区别?

  • 26)ArrayList和LinkedList之间的区别?

# 更多问题

  • 27)如何使收藏集只读?

  • 28)如何使收集线程安全?

  • 29)为什么没有像Iterator.add()这样的方法将元素添加到集合中?

  • 30)有哪些不同的方法可以遍历列表?

  • 31)通过迭代器快速失败属性您了解什么?

  • 32)快速故障和故障安全之间有什么区别?

  • 33)如何在迭代集合时避免ConcurrentModificationException?

  • 34)什么是UnsupportedOperationException?

  • 35)哪些收集类别可随机访问其元素?

  • 36)什么是BlockingQueue?

  • 37)什么是队列和堆栈,列出它们的区别?

  • 38)什么是可比较和比较器界面?

  • 39)什么是Collections和Arrays类?

  • 40)推荐资源