天天看點

螞蟻中間件面試指南

螞蟻中間件面試指南

寫過代碼的技術同學都知道,中間件在整個技術體系裡的重要性。在過去的十多年裡,螞蟻金服自主研發出了金融級的分布式中間件 —— SOFAStack,并多次在極為複雜的場景下得到驗證,比如每年的雙 11。在螞蟻金服,中間件團隊是一個帶着“光環”的隊伍,CTO 程立、副 CTO 胡喜都出自這個組織……

文/圖 無暮

配置千萬條,叢集第一條,環境不比對,戰友兩行淚。——《流浪程式猿》

為什麼選擇螞蟻中間件

2 年前的這個時候,作為南哪大學(南京大學)實習求職大潮的一名小白,一開學各種網際網路大小廠學長學姐的内推郵件就塞滿了郵箱,特别是阿裡系的内推郵件各種部門玲琅滿目。要說為什麼在衆多内推中對螞蟻中間件情有獨鐘,說起來有表裡兩個原因:先說裡原因,一直覺得程式員的核心是用抽象和自動化來低成本和快速地實作更多的價值,而中間件則可以抽象出通用的能力為業務同學賦能,讓業務同學專心于業務,實作更大的業務價值;诶嘿,表原因是中間件部門的内推 JD 看起來要求還挺高的,笃定身邊好多的小夥伴都不敢投,自己投的話錄用機率比較大,對就是這麼膚淺!(希望老大看到不要給我 3.25)

面試的“心機“往事

大學實習的時候也投過阿裡,但當時本想着自己學校還可以,學習成績也不錯,找實習那不是嗖嗖的。以為面試隻是聊聊人生、聊聊課程項目走個過場,滿腦子想着找工作是不是也像考大學一樣,隻要學校好、成績好,就可以去個好公司。年輕人,Naive!接到的阿裡的電話面試,一連串的并發程式設計、虛拟機等教材上沒怎麼接觸到的詞彙面到快要“自閉”。幸好保研讓我有了“翻身農奴把歌唱”的機會。從研究所學生生涯的第一天起,就開始為一年後的阿裡實習生面試做準備。

對我來說準備面試是一個複習、應試和成長的過程。

複習 複習大學課程裡面學到的計算機基礎知識,包括資料結構、算法、作業系統和網絡相關知識。複習不僅僅是為了面試,也是能讓自己能夠整理歸納以前學過的知識,達到連點成線、織線成網的效果。很喜歡左耳朵耗子的一句話"基礎技術總是枯燥和有價值的。數學、算法、網絡、存儲等基礎技術吃得越透,越容易服務上層的各種衍生技術或産品"。等實踐多了,就會發現很多項目中用到的技術和基礎技術裡面的思路很相似。學好基礎技術走遍天下都不怕。

應試 準備面試就是一個應試的過程,面試很艱苦,需要經曆九九八十一難才能取得 offer,那就不得不說明年下半年中美合拍的西...面試考點。對于應屆生來說,其實考點還挺清晰的,網上已經有很多總結,也有很多面經:

  • 資料結構:常見資料結構 List、Map 和 Set 的實作原理和應用場景,稍微上升一點,java.util.* 裡面資料結構的源碼分析;
  • 算法:幾種排序算法的實作、複雜度和應用場景,稍微上升一點,當處理記憶體放不下的海量資料的 TOP K 問題、排序問題等等;
  • 作業系統:記憶體配置設定尋址、線程排程和磁盤通路;
  • 網絡:七層四層協定、TCP/IP 握手揮手和擁塞控制;
  • 資料庫:基本的 SQL、資料庫引擎的差別和索引的類型和原理。

"掌握"了上述的這些,個人覺得作為一個應屆畢業生來說就已經合格了。前提是真正的掌握,要“由表及裡,知其是以然”。最好是自己模拟問自己,能經受得住 3 輪以上的提問。

成長 成長主要來自于書籍的閱讀和探索。研一時間裡,陸陸續續把《Thinking In Java》、《Effective Java》、《Java Concurrency in Practice》、《深入了解 Java 虛拟機》和《Netty In Action》啃完,說實話能這麼閑,也要感謝我們南哪放養學院。回想起來,《Thinking In Java》和《Java Concurrency InPractice》這兩本書不愧為經典,内容由淺入深,很多知識點不僅僅告訴你怎麼樣,還講解原理是什麼、為什麼這樣。也是從讀這兩本書起,開始養成習慣采取三步法去了解一項技術:外在行為/表現是怎麼樣的;怎麼實作/原理是什麼;為什麼要選擇這樣做,目的是什麼,優劣是什麼。看書不僅僅能讓自己系統的掌握一項技術,技術書籍中往往還會留下一些進階知識的引子,我也是因為這些引子開始去探索 AQS、讀寫鎖、線程池和 ForkJoinPool 之類的源碼,也是這些探索給我今後的開發和設計帶來了很大的幫助。

螞蟻中間件面試指南

應屆生面試考察的是基礎、思維和潛力。基礎和思維是在平時的學習和面試的準備中培養的,沒人有能一眼看出你是個"武學奇才",潛力是讓面試官看到你相比其他人的優勢和亮點。對于面試,談談自己的了解。面試的目的是向面試官“展現自己的優勢”最終拿到 offer,而優勢是在和面試官的對話中展現。如何最大程度的展現出自己的優勢,充足的準備是一方面,另一方面引導面試官去問自己擅長的技能是很重要的一點。首先履歷上要下功夫,履歷上寫出來的東西應該都是自己希望面試官去問的、有亮點的東西,而不是隻是陳列自己做了什麼項目,并且履歷上的每個點最好經得住三、四問,最好能回答到面試官也不熟悉的領域。其次在自我介紹的時候,要引導話題,将焦點聚集在擅長的部分,這樣才不會出現面試節奏被帶跑的情況(恨不得就直接說快問我這些,我都準備好了)。

