寫過代碼的技術同學都知道,中間件在整個技術體系里的重要性。在過去的十多年裡,螞蟻金服自主研發出了金融級的分散式中間件 —— 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]

推薦閱讀:

相关文章