螞蟻金服技術面試題:數據庫+緩存+併發編程+Spring+JVM+Netty等

在過去很長一段時間內,國內互聯網一直處於三足鼎立狀態,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等


分享到:


相關文章: