java集合必会面试题目及答案.doc
java集合必会面试题目及答案
一、单项选择题(每题2分,共10题)
1.以下哪个是Java中的无序集合?
A.ListB.SetC.Map
答案:B
2.HashSet底层使用的数据结构是?
A.数组B.链表C.哈希表
答案:C
3.ArrayList扩容时新容量是旧容量的?
A.1倍B.1.5倍C.2倍
答案:B
4.Map接口的实现类中,键值对有序的是?
A.HashMapB.TreeMapC.Hashtable
答案:B
5.以下能直接存储基本数据类型的集合是?
A.ArrayListB.VectorC.都不能
答案:C
6.LinkedList插入元素效率高是因为它是?
A.基于数组B.基于链表C.基于哈希表
答案:B
7.哪个集合类线程安全?
A.ArrayListB.HashMapC.Vector
答案:C
8.TreeSet对元素排序依据是?
A.插入顺序B.自然顺序C.随机顺序
答案:B
9.遍历HashMap推荐使用哪种方式?
A.keySet()B.entrySet()C.values()
答案:B
10.以下不属于Collection接口子接口的是?
A.ListB.MapC.Set
答案:B
二、多项选择题(每题2分,共10题)
1.以下属于List接口实现类的有?
A.ArrayListB.LinkedListC.Vector
答案:ABC
2.关于Set接口说法正确的有?
A.元素无序B.元素不可重复C.可以包含null
答案:ABC
3.以下哪些类实现了Map接口?
A.HashMapB.TreeMapC.WeakHashMap
答案:ABC
4.以下哪些方法是Collection接口的方法?
A.add()B.remove()C.size()
答案:ABC
5.ArrayList相对于数组的优势有?
A.动态扩容B.随机访问快C.插入删除方便
答案:AC
6.HashSet特点有?
A.基于哈希表B.允许null值C.元素有序
答案:AB
7.以下哪些操作会导致HashMap扩容?
A.插入元素B.元素数量达到阈值C.调用clear()
答案:AB
8.TreeMap可以对键进行排序,支持的排序方式有?
A.自然排序B.自定义排序C.随机排序
答案:AB
9.以下哪些是线程安全的集合类?
A.HashtableB.ConcurrentHashMapC.CopyOnWriteArrayList
答案:ABC
10.以下能用于遍历Map的方式有?
A.迭代器遍历entrySetB.增强for遍历keySetC.流遍历values
答案:ABC
三、判断题(每题2分,共10题)
1.ArrayList中元素存储是有序的。()
答案:对
2.HashSet中的元素可以重复。()
答案:错
3.HashMap是线程安全的。()
答案:错
4.LinkedList适合频繁插入和删除操作。()
答案:对
5.TreeSet中元素默认按自然顺序排序。()
答案:对
6.Vector和ArrayList性能一样。()
答案:错
7.Map接口中键可以重复。()
答案:错
8.CopyOnWriteArrayList在写入时会复制数组。()
答案:对
9.HashSet允许存储多个null值。()
答案:错
10.LinkedHashMap能保证元素插入顺序。()
答案:对
四、简答题(每题5分,共4题)
1.简述ArrayList和LinkedList的区别。
答案:ArrayList基于数组,随机访问快,插入删除慢;LinkedList基于链表,插入删除快,随机访问慢。ArrayList内存连续,LinkedList内存离散。
2.说说HashMap的工作原理。
答案:HashMap基于哈希表,通过key的hashCode()计算桶位置。当有新键值对插入,先计算桶索引,若桶为空直接插入;若不为空,遍历链表或红黑树找到合适位置插入,冲突时根据equals方法判断是否覆盖。
3.如何保证HashSet中元素的唯一性?
答案:HashSet