簡潔大方網(wǎng)站建設(shè)昆山網(wǎng)站建設(shè)推廣
1、hashmap的底層設(shè)計原理以及擴容規(guī)則,是否線程安全,如何線程安全。
- 底層原理:數(shù)組 + 鏈表 + 紅黑樹。HashMap 的底層實現(xiàn)是一個數(shù)組,數(shù)組中的每個元素是一個鏈表或紅黑樹(JDK 1.8 以后,當鏈表長度超過一定閾值時,鏈表會轉(zhuǎn)換成紅黑樹)。
- 擴容規(guī)則:HashMap 默認的初始容量是 16,擴容時,HashMap 的容量會擴大到原來的兩倍。
- 是否線程安全:HashMap 是非線程安全的。在多線程環(huán)境下,如果多個線程同時對 HashMap 進行操作,可能會導(dǎo)致不可預(yù)知的行為,比如數(shù)據(jù)丟失、數(shù)據(jù)不一致等。
- 如何實現(xiàn)線程安全:使用 ConcurrentHashMap、使用讀寫鎖、手動同步
2、八大基本數(shù)據(jù)類型以及長度
-
byte:字節(jié)類型,用于表示有符號的8位整數(shù)。范圍是 -128 到 127,默認值為 0,占用1個字節(jié)。
-
short:短整型,用于表示有符號的16位整數(shù)。范圍是 -2^15?到 2^15-1,默認值為 0,占用2個字節(jié)。
-
int:整型,用于表示有符號的32位整數(shù)。范圍是-2^31到 2^31-1,默認值為 0,占用4個字節(jié)。
-
long:長整型,用于表示有符號的64位整數(shù)。范圍是 -2^63 到 2^63 ,默認值為 0L,占用8個字節(jié)。
-
float:浮點型,用于表示符合IEEE 754標準的單精度浮點數(shù)。占用4個字節(jié)。
-
double:雙精度浮點型,用于表示符合IEEE 754標準的雙精度浮點數(shù)。占用8個字節(jié)。
-
char:字符型,用于表示單個16位Unicode字符。范圍是 '\u0000' 到 '\uffff',默認值為 '\u0000',占用2個字節(jié)。
-
boolean:布爾型,用于表示邏輯上的真或假。在JVM內(nèi)部,boolean類型通常使用int類型來實現(xiàn),因此占用4個字節(jié),但boolean數(shù)組在內(nèi)存中是以位的形式存儲的,每個boolean值占用1位。
3、多線程創(chuàng)建四種方式,以及callable和runnable的區(qū)別,如何獲取返回值
多線程創(chuàng)建四種方式:繼承 Thread 類、實現(xiàn) Runnable 接口、實現(xiàn)callable接口、使用線程池
callable和runnable的區(qū)別:前者有返回值還可以拋異常,后者沒有;落地方法不一樣,一個是run,一個是call
如何獲取 Callable 任務(wù)的返回值:將 Callable
實例包裝在 FutureTask
中,然后將 FutureTask
對象作為線程的任務(wù)執(zhí)行。通過調(diào)用 FutureTask
的 get
方法,可以獲取 Callable
任務(wù)的返回值。