我掏空了各大搜尋引擎,2020 年 Java 面試題集錦含答案(十月),抓緊收藏,手慢無

2020-10-08 13:00:38

前言:

又是跳槽的好季節,準備跳槽的同學都摩拳擦掌準備大面好幾場, 為大家準備了精選的面試題。

 

 

本套Java面試題大全總共分為以下這六個模組:

  • Java基礎面試題

  • 多執行緒面試題

  • Redis面試題

  • 資料結構與演演算法

  • Java異常面試題

  • JVM面試題

 

一、Java基礎面試題

 

1、&和&&的區別?

2、int和 Integer 有什麼區別?(基本資料型別有哪些?)(String不是基本資料型別)

3、String、StringBuffer、 StringBuilder 的區別?

4、String 類的常用方法都有那些?

5、String 字串修改實現的原理?

6、兩個物件的 hashCode() 相同,則 equals() 也一定為 true 嗎?

7、解釋下什麼是物件導向?物件導向和程式導向的區別?

8、Java 是否支援多繼承?

9、什麼是建構函式?什麼是建構函式過載?

10、Java 的泛型是如何工作的 ? 什麼是型別擦除 ?

11、什麼是泛型中的限定萬用字元和非限定萬用字元 ?

12、Java 中的 IO 流的分類?

 

二、多執行緒面試題

 

1、並行程式設計三要素?

2、實現可見性的方法有哪些?

3、多執行緒的價值?

4、建立執行緒的有哪些方式?

5、建立執行緒的三種方式的對比?

6、執行緒的狀態流轉圖

7、Java執行緒具有五中基本狀態

8、什麼是執行緒池?有哪幾種建立方式?

9、四種執行緒池的建立

10、執行緒池的優點?

11、常用的並行工具類有哪些?

12、CyclicBarrier和CountDownLatch的區別

13、synchronized的作用?

14、volatile關鍵字的作用

15、什麼是CAS

16、CAS的問題

17、什麼是Future?

18、什麼是AQS

19、AQS支援兩種同步方式:

20、ReadWriteLock是什麼

21、FutureTask是什麼

22、synchronized和ReentrantLock的區別

23、什麼是樂觀鎖和悲觀鎖

24、執行緒B怎麼知道執行緒A修改了變數

25、synchronized、volatile、CAS比較

26、sleep方法和wait方法有什麼區別?

27、ThreadLocal是什麼?有什麼用?

28、為什麼wait()方法和notify()/notifyAll()方法要在同步塊中被呼叫

29、多執行緒同步有哪幾種方法?

30、執行緒的排程策略

32、Linux環境下如何查詢哪個執行緒使用CPU最長

33、Java死鎖以及如何避免?

34、死鎖的原因

35、怎麼喚醒一個阻塞的執行緒

36、不可變物件對多執行緒有什麼幫助

37、什麼是多執行緒的上下文切換

38、如果你提交任務時,執行緒池佇列已滿,這時會發生什麼

39、Java中用到的執行緒排程演演算法是什麼

40、什麼是執行緒排程器(Thread Scheduler)和時間分片(Time Slicing)?

41、什麼是自旋

42、執行緒類的構造方法、靜態塊是被哪個執行緒呼叫的

43、同步方法和同步塊,哪個是更好的選擇?

44、Java執行緒數過多會造成什麼異常?

 

三、Redis面試題

 

1、redis常見效能問題和解決方案:

2、mySQL裡有2000w資料,redis中只存20w的資料,如何保證redis中的資料都是熱點資料

3、請用Redis和任意語言實現一段惡意登入保護的程式碼,限制1小時內每使用者Id最多隻能登入5次。具體登入函數或功能用空函數即可,不用詳細寫出。

4、為什麼redis需要把所有資料放到記憶體中?

5、redis的並行競爭問題如何解決?

6、redis事物的瞭解CAS(check-and-set 操作實現樂觀鎖 )?

7、redis持久化的幾種方式

8、redis的快取失效策略和主鍵失效機制

9、Redis叢集方案什麼情況下會導致整個叢集不可用?

10、說說Redis雜湊槽的概念?

 

四、資料結構與演演算法:

 

1、常見的幾大排序及查詢演演算法及其時間複雜度?

2、求陣列中最長連續序列長度

3、在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序, 請完成一個函數,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

4、兩個棧實現一個佇列。(美團、小米)

擴充套件:兩個佇列如何實現一個棧?

5、連結串列反轉(單項連結串列的反轉和雙向連結串列的反轉)

6、給Map排序---按照key的字母后按照格式[k1=v1:k2=v2]輸出(阿里旅行)

 

五、Java異常面試題:

 

1、Error 和 Exception 區別是什麼?

2、執行時異常和一般異常(受檢異常)區別是什麼?

3、JVM 是如何處理異常的?

4、throw 和 throws 的區別是什麼?

5、final、finally、finalize 有什麼區別?

6、NoClassDefFoundError 和 ClassNotFoundException 區別?

7、try-catch-finally 中哪個部分可以省略?

8、try-catch-finally 中,如果 catch 中 return 了,finally 還會執行嗎?

9、類 ExampleA 繼承 Exception,類 ExampleB 繼承ExampleA?

10、常見的 RuntimeException 有哪些?

11、Java常見異常有哪些?

 

六、JVM面試題:

 

1、Java記憶體區域

  1. 說一下 JVM 的主要組成部分及其作用?

  2. 說一下 JVM 執行時資料區?

  3. 深拷貝和淺拷貝?

  4. 說一下堆疊的區別?

  5. 佇列和棧是什麼?有什麼區別?

2、HotSpot虛擬機器器物件探祕

  • 物件的建立

  • 為物件分配記憶體

  • 處理並行安全問題

  • 物件的存取定位

3、記憶體溢位異常

Java會存在記憶體漏失嗎?請簡單描述

4、垃圾收集器

  • 簡述Java垃圾回收機制

  • GC是什麼?為什麼要GC

  • 垃圾回收的優點和原理。並考慮2種回收機制

  • 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器器進行垃圾回收?

  • Java 中都有哪些參照型別?

  • 怎麼判斷物件是否可以被回收?

  • 在Java中,物件什麼時候可以被垃圾回收

  • JVM中的永久代中會發生垃圾回收嗎

  • 說一下 JVM 有哪些垃圾回收演演算法?

  • 說一下 JVM 有哪些垃圾回收器?

  • 詳細介紹一下 CMS 垃圾回收器?

  • 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什麼區別?

  • 簡述分代垃圾回收器是怎麼工作的?

5、記憶體分配策略

①. 簡述java記憶體分配與回收策率以及Minor GC和Major GC

  • 物件優先在 Eden 區分配

  • 大物件直接進入老年代

  • 長期存活物件將進入老年代

6、虛擬機器器類載入機制

  • 簡述java類載入機制?

  • 描述一下JVM載入Class檔案的原理機制

  • 什麼是類載入器,類載入器有哪些?

  • 說一下類裝載的執行過程?

  • 什麼是雙親委派模型?

7、JVM調優

說一下 JVM 調優的工具?

常用的 JVM 調優的引數都有哪些?

 

答案獲取記得一鍵三連

 

 答案獲取方式

先一鍵三連哦