螞蟻金服Java(4面):CAP+Lock鎖+分散式等
作為一個 Java 程式設計師,你平時總是陷在業務開發裡,每天噼裡啪啦忙敲著程式碼,上到系統開發,下到 Bug 修改,你感覺自己無所不能。然而偶爾的一次聚會,你聽說和自己一起出道的同學早已經年薪 50 萬,而自己卻囊中羞澀。於是你也想看看新機會,找個新平臺,好好發展。
但是面試的時候,當那個笑眯眯的面試官問出那些你再熟悉不過的 Java 問題時,你只是感覺似曾相識,卻怎麼也回答不到點上。比如 HashMap 的工作原理,再或者 volatile 的使用場景。
這個時候,你可能會懷疑自己的能力,也痛恨為什麼當初自己沒有好好複習。
面試,難還是不難?最終結果好還是不好?取決於面試者的底蘊(氣場+技能)、心態和認知以及溝通技巧。而一些主流的大型網際網路公司面試(阿里巴巴、京東、美團、滴滴)更是需要你在面試時展現出自己的能力,從而獲得面試官的欣賞和肯定。
而程式設計師在應聘時更是需要經歷層層面試。俗話說,磨刀不誤砍柴工,做好面試前的準備工作可以幫助大家更好的應對面試官的問題以及面試中的突發情況。

那麼我們一起來看看大型網際網路公司的面試題吧!需要答案詳解的可以加小編QQ群967051845,獲取!
螞蟻金服Java一面
- 自我介紹和專案
- Java的記憶體分割槽
- Java物件的回收方式,回收演算法。
- CMS和G1瞭解麼,CMS解決什麼問題,說一下回收的過程。
- CMS回收停頓了幾次,為什麼要停頓兩次。
- Java棧什麼時候會發生記憶體溢位,Java堆呢,說一種場景,我說集合類持有物件。
- 那集合類如何解決這個問題呢,我說用軟引用和弱引用,那你講一下這兩個引用的區別吧。
- Java裡的鎖瞭解哪些,說了Lock和synchronized
- 它們的使用方式和實現原理有什麼區別呢?
- synchronized鎖升級的過程,說了偏向鎖到輕量級鎖再到重量級鎖,然後問我它們分別是怎麼實現的,解決的是哪些問題,什麼時候會發生鎖升級。
- Tomcat瞭解麼,說一下類載入器結構吧。
- 說了Spring,問我Spring中如何讓A和B兩個bean按順序載入?
- 10億個數去重,我說用hash分片做,他說可能不均勻,然後我說了bitmap,他說那數字量更多怎麼辦,我說那就兩個bitmap把。他說下一題吧。
螞蟻金服Java二面:技術面
- 講一下專案
- 做的主要是Java對吧,講一下多執行緒把,用到哪些寫一下
- 寫了thread和runnable,然後寫了執行緒池,又問了執行緒池由哪些元件組成,有哪些執行緒池,分別怎麼使用,以及拒絕策略有哪些。
- 什麼時候多執行緒會發生死鎖,寫一個例子吧,然後我寫了一個兩個執行緒,兩個鎖,分別持有一個,請求另一個的死鎖例項。
- 集合類熟悉吧,寫一個題目,一個字串集合,找出pdd並且刪除。
- 然後說一下Redis吧,是單執行緒還是多執行緒,Redis的分散式怎麼做?
- RPC瞭解麼,我說了主要是協議棧+資料格式+序列化方式,然後需要有服務註冊中心管理生產者和消費者。
- TCP三次握手的過程,如果沒有第三次握手有什麼問題。
螞蟻金服三面:技術面
- 自我介紹
- cap瞭解麼,分別指什麼,base呢,強一致性和弱一致性有什麼方法來做,2pc瞭解麼,說一下大概過程。
- 負載均衡怎麼做的呢,為什麼這麼做?
- 瞭解過叢集雪崩麼?
- MySQL的主從複製怎麼做的,具體原理是什麼,有什麼優缺點。
- Redis有哪些叢集模式,各自的區別?
- 專案用到了多執行緒,如果執行緒數很多會怎麼樣?
- 分散式瞭解哪些東西,訊息隊列了解麼,用在什麼場景,說了削峰,限流和非同步。說了kafka,問我怎麼保證資料不丟失,以及確保訊息不會被重複消費。還問了訊息送達確認是怎麼做的。
- 講一下專案的主要架構,你在裡面做了什麼
- 有什麼比較複雜的業務邏輯講一下。
- 最大的難點是什麼,收穫是什麼。
螞蟻金服HR面:
- 工作中遇到的最大挑戰是什麼,你如何克服的?
- 你最大的優點和最大的缺點,各自說一個?
- 未來的職業發展,短期和長期的規劃是什麼?
【文章彩蛋】
給大家推薦一個 Java進階內推交流群967051845 ,不管你在地球哪個方位,不管你參加工作幾年都歡迎你的入駐!(群提供的架構技術+面試題目等500+資料集合,將是你不錯的學習庫。)
