更新時間:2023-01-04 10:00:50 來源:動力節點 瀏覽1202次
在Java程序員的相關面試中,面試官必然會考核一些專業的技術知識,其中java集合類面試題是必須要做準備的,集合的知識點是Java框架的核心,必然是重要考點之一,所以,熟知并掌握,對于日后我們的面試與就業來說,幫助非常的大:
1. 什么是集合
2. 集合的特點
集合的特點主要有如下兩點:
3. 集合和數組的區別
4. 使用集合框架的好處
容量自增長;
5. 常用的集合類有哪些?
Map接口和Collection接口是所有集合框架的父接口:
6. List,Set,Map三者的區別?
Java 容器分為 Collection 和 Map 兩大類,Collection集合的子接口有Set、List、Queue三種子接口。我們比較常用的是Set、List,Map接口不是collection的子接口。
Map是一個鍵值對集合,存儲鍵、值和之間的映射。 Key無序,唯一;value 不要求有序,允許重復。Map沒有繼承于Collection接口,從Map集合中檢索元素時,只要給出鍵對象,就會返回對應的值對象。
7. 哪些集合類是線程安全的?
Vector:就比Arraylist多了個 synchronized (線程安全),因為效率較低,現在已經不太建議使用。
hashTable:就比hashMap多了個synchronized (線程安全),不建議使用。
ConcurrentHashMap:是Java5中支持高并發、高吞吐量的線程安全HashMap實現。它由Segment數組結構和HashEntry數組結構組成。Segment數組在ConcurrentHashMap里扮演鎖的角色,HashEntry則用于存儲鍵-值對數據。一個ConcurrentHashMap里包含一個Segment數組,Segment的結構和HashMap類似,是一種數組和鏈表結構;一個Segment里包含一個HashEntry數組,每個HashEntry是一個鏈表結構的元素;每個Segment守護著一個HashEntry數組里的元素,當對HashEntry數組的數據進行修改時,必須首先獲得它對應的Segment鎖。(推薦使用)
8. Java集合的快速失敗機制 “fail-fast”?
是java集合的一種錯誤檢測機制,當多個線程對集合進行結構上的改變的操作時,有可能會產生fail-fast 機制。
例如:假設存在兩個線程(線程1、線程2),線程1通過Iterator在遍歷集合A中的元素,在某個時候線程2修改了集合A的結構(是結構上面的修改,而不是簡單的修改集合元素的內容),那么這個時候程序就會拋出 ConcurrentModificationException 異常,從而產生fail-fast機制。
原因:迭代器在遍歷時直接訪問集合中的內容,并且在遍歷過程中使用一個 modCount 變量。集合在被遍歷期間如果內容發生變化,就會改變modCount的值。每當迭代器使用hashNext()/next()
遍歷下一個元素之前,都會檢測modCount變量是否為expectedmodCount值,是的話就返回遍歷;否則拋出異常,終止遍歷。
解決辦法:
在遍歷過程中,所有涉及到改變modCount值得地方全部加上synchronized。使用CopyOnWriteArrayList來替換ArrayList
以上就是“千道題中精選出的幾道Java集合類面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習