面試題list追殺篇

2021-10-25 22:36:55 字數 1350 閱讀 2546

答案:

執行緒安全

arraylist

:底層是陣列實現,執行緒不安全,查詢和修改⾮常快,但是增加和刪除慢

linkedlist:

底層是雙向鍊錶,執行緒不安全,查詢和修改速度慢,但是增加和刪除速度快

vector:

底層是陣列實現,執行緒安全的,操作的時候使⽤

synchronized

進⾏加鎖

使⽤場景

vector

已經很少⽤了

增加和刪除場景多則⽤

linkedlist

查詢和修改多則⽤

arraylist

⽅式⼀:⾃⼰寫個包裝類,根據業務⼀般是

add/update/remove

加鎖

⽅式⼆:

collections.synchronizedlist(new arraylist<>());

使⽤synchronized

加鎖

⽅式三:

copyonwritearraylist<>()

使⽤reentrantlock加鎖

如果回答到上⾯的點則繼續問,沒回到到則問,了解

copyonwritearraylist嗎?

和 collections.synchronizedlist實現執行緒安全有什麼區別

, 使⽤場景是怎樣的?

copyonwritearraylist

:執⾏修改操作時,會拷⻉⼀份新的陣列進⾏操作(

add、

set、

remove等)

,代價⼗分昂貴,在執⾏完修改後將原來集合指向新的集合來完成修改操作,源

碼⾥⾯⽤

reentrantlock

可重⼊鎖來保證不會有多個執行緒同時拷⻉⼀份陣列

場景:讀⾼效能,適⽤讀操作遠遠⼤於寫操作的場景中使⽤

(讀的時候是不需要加鎖的,

直接獲取,刪除和增加是需要加鎖的

, 讀多寫少)

collections.synchronizedlist

:執行緒安全的原因是因為它⼏乎在每個⽅法中都使⽤了

synchronized同步*

鎖 場景:寫操作效能⽐

copyonwritearraylist

好,讀操作效能並不如

copyonwritearraylist

答案:設計思想:讀寫分離

+最終⼀致

缺點:記憶體佔⽤問題

,寫時複製機制

,記憶體⾥會同時駐紮兩個物件的記憶體,舊的物件和新寫⼊的物件,

如果物件⼤則容易發⽣

yong gc

和full gc

List 面試題List的子類特點

list 面試題list的子類特點 arraylist 底層資料結構是陣列,查詢快,增刪慢。執行緒不安全,效率高。vector 底層資料結構是陣列,查詢快,增刪慢。執行緒安全,效率低。linkedlist 底層資料結構是鍊錶,查詢慢,增刪快。執行緒不安全,效率高。list有三個兒子,我們到底使用誰呢...

List 面試題List的子類特點

list 面試題list的子類特點 arraylist 底層資料結構是陣列,查詢快,增刪慢。執行緒不安全,效率高。vector 底層資料結構是陣列,查詢快,增刪慢。執行緒安全,效率低。linkedlist 底層資料結構是鍊錶,查詢慢,增刪快。執行緒不安全,效率高。list有三個兒子,我們到底使用誰呢...

C C 面試題專業篇

1.介紹stl,詳細說明 stl如何實現 vector 2.分析visual c 程式出錯的原因 3.繼承和多型有何區別 4.指標和引用有何區別,穿引用比傳指標安全,為什麼 5.引數傳遞的方式與多型引數傳遞的實現 6.怎樣應用設計模式的理念 7.介紹一下對設計模式的理解 8.c 和 c定義結構的區別...