奮戰一線,奔去大廠,春秋招JAVA面試總結(已收穫阿里,騰訊,位元組等公司Offer)

2020-10-14 13:00:49

前言

涼風有幸,秋月無邊,寫寫面經,回饋一下讀友。今年拿到了阿里,位元組,騰訊,美團,拼多多,蝦皮的offer,華為還在泡池子,快手瘋狂簡歷掛,網易也不知道為啥掛。

問題基本是些常規的知識點問題,還有網路通訊,系統設計之類的綜合性一點的問題。但是面試問題還是可以和大家分享一下。

面經

  1. 在王者榮耀裡面,當渲染地圖時,考慮網路波動的情況應該怎樣渲染地圖才能顯得不卡,這回導致什麼問題。
  2. 執行緒安全本質是什麼?Java如何保證執行緒安全,callable,runnable有什麼區別?執行緒不正常終止會發生什麼?執行緒佔用的空間具體是哪?是暫存器還是記憶體還是什麼?
  3. Java的執行緒和Linux的執行緒有什麼區別,為什麼需要Java的執行緒?
  4. volatile具體實現原理?記憶體重排序都會發生在哪?為什麼要記憶體重排序?
  5. 使用過哪些Java並行包?
  6. 簡述BIO,NIO的具體使用及原理。。
  7. concurrentHashMap1.8和之前版本有什麼區別。HashMap的具體實現。紅黑樹和平衡二元樹的區別。為什麼不用B+樹?
  8. Java的GC整體過程,垃圾收集演演算法,流程,垃圾收集器,強參照,弱參照,虛參照等概念等。如果我要設定一個記憶體緩衝區,讓垃圾收集器不對其進行操作怎麼辦?
  9. JVM記憶體分割區。假設Java 的GC時間過長,簡述應該如何做來排查解決這個問題。jamp的dump命令比較重,有什麼代替的方法。
  10. 程式碼實現每五分鐘一次Minor GC,如果要FullGC呢
  11. ThreadLocal的具體是怎樣的。為什麼會有記憶體漏失問題,怎樣避免。
  12. Java的異常種類有哪些,平時自己是怎麼處理異常的
  13. Spring的IOC和AOP及MVC機制,Sping中的單例bean是否可以依賴多例bean
  14. Springboot起步依賴有什麼好處,為什麼使用MyBatis不適用資料庫連線池
  15. tomcat如果有兩個專案,兩個專案裡面如果有相同的class,那麼tomcat是如何對其進行區別。
  16. 簡述MySQL的ACID性質及實現,ACID有哪些一致性種類,樂觀鎖怎麼實現的,簡述MySQL的隔離機制及實現。簡述MySQL索引結構及實現。
  17. 如果MySQL要插入十萬條資料,有什麼較好的方法。
  18. Redis支援叢集的幾種方式,redis的跳錶要實現快速查詢第k小的元素怎麼做。
  19. Netty 拆包粘包的實質,Netty執行緒池中的執行緒建立連線之後,這條連線是不是始終屬於這個請求,對於Netty來說是不是隻佔用伺服器端的一個通訊端,瞭解zero copy嘛。
  20. 簡述TCP三次握手四次揮手的狀態轉移。ip層的mtu是什麼,如何探測機器之間的mtu。
  21. 程序和執行緒的區別。程序的通訊方式。執行緒空間中的內容。程序中開啟檔案其他執行緒可以直接讀寫那個檔案嘛。使用者態和核心態對於讀寫檔案的操作有什麼區別。
  22. 記憶體為什麼分頁,虛擬記憶體有什麼用,記憶體中的髒頁是由硬體完成還是軟體完成。
  23. 怎樣用單執行緒實現2kQPS對於伺服器壓測,1s均勻發2k條訊息,可以非同步返回。
  24. Nginx和Redis能同時處理很多條請求,萬級別,是不是都是通過Linux中的IO模型的的類似訊號的機制.想這樣的C10K問題,也就是單機10000條並行連線應該如何去處理。
  25. 設計高並行秒殺系統,裡面的阻塞佇列是如何實現的。
  26. 如何實現cookie和session機制。
  27. token在分散式伺服器上的應用,用什麼框架來驗證token;除了redis還可以怎麼做非同步框架。

總結

無論是Spring,Netty等框架的原始碼,各種中介軟體的原始碼,還是一些實際的工程亮點都可以作為突出的地方。

但是對於實際工程也許會比較難我比較推薦大家看看RPC原始碼,然後深入看Netty原始碼看看網路通訊是怎麼做的,這兩方面感覺會和實際關聯非常緊密。或者看看Spring的原始碼,實際Java工程幾乎都是必須要用到的,也是一個加分項。

為了更方便學習,資料也都給大家整理好啦!:戳這裡免費領取,暗號:CSDN,還有更多大廠面試專題資料和視訊哦!

寫文不易,覺得有幫助還請三連+關注支援一下,也歡迎各位大佬提出問題,感謝!!!