Java基礎面試題,分享一波阿里、字節、騰訊、美團等精選大廠面試題

  • 底層爲數組
  • 搜索速度快,增刪慢java

  • 線程安全,效率低(synchronized鎖)git

  • 容量不足時,擴展一倍容量

LinkList(鏈表)

  • 有序,可重複程序員

  • 底層爲雙向鏈表面試

  • 搜索速度慢,增刪塊算法

  • 線程不安全,效率低

併發下 ArrayList 不安全如何解決?

/**

 * 解決方案;

 * 一、List<String> list = new Vector<>();

 * 二、List<String> list = Collections.synchronizedList(new ArrayList<>());

 * 三、List<String> list = new CopyOnWriteArrayList<>();

 * CopyOnWriteArrayList 使用的lock鎖的機制

 */

Set

Set 注重獨一無二的性質,該體系集合用於存儲無序元素(存入和取出的順序不必定相同),值不能重複。對象的相等性本質是對象 hashCode 值判斷的,若是想要讓兩個不一樣的對象視爲相等的,就必須覆蓋 Object 的 hashCode 方法和 equals 方法。設計模式

HashSet

  • HashSet 存儲元素的順序是無序的,是按照哈希值來存的因此取數據也是按照哈希值取得。數組

  • HashSet 首先判斷兩個元素的哈希值,若是哈希值同樣,接着會比較 equals 方法 若是 equls 結果爲 true ,HashSet 就視爲同一個元素。若是 equals 爲 false 就不是 同一個元素安全

  • HashSet 經過 hashCode 值來肯定元素在內存中的位置。一個 hashCode 位置上能夠存放多個元素markdown

  • HashSet 容許有 null 值。數據結構

  • HashSet 不是線程安全的

    白嫖資料

TreeSet

  • 一個有序的集合,它的做用是提供有序的Set集合,支持add、remove、get等方法

  • 比較此對象與指定對象的順序。若是該對象小於、等於或大於指定對象,則分別返回負整 數、零或正整數

  • 非線程安全的集合

LinkHashSet(HashSet+LinkedHashMap)

  • 非線程安全的集合

併發下 Set不安全如何解決?

/**

* 同理可證 : ConcurrentModificationException

* //一、Set<String> set = Collections.synchronizedSet(new HashSet<>());

* //二、Set<String> set = new CopyOnWriteArraySet<>();

*/

Map

HashMap(數組+鏈表+紅黑樹)

  • HashMap 最多隻容許一條記錄的鍵爲 null,容許多條記 錄的值爲 null。

  • HashMap 非線程安全

  • 當鏈表中的元素超過了 8 個之後, 會將鏈表轉換爲紅黑樹,在這些位置進行查找的時候能夠下降時間複雜度爲 O(logN)。

HashTable(線程安全)

白嫖資料

  • 效率低使用synchronized鎖住整個put方法

全部訪問HashTable的線程都必須競爭同一把鎖

ConcurrentHashMap(線程安全)

  • 效率較高使用synchronized分段鎖

數據分紅一段一段地存儲,而後給每一段數據配一把鎖,當一個線程佔用鎖訪問其中一個段數據的時候,其餘段的數據也能被其餘線程訪問。

TreeMap(可排序)

  • 實現 SortedMap 接口,可以把它保存的記錄根據鍵排序,默認是按鍵值的升序排序

LinkHashMap(記錄插入順序)

HashMap的工做原理(面試問題)

什麼是HashMap?你爲何用到它?

HashMap能夠接受null鍵值和值,而Hashtable則不能; HashMap是非synchronized; HashMap很快;

以及HashMap儲存的是鍵值對

你知道HashMap的工做原理嗎?

結局:總結+分享

看完美團、字節、騰訊這三家的一二三面試問題,是否是感受問的特別多,可能我們真的又得開啓面試造火箭、工做擰螺絲的模式去準備下一次的面試了。

開篇有說起我但是足足背下了Java互聯網工程師面試1000題,多少仍是有點用的呢,換湯不換藥,無論面試官怎麼問你,抓住本質便可!能讀到此處的都是真愛,因此福利也爲你準備,這份1000題免費送你!點擊這裏免費領取

  • Java互聯網工程師面試1000題

image.png

並且從上面三家來看,算法與數據結構是必備不可少的呀,所以我建議你們能夠去刷刷這本左程雲大佬著做的 《程序員代碼面試指南 IT名企算法與數據結構題目最優解》,裏面近200道真實出現過的經典代碼面試題。

  • 程序員代碼面試指南--IT名企算法與數據結構題目最優解

image.png

  • 其他像設計模式,建議能夠看看下面這4份PDF(已經整理)

image.png

  • 更多的Java面試學習筆記以下,關於面試這一塊,我額外細分出Java基礎-中級-高級開發的面試+解析,以及調優筆記等等等。。。

image.png

以上所說起的所有Java面試學習的PDF及筆記,如若皆是你所須要的,那麼均可發送給你!

相關文章
相關標籤/搜索