2019螞蟻金服面試總結(Java方向)
年初得螞蟻垂青(本人非985/211,螞蟻真的不是很在乎學歷!!!),有了一次社招機會,前後經歷三關,受益匪淺,在此與各位朋友分享經歷與心得。
第一關:線上筆試
筆試題內容如下:
說明:
構建一個本地快取,快取的物件是使用者ID以及部分使用者的資訊。
當從快取中獲取某個使用者資料時,如果發現該使用者資料上次更新時間超過30分鐘,則需要更新一次該快取。
1.需考慮多執行緒訪問的情況。
2.請不要使用第三方類庫實現。
3.可以新增適當日誌。
4.可以有適當的虛擬碼。
補充:UserInfo結構
public class UserInfo {
private String userId;
private String userName;
private String cardNo;
//省略其它資訊和getter 和setter
}
完成下面的程式碼
//: TODO 可自行定義需要的變數
/**
* 初始化使用者資訊快取
*/
public void initUserInfoCache() {
//: TODO 完成此處的程式碼
}
/**
* 根據id從快取中獲取使用者資訊
*/
public UserInfo getUserInfoFromCacheById(String id) {
//: TODO 完成此處的程式碼
}
/**
* 根據id更新快取使用者資訊
*/
public void updateUserInfoCache(String id) {
//: TODO 完成此處的程式碼
}
題目是讓在 考慮多執行緒的情況下實現一個快取,題目相對簡單(經歷過2016的阿里校招線上筆試,簡答題難度至今 記(還)憶(是)猶(不)新(會)!!!),時間上要求寬鬆,24小時內答完即可。
第二關:一輪電話面試
筆試題提交完畢後,大約2天后,收到一個來自於杭州螞蟻金服IP的固定電話,不巧當時正在另外一家單位面試,恰逢一面結束,等待二面的空隙裡,沒辦法,接了電話果然是邀請馬上進行一輪電面。內心是崩潰的...。和麵試官說了暫時不方便,約了半小時後再開始,面試官很爽快的同意了。
一開始依舊是自我介紹,一面提問的問題很多,很雜,涉及面很廣,著重於基礎,共面了55分鐘左右。事後回憶問題如下:
1.jvm記憶體管理和分配
2.Redis
3.資料庫樂觀鎖
3.currenthashmap的缺點
4.資料庫併發
5.dubbo的呼叫模式,序列化
6.事務的最大級別,跨庫?跨表?
7.dubbo上游100萬,下游10萬,如何處理
8.使用者一次請求訪問web的詳細過程(從瀏覽器到web伺服器經歷詳細過程)
9.spring的bean的週期
10.詳細說下參與的專案的架構
11.hashmap 觸發紅黑樹
12.MySQL支援的跨庫事務
...
第三關:二輪電話面試
距離一面過了約一週,二面姍姍來遲。與一面的Java基礎相比,二面更偏重於提問 經歷的專案的架構,以及使用的框架的底層原理。(突破了會用的範圍,理解框架的底層實現原理很重要,但這個很容易忽略!)。內心忐忑的聊了45分鐘左右,結束了二面。
事後回憶二面問題如下:
1.說一說你最近參與的印象最深的專案,專案的架構,用到哪些技術
2.說一說spring容器的實現方式
3.說一說redis快取應用場景
4.說一說eletasic-job與其他job定時任務的區別,以及它的優點是什麼
...
附框架學習圖:

總結:螞蟻還是很看重基礎和對框架的原理的理解程度的,說白了,對使用的技術,要知其然也知其所以然。無論是框架還是JavaAPI,底層的研究理解永遠不能停。 大道至簡,知易行難。
歡迎做Java的工程師朋友們加入Java架構解析:923116658
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!