面試了北京20多家大廠總結的2020最新Java面試題:資料庫+快取+並行程式設計+Spring+JVM+Netty等

2020-10-17 13:00:40

在過去很長一段時間內,國內網際網路一直處於三足鼎立狀態,BAT即百度、阿里巴巴、騰訊。而現在,湧現了越來越多的具有強競爭力的新興網際網路公司,螞蟻金服就是其中之一。下面分享以下今年螞蟻金服最新的面試真題,題目來源於幾位已經成功入職螞蟻金服的程式設計師,希望能夠給大家帶來一些啟發!

對於專案介紹問題的一些相關經驗:

對於程式設計師來說,大部分的網際網路公司面試的第一個問題就是專案介紹,這似乎已經成為了面試的開門題,實際上面試官問這個問題,主要考察的是我們個人的概述能力和全域性視野。有些人在遇到這個問題時,總是抱怨自己每天在堆業務,沒有成長。事實上,很多情況下確定在堆業務,但並不是沒有成長的。並非做中介軟體或者技術架構才是成長,例如我們的需求分析能力,溝通共同作業能力,產品思維能力,抽象建模能力等,都是一個非常重要的硬實力。

那麼我們在問專案時,怎麼回答才好呢?建議最好做到以下幾點:

  • 明確專案是做什麼的
  • 明確專案的價值。(為什麼做這個專案,它解決了使用者什麼痛點,它帶來什麼價值?)
  • 明確專案的功能。(這個專案涉及哪些功能?)
  • 明確專案的技術。(這個專案用到哪些技術?)
  • 明確個人在專案中的位置和作用。(你在這個專案的承擔角色?)
  • 明確專案的整體架構。
  • 明確專案的優缺點,如果重新設計你會如何設計。
  • 明確專案的亮點。(這個專案有什麼亮點?)
  • 明確技術成長。(你通過這個專案有哪些技術成長?)

Java 基礎:

  1. List和Set的區別
  2. HashSet是如何保證不重複的
  3. HashMap是執行緒安全的嗎,為什麼不是執行緒安全的(最好畫圖說明多執行緒環境下不安全)?
  4. HashMap的擴容過程
  5. HashMap1.7與1.8的區別,說明1.8做了哪些優化,如何優化的?
  6. final finally finalize
  7. 強參照、軟參照、弱參照、虛參照
  8. Java反射
  9. Arrays.sort實現原理 和 Collection實現原理
  10. LinkedHashMap 的應用
  11. cloneable介面實現原理
  12. 異常分類以及處理機制
  13. wait和sleep的區別
  14. 陣列在記憶體中如何分配

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等

Java 並行:

  1. synchronized的實現原理以及鎖優化
  2. volatile的實現原理
  3. Java的訊號燈
  4. synchronized在靜態方法和普通方法的區別
  5. 怎麼實現所有執行緒在等待某個事件的發生才會去執行?
  6. CAS ? CAS有什麼缺陷?如何解決?
  7. synchronized和lock有什麼區別?
  8. Hashtable是怎麼加鎖的?
  9. HashMap的並行問題?
  10. ConcurrenHashMap介紹?1.8中為什麼要用紅黑樹?
  11. AQS
  12. 如何檢測死鎖?怎麼預防死鎖?
  13. Java記憶體模型?
  14. 如何保證多執行緒下i++結果正確?
  15. 執行緒池的種類,區別和使用場景?
  16. 分析執行緒池的實現原理和執行緒的排程過程?
  17. 執行緒池如何調優,最大數目如何確認?
  18. ThreadLocal原理,用的時候需要注意什麼?
  19. CountDownLatch和CyclicBarrier 的用法,以及相互之間的差別?
  20. LockSupport工具
  21. Condition介面及其實現原理
  22. Fork/Join框架的理解
  23. 分段鎖的原理鎖力度減小的思考
  24. 八種阻塞佇列以及各個阻塞佇列的特性

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等

 

