前言:
又是跳槽的好季節,準備跳槽的同學都摩拳擦掌準備大面好幾場, 為大家準備了精選的面試題。
本套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]輸出(阿里旅行)
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常見異常有哪些?
1、Java記憶體區域
說一下 JVM 的主要組成部分及其作用?
說一下 JVM 執行時資料區?
深拷貝和淺拷貝?
說一下堆疊的區別?
佇列和棧是什麼?有什麼區別?
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 調優的引數都有哪些?
先一鍵三連哦