10道关于Java集合类的大厂经典面试题及答案

编程有珠玑 2024-03-12 12:05:12

1. 说一说 Java 中的集合有哪些?

答:Java 中的集合主要有 List、Set、Map 三种类型,其中 List 表示有序的集合,Set 表示无序的集合,Map 表示键值对的集合。

2. ArrayList 和 LinkedList 的区别是什么?

答:ArrayList 是基于动态数组实现的,查找和修改元素速度快,但插入和删除元素效率较低;LinkedList 是基于链表实现的,插入和删除元素速度快,但查找和修改元素效率较低。

3. HashSet 和 TreeSet 的区别是什么?

答:HashSet 是基于哈希表实现的,不保证元素的顺序,不允许重复元素;TreeSet 是基于红黑树实现的,保证元素的排序,不允许重复元素。

4. HashMap 和 Hashtable 的区别是什么?

答:HashMap 是线程不安全的,性能较好;Hashtable 是线程安全的,性能相对较差。

5. 如何确保 HashMap 的线程安全?

答:可以使用 ConcurrentHashMap 来确保 HashMap 的线程安全。

6. 简述一下 ConcurrentHashMap 的实现原理?

答:ConcurrentHashMap 使用了分段锁技术,将哈希表分成多个段,每个段独立加锁,提高了并发性能。

7. 如何解决 HashMap 中的哈希冲突?

答:HashMap 采用链地址法来解决哈希冲突,当发生哈希冲突时,将新元素添加到链表的末尾。

8. ArrayList 的扩容机制是怎样的?

答:当 ArrayList 需要扩容时,会创建一个新的数组,长度为原数组的两倍,并将原数组中的元素复制到新数组中。

9.试述一下 Java 中集合的遍历方式有哪几种?

答:常见的集合遍历方式有 for-each 循环、Iterator 迭代器、List 接口的 listIterator 方法。

10. 讲一下 Collection 和 Collections 的区别?

答:Collection 是 Java 集合接口,定义了集合的基本操作;Collections 是一个工具类,提供了一些对集合进行操作的静态方法。

0 阅读:1