不滿現狀,三年逆襲拿下BAJTM高薪offer,自律的Java程式設計師到底有多可怕

java架構00發表於2020-10-22

15年畢業,計算機專業出身,對軟體開發很感興趣,所以畢業找工作的時候就一直投IT行業的職位。剛踏入這個行業時,以為突擊一下東拼西湊的面試材料,就能有個很好的收穫。結果卻是,別說大公司了,就是很多看不上的小公司的筆試題都過不去。

焦躁階段

後來我去了本地的一個小公司去做服務端的開發。雖然叫服務端開發,但其實就是做系統指標監控功能,從DB中讀取一些指標資料,透過圖表的形式展現在瀏覽器中,所用的技術無非就是Spring MVC那一套。 這種CRUD的工作內容做時間長了,就純粹是體力勞動了,技術視野沒辦法開啟。

即使寫這麼簡單的功能程式碼,卻還總是被leader批評,說我 寫的程式碼質量太差,配不上這幾千塊的工資。人總是要臉面的,為了改變這種狀況,就開始想著如何在平凡的工作中把事情做到極致,開始關注程式碼質量,開始真正的啃起了 《Java程式設計思想》、《effective java》、《設計模式》這些書。

同時強迫自己在程式碼開發前,多畫一些架構圖、資料流程圖,寫程式碼的時候也強迫自己程式碼分層,經過半年的磨鍊,漸漸的也能寫出一些松耦合高內聚的程式碼,也改變了滿屏if-else亂飛的現象。leader也不再說我程式碼差了,還給我漲了幾百塊錢(知識就是金錢)!

開啟見識階段

當時我以為這就是優秀程式設計師的核心能力,就鼓足勇氣去投了一些大公司的職位,卻沒收到一個面試邀請函。後來投了幾個小公司的面試,收到了面試卻沒收到offer,因為有的面試題我根本沒有概念,比如:

相比關係型資料庫,NoSQL的優勢在哪裡,你們在什麼場景下會用到?分析日誌裡存的都是賬號登陸資訊,一天100G左右,找某一時間段內登陸次數最多的一個賬號你們的併發量有多大,對於雪崩現象是如何規避的?

這些問題讓我意識到:語法與設計模式只是程式設計師基本技能而已,要想進一步發展,必須在 資料結構、高併發、分散式技術等方面提高。最開始學習的時候是很艱難的,基礎弱,加上工作中又沒有這些技術的使用場景,所以只能在論壇、部落格等看零碎的文章,進步比較慢。

要想系統的學習,圖書和網路課程是比較好的選擇。我買了諸如《 java併發程式設計實踐》、《 大型分散式網站架構設計與時間》、《 Spring Cloud與微服務構建》等書,來來回回看了好幾遍。然後在網上看了些影片,有免費的,也有收費的。我還花了近半年時間系統性地學習了一套課程,學完之後對Java相關的技能有了更為體系化的瞭解。同時, 對於非科班出身或基礎知識不夠紮實的工程師來說,也可以有效起到查漏補缺的作用。

Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?


之後我就試著在工作中利用這些技術,當時的狀態就是“拿著錘子後,看到哪裡都是釘子”,學到一個新技術後,就想強行用在任何專案上,leader有時候說我瘋了,可我覺得也不必鄙視這種經歷,凡事都有一個認知過程,這也是一種積累。

知識深化階段

大概17年下半年,我就投了一些大的網際網路公司職位,比上次好一點,有一些公司給我了面試邀請,但最後卻都還是沒收到offer。

後來覆盤一下面試問題,發現我在整體技術面上回答得較好,但在細節技術點上,有點吃力,比如面試官問:

聊一聊你對JVM的原理,如何減少Full GC的情況?訊息佇列如何保證順序消費?如何保證at least once特性?資料是透過push還是pull方式給到消費端,各自有什麼弊端?如果消費失敗,可能是哪些原因引起?如果是因為網路原因引起,該如何解決?

通俗的話來講,就是雖然我見識了各種各樣的輪子了,也知道各種輪子適合在什麼樣的路上跑,但不知道為什麼適合。針對這種情況,結合已有的知識體系,選擇了一個方面進行了深入,我當時選的是訊息佇列的深入研究,從網路協議、服務端訊息儲存、客戶端消費、各種異常情況的處理等都摸了一遍。

這個過程我會針對每個環節進行假設反問,如果這一步失敗了,會發生什麼情況,該如何處理?這種思維培養了我對技術問題細節思考的能力,現在看來真的是受益匪淺。

