久久九九国产无码高清_人人做人人澡人人人爽_日本一区二区三区中文字幕_日韩无码性爱免费

Java程序員框架面試題

時間:2024-10-13 22:47:08 面試筆試 我要投稿
  • 相關推薦

Java程序員集合框架面試題

  Java集合框架是最常被問到的Java面試問題,要理解 Java技術強大特性就有必要掌握集合框架。這里有一些實用問題,常在核心 Java 面試中問到。

Java程序員集合框架面試題

  1、什么是 Java 集合 API

  Java 集合框架 API 是用來表示和操作集合的統(tǒng)一框架,它包含接口、實現(xiàn)類、以及幫助程序員完成一些編程的算法。簡言之,API 在上層完成以下幾件事:

  編程更加省力,提高城程序速度和代碼質量

  非關聯(lián)的 API 提高互操作性

  節(jié)省學習使用新 API 成本

  節(jié)省設計新 API 的時間

  鼓勵、促進軟件重用

  具體來說,有 6 個集合接口,最基本的是 Collection 接口,由三個接口 Set、List、SortedSet 繼承,另外兩個接口是 Map、SortedMap,這兩個接口不繼承 Collection,表示映射而不是真正的集合。

  2、什么是 Iterator

  一些集合類提供了內容遍歷的功能,通過 java.util.Iterator 接口。這些接口允許遍歷對象的集合。依次操作每個元素對象。當使用 Iterators 時,在獲得 Iterator 的時候包含一個集合快照。通常在遍歷一個Iterator 的時候不建議修改集合本省。

  3、 Iterator 與 ListIterator 有什么區(qū)別?

  Iterator:只能正向遍歷集合,適用于獲取移除元素。ListIerator:繼承 Iterator,可以雙向列表的遍歷,同樣支持元素的修改。

  4、什么是 HaspMap 和 Map?

  Map 是接口,Java 集合框架中一部分,用于存儲鍵值對,HashMap 是用哈希算法實現(xiàn) Map 的類。

  5、 HashMap 與 HashTable 有什么區(qū)別?對比 Hashtable VS HashMap

  兩者都是用 key-value 方式獲取數(shù)據(jù)。Hashtable 是原始集合類之一(也稱作遺留類)。HashMap 作為新集合框架的一部分在 Java2 的1.2版本中加入。它們之間有一下區(qū)別:

  HashMap 和 Hashtable 大致是等同的,除了非同步和空值(HashMap 允許 null 值作為 key 和 value,而 Hashtable 不可以)。

  HashMap 沒法保證映射的順序一直不變,但是作為 HashMap 的子類 LinkedHashMap,如果想要預知的順序迭代(默認按照插入順序),你可以很輕易的置換為 HashMap,如果使用 Hashtable 就沒那么容易了。

  HashMap 不是同步的,而 Hashtable 是同步的。

  迭代 HashMap 采用快速失敗機制,而 Hashtable 不是,所以這是設計的考慮點。

  6、在 Hashtable 上下文中同步是什么意思?

  同步意味著在一個時間點只能有一個線程可以修改哈希表,任何線程在執(zhí)行hashtable 的更新操作前需要獲取對象鎖,其他線程等待鎖的釋放。

  7、什么叫做快速失敗特性

  從高級別層次來說快速失敗是一個系統(tǒng)或軟件對于其故障做出的響應。一個快速失敗系統(tǒng)設計用來即時報告可能會導致失敗的任何故障情況,它通常用來停止正常的操作而不是嘗試繼續(xù)做可能有缺陷的工作。當有問題發(fā)生時,快速失敗系統(tǒng)即時可見地發(fā)錯錯誤告警。在 Java 中,快速失敗與 iterators 有關。如果一個 iterator 在集合對象上創(chuàng)建了,其它線程欲“結構化”的修改該集合對象,并發(fā)修改異常 (ConcurrentModificationException) 拋出。

  8、怎樣使 Hashmap 同步?

  HashMap 可以通過 Map m = Collections.synchronizedMap(hashMap)來達到同步的效果。

  9、什么時候使用 Hashtable,什么時候使用 HashMap

  基本的不同點是 Hashtable 同步 HashMap 不是的,所以無論什么時候有多個線程訪問相同實例的可能時,就應該使用 Hashtable,反之使用 HashMap。非線程安全的數(shù)據(jù)結構能帶來更好的性能。

  如果在將來有一種可能—你需要按順序獲得鍵值對的方案時,HashMap 是一個很好的選擇,因為有 HashMap 的一個子類 LinkedHashMap。所以如果你想可預測的按順序迭代(默認按插入的順序),你可以很方便用 LinkedHashMap 替換 HashMap。反觀要是使用的 Hashtable 就沒那么簡單了。同時如果有多個線程訪問 HashMap,Collections.synchronizedMap ()可以代替,總的來說HashMap 更靈活。

  10、為什么 Vector 類認為是廢棄的或者是非官方地不推薦使用?或者說為什么我們應該一直使用 ArrayList 而不是 Vector

  你應該使用 ArrayList 而不是 Vector 是因為默認情況下你是非同步訪問的,Vector 同步了每個方法,你幾乎從不要那樣做,通常有想要同步的是整個操作序列。同步單個的操作也不安全(如果你迭代一個 Vector,你還是要加鎖,以避免其它線程在同一時刻改變集合).而且效率更慢。當然同樣有鎖的開銷即使你不需要,這是個很糟糕的方法在默認情況下同步訪問。你可以一直使用 Collections.sychronizedList 來裝飾一個集合。

  事實上 Vector 結合了“可變數(shù)組”的集合和同步每個操作的實現(xiàn)。這是另外一個設計上的缺陷。Vector 還有些遺留的方法在枚舉和元素獲取的方法,這些方法不同于 List 接口,如果這些方法在代碼中程序員更趨向于想用它。盡管枚舉速度更快,但是他們不能檢查如果集合在迭代的時候修改了,這樣將導致問題。盡管以上諸多原因,oracle 也從沒宣稱過要廢棄 Vector.


【Java程序員框架面試題】相關文章:

java程序員面試指南11-26

Java面試的面試題目與解題思路 201411-20

2017年java中高級筆試面試題及答案11-11

面試題精選02-18

分享面試題目 教育職業(yè)面試題11-20

熱門就業(yè)行業(yè)面試題精選:編輯行業(yè)面試題!11-19

Microsoft 面試題11-19

蘋果 面試題11-19

熱門就業(yè)行業(yè)面試題精選 銷售行業(yè)面試題11-20

java面試的經驗11-20