Spring 相關:

  1. BeanF actory和FactoryBean ?
  2. Spring IOC的理解,其初始化過程?
  3. BeanFactory和ApplicationContext ?
  4. Spring Bean的生命週期?如何被管理的?
  5. Spring Bean的載入過程是怎樣的?
  6. 如果要你實現Spring AOP ,請問怎麼實現?
  7. 如果要你實現Spring I0C ,你會注意哪些問題?
  8. Spring是如何管理事務的?事務管理機制?
  9. Spring的不同事務傳播行為有哪些?幹什麼用的?
  10. Spring中用到了哪些設計模式
  11. Spring MVC的工作原理
  12. Spring迴圈注入的原理
  13. Spring AOP的理解,各個術語,他們是怎麼相互工作的?
  14. Spring如何保證Controller並行的安全?

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等

 

Netty 相關:

  1. BIO、NIO和AIO
  2. Netty的各大元件
  3. Netty的執行緒模型
  4. TCP粘包/拆包的原因及解決方法
  5. 瞭解哪幾種序列化協定?包括使用場景和如何去選擇?
  6. Netty的零拷貝實現
  7. Netty的高效能表現在哪些方面?

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等

 

分散式相關:

  1. Dubbo的底層實現原理和機制
  2. 描述一-個服務 從釋出到被消費的詳細過程
  3. 分散式系統怎麼做服務治理
  4. 介面的冪等性的概念
  5. 訊息中介軟體如何解決訊息丟失問題
  6. Dubbo的服務請求失敗怎麼處理
  7. 重連機制會不會造成錯誤
  8. 對分散式事務的理解
  9. 如何實現負載均衡,有哪些演演算法可以實現?
  10. Zookeeper的用途,選舉的原理是什麼?
  11. 資料的垂直拆分水平拆分。
  12. zookeep er原理和適用場景
  13. zookeeper watch機制
  14. redis
  15. 分散式叢集下如何做到唯一-序列號
  16. 如何做一個分散式鎖
  17. 用過哪些MQ ,怎麼用的,和其他mq比較有什麼優缺點, MQ的連線是執行緒安全的嗎
  18. MQ系統的資料如何保證不失
  19. 列舉出你能想到的資料庫分庫分表策略;分庫分表後,如何解決全表查詢的問題
  20. zookeeper的選舉策略
  21. 全域性ID

資料庫:

  1. mysq|分頁有什麼優化
  2. 悲觀鎖、樂觀鎖
  3. 組合索引,最左原則
  4. mysql的表鎖、行鎖
  5. mysql效能優化
  6. mysql的索引分類: B+ , hash ;什麼情況用什麼索引
  7. 事務的特性和隔離級別

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等

 

快取:

  1. Redis用過哪些資料資料,以及Redis底層怎麼實現
  2. Redis快取穿透,快取雪崩
  3. 如何使用Redis來實現分散式鎖
  4. Redis的並行競爭問題如何解決
  5. Redis持久化的幾種方式,優缺點是什麼,怎麼實現的
  6. Redis的快取失效策略
  7. Redis叢集,高可用,原理
  8. Redis快取分片
  9. Redis的資料淘汰策略

JVM:

  1. 詳細jvm記憶體模型
  2. 講講什麼情況下回出現記憶體溢位,記憶體漏失?
  3. 說說Java執行緒棧
  4. JVM年輕代到年老代的晉升過程的判斷條件是什麼呢?
  5. JVM出現 fullGC 很頻繁,怎麼去線上排查問題?
  6. 類載入為什麼要使用雙親委派模式?有沒有什麼場景是打破了這個模式?
  7. 類的範例化順序
  8. JVM垃圾回收機制,何時觸發MinorGC等操作?
  9. JVM中一次完整的GC流程(從ygc到fgc)是怎樣的?
  10. 各種回收器,各自優缺點,重點CMS、G1
  11. 各種回收演演算法
  12. OOM錯誤,stackoverflow錯誤,permgen space錯誤

最後總結

最後的總結就給一些建議吧:

  • 可以去leetcode上刷題換換思路
  • 八大排序演演算法一定要手敲一遍(快排,堆排尤其重要)
  • 瞭解一些新興的技術
  • 面試之後面試官都會問你有沒有什麼問題,千萬不要沒問題,也別傻乎乎的問一些敏感問題
  • 瞭解你要面試的公司的產品及競爭產品

如果您需要獲取的話,一件三聯之後檢視下圖中的內容

思維腦圖展示:

◆JVM和效能優化:

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等

 

Java面試核心資料整理:

螞蟻金服技術面試題:資料庫+快取+併發程式設計+Spring+JVM+Netty等