18年上半年,我又去試了大公司的面試,雖然過程磕磕絆絆,但是面試官覺得我思考問題還是挺全面的,潛力比較大,因此最後收到了待遇豐厚的Offer!

逆襲路上的3點體會

為什麼我會一直執念於要去BAT之類的大型網際網路公司工作?除了因為薪水誘人,更是因為能有大規模分散式的技術可以挑戰。

回首三年來的升級打怪之路,從15年畢業後,能到成為頂尖網際網路公司的資深Java開發工程師,不免感慨良多。如果說讓我給大家分享幾點心得,那以下的3點應該是我近兩年來最大的感觸:

跳出舒適圈,找到目標是前進的起點。如果你在自己當下的工作中無法接觸太多的新技術,可以嘗試多去外面公司面試,這能在一定程度上幫助自己找到學習的目標;

跳槽要趁早,杜絕成為溫水裡的青蛙。對於想跳槽到大公司的同學來說,一定要趁早。因為同樣的水平情況下,大公司更會看中「潛力」—— 年齡越大,潛力越小;

始終保持你的學習欲。對於工程師來說,學習永無止境。但埋頭苦學是不夠的,你要注意自己的學習一定要有系統性,除了手頭的專案和身邊“大牛”的指導外,看書和網路課程是最有效的方法,用少量的金錢換取寶貴的時間,是非常值得的。

如果你依然覺得有些茫然,那麼以下的福利很適合你,有自己個人學習規劃的可以忽略,但是期待提升自己技術棧的也可以看看(文末彩蛋)

針對大型網際網路企業所整理出來最適合工程師們學習的一套正確方向!

關注新增助理VX:MXW5308 即可免費獲取文末學習資料

1.阿1巴巴的資料庫連線池druid

2.阿里巴巴Dubbo+Zookeeper註冊中心

3.阿里巴巴MyCat分庫分表

4.pushlets推送技術

5.Linux作業系統下shell程式設計

6.Redis快取技術(session統一管理案例實現)

7.引入介面聯調過程

8.支付寶和微信支付

9.支付中的掉單處理

10.處理常見超賣問題

11.網際網路金融專案的撮合業務系統

12.網際網路金融專案的滿標稽核、散標釋出

13.訊息佇列ActiveMQ的具體應用

14.樂觀鎖、悲觀鎖、分散式鎖

15.介面安全方案

16.叢集環境下的定時任務

17.分散式檔案系統FastDFS

分散式檔案系統儲存合同檔案

18.NoSQL&MongoDB&Cassandra

19.HttpComponents

21.20FreeMarker/Velocity

22.SpringBoot

23.Log4j2.

24.效能調優

25.JVM調優

26.Java程式效能最佳化

27.Tomcat

28.Mysql

29.Spring IOC

30.Spring AOP

31.Spring MVC

32.Spring 5新特性

33.Mybatis

34.分散式架構

35.架構核心服務層技術

36.架構關鍵技術設施

37.分散式訊息通訊 非同步於MQ

38.分散式快取

39.Redis

40.Memcached

41.MongoDB

42.資料儲存

43.高併發分流技術Nginx

44.分散式解決方案

45.微服務架構

46.團隊協作開發

效能調優

JVM調優

Java程式效能最佳化

Tomcat

Mysql

應用框架原始碼解讀

Spring IOC

Spring AOP

Spring MVC

Spring 5新特性

Mybatis

分散式架構專題

分散式架構思維

架構開發基礎

架構核心服務層技術

架構關鍵技術設施

分散式訊息通訊 非同步於MQ

分散式快取

Redis

Memcached

MongoDB

資料儲存

高併發分流技術Nginx

分散式解決方案

微服務架構

團隊協作開發

Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?


Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?

工程化+框架原始碼

Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?

效能調優+併發程式設計

Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?

微服務專題

Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?

分散式框架+專案實戰

如果你對以上知識點能掌握到一定程度那麼進入BAT不是什麼大問題!

{附}個人總結收集到的一些面試資料圖以及針對上面技術錄製的精講進階架構影片資料

Java程式設計師不滿自身現狀,是如何在三年內一步步進入BAT拿高薪?

高頻面試題答案文件獲取,掃一掃即可免費獲取 

(影片教程+面試寶典+pdf書籍+筆記+學 維導圖 )

Java進階架構師影片教程:

程式設計師必備演算法教程:

Java面試教程合集:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985897/viewspace-2728820/,如需轉載,請註明出處,否則將追究法律責任。

相關文章