面試收穫美團offer的學習筆記:MySQL+Spring+JVM+多線程並發等

老男孩的成長之路 發佈 2020-01-10T01:55:56+00:00

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


從去年到今年先後面試了 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開發的朋友們有所參考以及少走彎路;希望每一個程式設計師都能夠實現自己的大廠夢!

獲取方式:轉發評論後,關注我,私信回復【面試】即可打包帶走所有資料!

關鍵字: