GNU'S Not Unix
阿新 • • 發佈:2019-01-04
3.1.1 Java基礎
此時一般會問到一些Java的基礎知識,比如
- synchronized static修飾類和方法有什麼區別
- HashMap的原理,底層資料結構,rehash的過程,指標碰撞問題
- HashMap的執行緒安全問題,為什麼會產生這樣的執行緒安全問題
- ConcurrentHashMap的資料結構,底層原理,put和get是否執行緒安全
- Java IO的一些內容,包括NIO,BIO等
3.1.2 Java高階特性
此時問到的問題一般包含JVM,多執行緒的一些內容,這塊建議大家多看看原始碼,大致如下:
- Java執行緒池的構造方法,裡面引數的含義,以及原理
- volatile和ThreadLocal解決了什麼問題
- CAS在Java中的具體實現
- Java虛擬機器的構成,以及一個Java物件的生命週期,還有堆疊和方法區中儲存的內容
- JVM的GC過程,包括一些實際問題的分析,比如說明一個現象,讓你分析可能是什麼原因會導致這樣的問題,應該如何對JVM引數進行調優
- synchronized和Lock的區別,以及底層實現原理
- Full GC和Minor GC觸發的條件
- GC Roots的選擇
- jmap,jstat,jstack等的使用場景,MAT等
- ClassLoader的載入過程
- CountDownLatch、CyclicBarrier和Semaphore等
- Java 8 的新特性等
3.1.3 資料庫
這裡的資料庫包含兩種,一種一般是 MySQL,另外是NoSql資料庫,包括Redis、MongoDB等。一般會問的問題有:
- inner join和left join等的區別
- SQL調優,explain,profile等
- InnoDB和Myisam的區別
- ACID
- 資料庫的事務隔離級別,以及他們分別能解決什麼問題
- Redis的幾種資料結構
- Redis是單執行緒還是多執行緒
- Redis的持久化
- 悲觀鎖和樂觀鎖的含義
- 最左字首索引,索引的資料結構,聚簇索引等(這塊還沒搞明白)
3.1.4 框架
3.1.4.1 Spring
因為spring是我們常用的框架,所以這塊的內容會問的比較多,也會比較細。
- Spring的兩大特性(IoC和AOP)
- Spring的bean的生命週期
- Spring是如何解決Bean的迴圈引用問題的
- AOP的兩種實現方式,以及兩者的區別(這裡其實使用了動態代理,具體動態代理分為兩種,一種是JDK的動態代理,主要使用的是JDK的反射,還有一種是CGLib,兩者區別可以自己搜尋,文章比較多)
- AOP一般的使用場景
- Spring的事務原理
3.1.4.2 MyBatis
這塊問到的比較簡單些:
- $和#的區別
- MyBatis和Hibernate的區別
- 原始碼,一般問的比較少
3.1.4.3 Dubbo
因為平時自己用到了Dubbo,所以這塊會有問到:
- RPC的原理
- Dubbo是如何完成遠端呼叫的
- Dubbo如何進行調優
- Dubbo的通訊協議
- Dubbo是如何實現負載均衡的
3.1.4.4 ZooKeeper
- ZK的使用場景
- ZK的選舉機制
- ZK的節點型別
- 一致性Hash原理
3.1.5 資料結構和演算法
這塊的內容是基礎,如果面試官懷疑你的能力,一般一會問到這部分內容,比如樹的遍歷、快速排序等。
3.1.6 linux
一般會問一些命令的使用,然後會舉一個實際的場景,讓你用命令去排查問題,這塊自己不是很熟,需要儘快加強。
3.1.7 綜合題
這塊的題目,面試官一般會問的比較深入。比如如何設計一個搶購系統,String轉Integer等,這部分需要考驗的就是一個人的臨場應變能力,以及在平時工作中系統設計能力的積累,以及考慮問題是否周到等。也有可能會對你簡歷上面寫的系統的設計進行詳細的詢問,所以在你寫簡歷的時候,千萬不能把自己不熟悉的內容寫上去,而且自己又講不清,這樣一般會被直接pass掉。
當然也會問一些常用的maven的命令,設計模式的題目(這部分問的比較多的就是單例模式)。