在過去很長一段時間內,國內互聯網一直處于三足鼎立狀態,BAT即百度、阿里巴巴、騰訊,而現在,涌現了越來越多的具有強競爭力的新興互聯網公司,螞蟻金服就是其中之一,下面分享以下今年螞蟻金服最新的面試真題,題目來源于幾位已經成功入職螞蟻金服的程式員,希望能夠給大家帶來一些啟發!
對于專案介紹問題的一些相關經驗:
對于程式員來說,大部分的互聯網公司面試的第一個問題就是專案介紹,這似乎已經成為了面試的開門題,實際上面試官問這個問題,主要考察的是我們個人的概述能力和全域視野,有些人在遇到這個問題時,總是抱怨自己每天在堆業務,沒有成長,事實上,很多情況下確定在堆業務,但并不是沒有成長的,并非做中間件或者技術架構才是成長,例如我們的需求分析能力,溝通協作能力,產品思維能力,抽象建模能力等,都是一個非常重要的硬實力,
那么我們在問專案時,怎么回答才好呢?建議最好做到以下幾點:
- 明確專案是做什么的
- 明確專案的價值,(為什么做這個專案,它解決了用戶什么痛點,它帶來什么價值?)
- 明確專案的功能,(這個專案涉及哪些功能?)
- 明確專案的技術,(這個專案用到哪些技術?)
- 明確個人在專案中的位置和作用,(你在這個專案的承擔角色?)
- 明確專案的整體架構,
- 明確專案的優缺點,如果重新設計你會如何設計,
- 明確專案的亮點,(這個專案有什么亮點?)
- 明確技術成長,(你通過這個專案有哪些技術成長?)
Java 基礎:
- List和Set的區別
- HashSet是如何保證不重復的
- HashMap是執行緒安全的嗎,為什么不是執行緒安全的(最好畫圖說明多執行緒環境下不安全)?
- HashMap的擴容程序
- HashMap1.7與1.8的區別,說明1.8做了哪些優化,如何優化的?
- final finally finalize
- 強參考、軟參考、弱參考、虛參考
- Java反射
- Arrays.sort實作原理 和 Collection實作原理
- LinkedHashMap 的應用
- cloneable介面實作原理
- 例外分類以及處理機制
- wait和sleep的區別
- 陣列在記憶體中如何分配


Java 并發:
- synchronized的實作原理以及鎖優化
- volatile的實作原理
- Java的信號燈
- synchronized在靜態方法和普通方法的區別
- 怎么實作所有執行緒在等待某個事件的發生才會去執行?
- CAS ? CAS有什么缺陷?如何解決?
- synchronized和lock有什么區別?
- Hashtable是怎么加鎖的?
- HashMap的并發問題?
- ConcurrenHashMap介紹?1.8中為什么要用紅黑樹?
- AQS
- 如何檢測死鎖?怎么預防死鎖?
- Java記憶體模型?
- 如何保證多執行緒下i++結果正確?
- 執行緒池的種類,區別和使用場景?
- 分析執行緒池的實作原理和執行緒的調度程序?
- 執行緒池如何調優,最大數目如何確認?
- ThreadLocal原理,用的時候需要注意什么?
- CountDownLatch和CyclicBarrier 的用法,以及相互之間的差別?
- LockSupport工具
- Condition介面及其實作原理
- Fork/Join框架的理解
- 分段鎖的原理鎖力度減小的思考
- 八種阻塞佇列以及各個阻塞佇列的特性

Spring 相關:
- BeanF actory和FactoryBean ?
- Spring IOC的理解,其初始化程序?
- BeanFactory和ApplicationContext ?
- Spring Bean的生命周期?如何被管理的?
- Spring Bean的加載程序是怎樣的?
- 如果要你實作Spring AOP ,請問怎么實作?
- 如果要你實作Spring I0C ,你會注意哪些問題?
- Spring是如何管理事務的?事務管理機制?
- Spring的不同事務傳播行為有哪些?干什么用的?
- Spring中用到了哪些設計模式
- Spring MVC的作業原理
- Spring回圈注入的原理
- Spring AOP的理解,各個術語,他們是怎么相互作業的?
- Spring如何保證Controller并發的安全?

Netty 相關:
- BIO、NIO和AIO
- Netty的各大組件
- Netty的執行緒模型
- TCP粘包/拆包的原因及解決方法
- 了解哪幾種序列化協議?包括使用場景和如何去選擇?
- Netty的零拷貝實作
- Netty的高性能表現在哪些方面?

分布式相關:
- Dubbo的底層實作原理和機制
- 描述一-個服務 從發布到被消費的詳細程序
- 分布式系統怎么做服務治理
- 介面的冪等性的概念
- 訊息中間件如何解決訊息丟失問題
- Dubbo的服務請求失敗怎么處理
- 重連機制會不會造成錯誤
- 對分布式事務的理解
- 如何實作負載均衡,有哪些演算法可以實作?
- Zookeeper的用途,選舉的原理是什么?
- 資料的垂直拆分水平拆分,
- zookeep er原理和適用場景
- zookeeper watch機制
- redis
- 分布式集群下如何做到唯一-序列號
- 如何做一個分布式鎖
- 用過哪些MQ ,怎么用的,和其他mq比較有什么優缺點, MQ的連接是執行緒安全的嗎
- MQ系統的資料如何保證不失
- 列舉出你能想到的資料庫分庫分表策略;分庫分表后,如何解決全表查詢的問題
- zookeeper的選舉策略
- 全域ID
資料庫:
- mysq|分頁有什么優化
- 悲觀鎖、樂觀鎖
- 組合索引,最左原則
- mysql的表鎖、行鎖
- mysql性能優化
- mysql的索引分類: B+ , hash ;什么情況用什么索引
- 事務的特性和隔離級別

快取:
- Redis用過哪些資料資料,以及Redis底層怎么實作
- Redis快取穿透,快取雪崩
- 如何使用Redis來實作分布式鎖
- Redis的并發競爭問題如何解決
- Redis持久化的幾種方式,優缺點是什么,怎么實作的
- Redis的快取失效策略
- Redis集群,高可用,原理
- Redis快取分片
- Redis的資料淘汰策略
JVM:
- 詳細jvm記憶體模型
- 講講什么情況下回出現記憶體溢位,記憶體泄漏?
- 說說Java執行緒堆疊
- JVM年輕代到年老代的晉升程序的判斷條件是什么呢?
- JVM出現 fullGC 很頻繁,怎么去線上排查問題?
- 類加載為什么要使用雙親委派模式?有沒有什么場景是打破了這個模式?
- 類的實體化順序
- JVM垃圾回識訓制,何時觸發MinorGC等操作?
- JVM中一次完整的GC流程(從ygc到fgc)是怎樣的?
- 各種回收器,各自優缺點,重點CMS、G1
- 各種回收演算法
- OOM錯誤,stackoverflow錯誤,permgen space錯誤
最后總結
最后的總結就給一些建議吧:
- 可以去leetcode上刷題換換思路
- 八大排序演算法一定要手敲一遍(快排,堆排尤其重要)
- 了解一些新興的技術
- 面試之后面試官都會問你有沒有什么問題,千萬不要沒問題,也別傻乎乎的問一些敏感問題
- 了解你要面試的公司的產品及競爭產品
如果您需要獲取的話,一件三聯之后查看下圖中的內容

思維腦圖展示:
◆JVM和性能優化:

Java面試核心資料整理:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/177224.html
標籤:其他