見聞及感受

想要變強,首先要站在強者中間。在螞蟻實習和工作的一年半時間裡,我對這句話有很深的體會。我參加過大大小小、各種技術主題的分享講座,收獲技術知識的同時,可以見識到他人的思維方式,拓寬自己的眼界,從各種角度獲得對自己的提升。除此之外,在講座中扮演分享者的角色,更是一個學習的機會。我曾經在實習期間做了一次 AQS 的分享,做分享對自己的提高是巨大的,想要把事情來龍去脈說的明白,既需要透徹的了解、廣泛的涉獵、又要有觸類旁通的總結和深入淺出的表述。螞蟻為技術分享提供了自由的平台,“在這樣的環境下,從不會缺少進步的機會”。

在巨人的肩膀上,站得更高,看得更遠。除了平日衆多的分享以外,螞蟻還專門有一個技術大學為應屆萌新特别準備了青年近衛軍新人培養計劃。在入職後的兩個月内,從線上線下,從理論到實踐,各個業務線和技術線的老司機将向新人同學全方位地介紹業務背景,講解基礎技術,幫助同學們快速落地。老師們知識淵博、風趣幽默,從便民服務到普惠金融,從分布式事務到單元化架構,他們獨到的見解和講授,都使我受益良多。另外在實戰環節中專門配備了技術指導員和項目指導員輔導新同學從 0 到 1 完成一款“minialipay”的開發,在短短的 2 周内,收獲頗豐。

螞蟻中間件面試指南

歡樂的中間件團隊在 Outing

“小螺絲也能發揮大能量。”每個人都是公司的螺絲釘,雙十一、新春紅包千萬 TPS 的考驗,每一次突破的背後都是鍊路上所有部門的集體突破。螞蟻天生的金融屬性不僅對中間件的正确性和穩定性提出了極高的要求,加速發展的業務也要求中間件随時接受新的挑戰,像火箭一般迅速疊代和拓展,這火箭的巨大能量來自于每一顆螺絲釘自我挑戰和突破帶來的推動力。從入職起一坐上通信中間件這艘火箭,我就開始感受到這比脫發還要快的功能開發速度。

剛入職不到一周,就被師兄丢過來一個多 Session 幂等的需求,上遊資料同步催得很急要求2周内完成。才入職不能虛,接下需求,兩周内設計方案、啃代碼、一把梭,最終按時完成,還是挺有成就感的。"不丢、不錯、不亂"資料同步的三不要求對消息隊列的代碼品質和功能的完備性提出了極高的要求。都知道并發程式設計容易出錯,而螞蟻消息隊列是基于分布式存儲盤古的,将并發程式設計從單程序擴充到多程序,在分布式存儲的環境下沒有鎖的情況下,如何保證正确性就成了功能開發的首要障礙。憑借着這次研發經驗,接着又在半年多裡,陸續開發完成了 Topic 無損擴縮容、Topic 無損叢集遷移和 Chaos 正确性驗證等等功能。

繼去 IOE 之後,技術上對去中心化,輕量虛拟化,無伺服器等技術需求愈發強烈,而 Serverless 必将借勢迅速發展,未來 Serverless 将在雲計算的舞台上大放異彩。螞蟻正處于 Serverless 轉型的技術紅利時代,“既有挑戰,又充滿機遇”。期待着學弟學妹加入螞蟻中間件大家庭,一起共建螞蟻 Serverless 未來。

關于螞蟻“青年近衛軍”

“青年近衛軍”是螞蟻技術校招新人金牌培養項目,由螞蟻技術大學建立,該品牌誕生于 2008 年,總計精英化培養 1500+ 同學。

為了幫助新員工快速融入和掌握基礎的專業技術技能,螞蟻技術團隊為應屆畢業生制定了青年近衛軍入職教育訓練,包括通用内容和崗位内容,并比對實戰項目。1 年全鍊路培養,融合了業務知識、上手技能、職業素養,并利用網絡精品課題、線下體驗式學習、活動場、戰略級項目養兵等多種方式讓技術新人更自主融入學習,融入螞蟻。

如今,“青年近衛軍”已不僅是新人培養項目的名稱,更成為了螞蟻校招技術新人的代名詞。

加入我們

----

崗位描述:

我們來自于螞蟻金服的中間件團隊,是螞蟻金服最為核心的基礎部門之一,包括研發架構,微服務中間件,消息中間件,資料中間件等領域。

1.加入我們,你将參與 SOFAStack 開源軟體的研發,打造金融級分布式架構體系。

2.加入我們,你将接受每年雙十一、雙十二帶來的高并發、高性能的極緻挑戰。

3.加入我們,你将在實際工作中接觸到世界前沿技術的研發,引領未來。

崗位要求:

1.酷愛着計算機以及網際網路技術,熱衷于解決挑戰性的問題,追求極緻的使用者體驗。

2.癡迷于資料結構和算法,熱衷于 ACM,常常為看到“accept”而興奮的手足舞蹈。

3.至少熟悉一門計算機語言(C,C++,Java,Python,Golang,Rust),有良好和快速的學習能力。

4.有良好的進取心和責任感,有良好的團隊合作精神。

5.有大賽獲獎經驗,開源項目經驗者優先。

履歷請投遞到: [email protected]