面試收穫美團offer的學習筆記:MySQL+Spring+JVM+多執行緒並行等

2020-10-23 16:01:12

 

從去年到今年先後面試了 6 次美團,外賣、訂單、商旅面試了好幾個部門、總結下來面試的大體思路真的基本一致誒。比如:

  • JVM 引數設定、常用偵錯工具、分割區、類載入,還會問你有需要線上的偵錯問題嗎?遇到死迴圈 CPU 飆升怎麼解決?
  • Java 並行包常用工具用法和原理、會配合集合類一起考,對了還會有 volatile、CAS 原理等。
  • MySQL 也算是必備了,索引儲存結構、索引搜尋原理、事務的隔離級別和原理,這些真的是逢考必問。當然除了 MySQL,Redis 和 ES 也是面試長文的,大多都是集中到原理。比如 ES 倒排索引、分片原理,Redis 的 zset 原理和使用場景、多路複用、穿透、熔斷等等。
  • 框架也是必備的知識點,最常見的就是 AOP 原理,自己怎麼實現?Spring Boot 啥原理?框架通常會配合設計模式一起考,比如你最熟悉的設計模式是啥?Spring MVC 裡面用了什麼設計模式?解決了什麼問題?
  • 接下來最重要的就是服務治理了,這裡面內容就太多了,Dubbo 也好,Spring Cloud 也罷,總之這個地方最能看得出你真實的工作經驗和問題的考慮深度,畢竟沒有真正在龐大的系統裡面鍛鍊過真的很難應付這個地方。
  • 沒漏掉還有一個最重要的演演算法,這個就靠平時多練了,LeetCode 中文版上線了,一天一道題,面試必無敵。

說了這麼多隻有一個重點,就是無論大廠他有沒有題庫,面試題的大體方向就這麼多,你要都掌握了,還擔心去不了大廠?那麼重點就來了,怎麼複習呢?首先你需要有一個知識點輪廓,對著這個輪廓不停的擴充套件、延伸,自己查漏補缺。因為雖然知識點就這麼多,但是面試官的提問方式還是千奇百怪的,所以你需要通過知識點做相應的延伸,才能融會貫通。道理其實大家都知道,但是實施起來就遇到了問題,所以這裡我推薦最簡單的方式:

腦圖 + 書 + 視訊

什麼意思呢?具體解釋一下,首先你需要有一個全面的知識點腦圖,然後遇到不懂的地方就看書,千萬不要去看部落格,畢竟部落格門檻真的太低了,最後要配合一些高品質的視訊,用來鞏固知識和開拓視野。腦圖已經給你整理好了,可以根據這個圖自行進行查漏補缺和規劃

MySQL學習筆記

MySQL 具有這樣明顯的優勢,並且由於它優異的效能,MySQL 的應用也越來越廣泛,使用者也越來越多。但是在市場上,相應的適合培訓的教材卻屈指可數,廣大愛好者苦於資料的缺乏而無法對 MySQL 做進一步的瞭解。這份筆記可以說是可遇不可求的了。

 

  1. MySQL體系結構和儲存引擎
  2. InnoDB儲存引擎
  3. 檔案
  4. 索引與演演算法
  5. 事務
  6. 備份與恢復
  7. 效能調優
  8. InnoDB儲存引擎原始碼的編譯和偵錯

 

Spring原理學習筆記

Spring最根本的使命是簡化Java開發,因此學習、硏究、掌握Spring成為每一位Java開發人員的必修課。

 

  1. Spring 特點
  2. Spring 核心元件
  3. Spring 常用模組
  4. Spring 主要包
  5. Spring 常用註解
  6. Spring 第三方結合
  7. Spring IOC原理
  8. Spring APO原理
  9. Spring MVC原理
  10. Spring Boot原理
  11. JPA原理
  12. Mybatis快取
  13. Tomcat架構

 

JVM學習筆記

作為 Java 的從業者,在找工作的時候,一定會被問及關於 JVM 相關的知識。 JVM 知識的掌握程度,在很多面試官眼裡是候選人技術深度的一個重要評判標準。

 

  1. 執行緒
  2. JVM記憶體區域
  3. JVM執行時記憶體
  4. 垃圾回收與演演算法
  5. JAVA 四種參照型別
  6. GC分代收集演演算法 VS 分割區收集演演算法
  7. GC垃圾收集器
  8. JAVA IO/NIO
  9. JVM 類載入機制

 

多執行緒並行學習筆記

Thread類的學習並不像JDBC那樣簡單,學習多執行緒會遇到太多的問題、彎路以及我們所謂的「坑」,為了在技術層面上進行更高的追求,我將多執行緒的技術點以筆記的方式進行整理

 

  1. JAVA並行知識庫
  2. JAVA執行緒實現/建立方式
  3. 4種執行緒池
  4. 執行緒生命週期(狀態)
  5. 終止執行緒4種方式
  6. sleep與wait 區別
  7. start與run區別
  8. JAVA後臺執行緒
  9. JAVA鎖
  10. 執行緒基本方法
  11. 執行緒上下文切換
  12. 同步鎖與死鎖
  13. 執行緒池原理
  14. JAVA阻塞佇列原理
  15. CyclicBarrier、CountDownLatch、Semaphore的用法
  16. volatile關鍵字的作用(變數可見性、禁止重排序)
  17. 如何在兩個執行緒之間共用資料
  18. ThreadLocal作用(執行緒本地儲存)
  19. synchronized和ReentrantLock的區別
  20. ConcurrentHashMap並行
  21. Java中用到的執行緒排程
  22. 程序排程演演算法
  23. 什麼是CAS(比較並交換-樂觀鎖機制-鎖自旋)
  24. 什麼是 AQS(抽象的佇列同步器)

 

演演算法刷題LeetCode中文版

  1. 程式設計技巧
  2. 線性表
  3. 字串
  4. 第4章 棧和佇列
  5. 排序
  6. 查詢
  7. 暴力列舉法
  8. 廣度優先搜尋
  9. 深度優先搜尋
  10. 分治法
  11. 貪婪法
  12. 動態規劃
  13. 細節實現題

 

以上的所有資料可以免費分享出來,整理的這些面試題希望對Java開發的朋友們有所參考以及少走彎路;希望每一個程式設計師都能夠實現自己的大廠夢!

獲取方式: