我是如何拿到螞蟻金服 offer 的 ?(Java崗)

一、夢想和被拒

二、積累

三、結語

15-17年,壹錢包實習、工作,基礎中間件組。
17年8月-19年3月網聯清算有限公司,基礎組件組。
</pre>

webp

我是如何拿到螞蟻金服 offer 的 ?

一、夢想和被拒

進入阿里一直都是我的夢想,我想這跟很多同學是相似的。我前後被拒了兩次,分別是大三找實習和工作一年後。第二次嘗試一面都沒過,但那一次電話面試經歷了一個半小時,被問了十幾個問題,面試結束後感覺腦子被掏空了,沒辦法思考,我也看到了自己的不足,很多基礎知識非常不紮實,隨機應變能力差。後面針對基礎知識做了很多積累。

我看過一篇技術文章,其中一個人寫到技術工作者應該偶爾出去面試一下,讓外界來評判你的價值,發現自身的不足。我贊同通過跟外部同行對比找出自身不足,但途徑可以換成跟社區、優秀的同事交流和學習,畢竟面試是一個耗費體力和時間的事兒。

工作第一年,投出去的簡歷很少有迴應,恰好此時網聯正在籌建,同時壹錢包也是網聯的股東之一,需要從支付機構借調人力。當時也爲面試阿里做了些準備,所以在網聯的筆試和麪試都很順利,就這樣離開了上海,來到北京。

這裏要溫馨提示一下各位想進阿里的朋友,要做好充分的準備,不要浪費機會,你的每個回答,都會被記錄,雖然你可能因爲種種原因失敗,但都會爲你下一次挑戰打下基礎。

二、積累

我想強調最好的準備是你認真投入到你當前的工作,把它做的漂亮、優雅,至於一些面試題目和技巧,我個人覺得重要程度沒那麼高。所以這一章命名爲積累而不是準備。

面對挑戰的勇氣。

16年剛畢業,交給我的第一個任務是學習codis的負載均衡策略,並將其應用到公司自研的分佈式緩存上。codis是go寫的,我第一反應是我能看懂嗎。但還是硬着頭皮去看了源碼,我印象非常深刻,codis的負載均衡是用三個嵌套的for循環寫的,go語言並沒有成爲障礙,反而給我很多自信。但這僅僅是個開始。

更難的是如何管理集羣,擴容、縮容、遷移時集羣狀態的管理。最初我沒掌握方法,一股腦的寫,發現實現了A功能,但B功能有問題了,深刻體會到了改了一個bug,引入新bug的痛苦。我把很多功能和判斷寫在一起,導致這一問題。

探索的過程花了很久,最終我慢慢領悟了一些方法,先將流程肢解開,畫流程圖,像八爪魚一樣,將每個圖中每個塊(步驟)用一個函數實現,將所有函數按照流程拼在一起,後面當我發現bug,只在拼接的方法上做了調整,並沒有修改太多代碼。

經過三個月的開發和測試,完全跑通。這個項目在當年獲得了壹錢包年度優秀項目提名,看着其他項目都是百人規模,而這個項目的核心成員只有3、4個人時,自豪感油然而生。這裏我也非常感謝我的領導。我的建議是勇於承擔任務,逼着自己做些有挑戰的工作。

窺源碼,知真意。

我非常推薦大家去仔細、認真的去讀一個優秀的開源工程的代碼。來到網聯主要負責消息隊列。當時我們選擇了RocketMQ,很大程度也是因爲相信阿里的技術能力。開始我們並沒有着急上線,而是閱讀了各個組件的大部分源碼,確認了它的同步刷盤、同步複製、消息重試、定時消息等等各種主要功能是如何實現的。

當然也不僅僅是RocketMQ,我還整理了一份工作中常用的框架源碼思維導圖:

webp

我是如何拿到螞蟻金服 offer 的 ?

需要導圖相關學習資料加羣:810589193,還有更完整的Java架構思維導圖

一開始有4個同事一起看源碼,最後只剩我一個還在debug。我感受到了解決疑惑的快感,從開源代碼中學到了很多技術細節和技巧。窺源碼,知真意也是我在即將從網聯離職之前給內部培訓時的標題。我從中學到了一個優秀中間件的網絡線程模型應該是什麼樣子、內存池技術、如何增強線程功能、如何實現同步流程等等。

熟知源碼還能幫助我從源碼層面定位問題。當時我們開啓了CommitLog的預熱功能,之前也熟讀了預熱的實現邏輯,但生產上還是出現了bug,因爲對實現邏輯很敏感,在2小時內定位並解決了問題,防止剩餘5個IDC出現類似的問題。

我建議如果你在工作中用到Dubbo、ZK或其他組件,甚至不是Java寫的,你都可以嘗試去搞清楚他們實現的方法,這對於你後面的職業生涯有非常大的幫助,如果你能成爲某開源軟件的Contributor或者更高,對你求職將會產生巨大的幫助。

讀書。

爲了搞清楚RocketMQ網絡層的實現原理,我嘗試去讀Netty的源碼,並結合《Netty權威指南》和《Netty實戰》理解Netty的工作原理和RMQ的使用方法。看過Netty的部分代碼給我留下最深刻的印象是好的產品是無數個細節堆砌出來的。去年爲了解決RMQ自旋鎖和重入鎖的使用問題,閱讀了《Java併發編程實戰》,這是一本非常經典的Java併發的書籍,非常推薦大家深入閱讀。

同時我也喜歡讀一些我稱之爲“泛泛而談”的書,不是說這些書內容平庸,而是內容廣度大,能夠拓展眼界,推薦大家閱讀《大型網站系統與Java中間件實踐》。如果你聽了我對RocketMQ的描述並感興趣,推薦你閱讀《RocketMQ技術內幕》。

三、結語

如果你想突破自己的天花板,那一定要別人付出更多,這個過程是很辛苦的。如果你做好了充足的準備,那就自信的表達你的觀點,不要因爲不自信讓面試官覺得你掌握的不紮實。如果你不會或拿不準,如實告知即可,遇到不會的很正常,不要不懂裝懂。如果你認準了一條路,堅持走下去,你一定會獲得很多收穫。

歡迎做Java的工程師朋友們加入Java貓的架構學習基地:810589193進×××流,我爲大家準備了免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

在Java路上我們一起成長,共同進步!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章