Java工程師修煉之路(從小白到BAT的兩年學習歷程)

微信公衆號【程序員江湖】前端

做者黃小斜,斜槓青年,某985碩士,阿里研發工程師,於2018 年秋招拿到 BAT 頭條、網易、滴滴等 8 個大廠 offerjava

我的擅長領域 :自學編程、技術校園招聘、軟件工程考研(關注公衆號後回覆」資料「便可領取 3T 免費技術學習資源)git

大學時期的迷茫與堅決程序員

個人本科專業是電子信息工程,基本沒有接觸過計算機專業的課程,只學過c語言,而後在大三的時候接觸過java,Android,以及前端開發。github

那時候我還不知道軟件開發的水有多深,抱着試一試的態度去應聘了不少公司。結果可想而知。web

當年我對遊戲開發頗有興趣,特別是對網易遊戲情有獨鍾,可是當我看到網易遊戲研發工程師的招聘要求時,我只能望而卻步,由於它要求學歷至少是985的碩士。面試

也由於這個契機,我在大三的暑假開始準備考研,花了一個月的時間深思熟慮以後,選擇了我大華科。算法

畢竟是跨專業,在複習過程仍是有點吃力的,可是就靠着一股毅力和執着,半年以後,順利地考上了,成績還意外地很是好。docker

研究生時期的探索和規劃數據庫

對於即將讀研的同窗來講,通常有兩件事很重要,一件事是選擇導師,一件事是選擇方向。

我當時本着想要找實習的想法選擇了我如今的導師,事實證實個人選擇仍是很正確的。

而選擇方向這件事,我卻是折騰了很久。研一期間我作的最多的事情就是看書了,當時本身的方向還不明確,因此找了不少書來看。當別人都在專研數據挖掘和機器學習時,我還在各類方向之間搖擺不定。

我在讀研以前想作遊戲開發和Android開發,但我之前也學過Java Web開發。因而我在網上了解對應方向的資訊,發現遊戲研發的就業面比較窄,而且基於我以前的學習經歷,java開發可能更加適合我。最終在學校的實訓項目中我選擇了Java Web項目,今後也真正意義上地踏上了Java的學習之路。

個人Java入門之路

以前說過,在研一期間看了不少計算機專業的書籍,好比計算機網絡,操做系統,數據庫等等,雖然吸取得都不太好,但也算是看過了。

因而我開始踏上學習Java的道路。最開始我找了一些Java的書單,而後買了一些比較基礎的書籍,先啃爲敬。那時候我看過《Java從入門到精通》這種爛大街的書,也看過《Java編程思想》這種很難懂的書。

一段時間後我感受吸取效果很差,因而開始把目光轉向視頻課程了。那時候聽舍友力神的建議,到極客學院上看一些視頻課程,我當時就以爲這個講的比書上要好懂一些。後來我又接觸到了慕課網,中國MOOC等網站,逐漸地把相關的技術課程都看完了。

那時候正好咱們的項目實訓還在進行,因而我就把趁熱打鐵把這些東西用在了項目當中,而且第一次用博客記錄下個人實踐經驗。

如今回頭想一想,此時的我也只不過是剛剛入門了Java以及web開發。然而那時候不知道天高地厚的我,就開始xjb投各大公司的Java實習崗位了。結果可想而知,那叫一個慘啊。

個人Java進階之路

上文說到我剛剛開始投遞實習崗位,是在研一的下學期。當時成天躲在實驗室,一邊看書一邊看視頻,接到面試時趕忙刷面經,忙的不亦樂乎。那段時間感受本身的複習狀態和考研差很少。

然而,因爲水平確實不咋地,當時我被各大公司的面試官吊打。好比我第一家面的就是百度,三個很簡單的問題一個都不會,人家面試官都很差意思打擊我了。後來我又面了一些大大小小的互聯網公司,雖然狀況有所好轉,可是總的來講,我要學習的東西還不少。

在準備面試的過程當中,我看了不少面經,也看了不少技術博客,發現本身的基礎很薄弱,須要系統性的學習。而且這些東西是視頻和入門書籍給不了個人。因而我又踏上了找書的道路。

那時候Java書單氾濫,有的書單質量低下,買來的書看兩眼就看不下去了。直到我看到了「江南白衣的後端書架」這一文章,才發現Java後端書架原來應該是這樣的。因而我照葫蘆畫瓢把相關書籍都買了,這個階段,也算是剛剛踏上Java進階之路吧。

這裏面不得不提幾本書,對學習Java的同窗很是重要,一本是《深刻理解JVM虛擬機》,一本是《深刻分析Java技術內幕》,以及《Java併發編程藝術》。

再後來,憑着一股不到黃河心不死的精神,終於拿到了網易遊戲的實習offer。因而,第一次在大廠實習的機會終於來了,我懷着即期待又憂慮的心情來到了杭州。

個人Java實習之路

在豬場實習的時間並不長,也就持續了三個月不到,當時咱們部門在作數據倉庫,因而我這邊主要負責Java Web應用的開發,其實也就是寫一些簡單的後臺接口。

在熟悉了工做流程之後,我很快就適應了工做的節奏,畢竟作的東西也不難,導師也會常常指導,就這樣我完成了一個又一個需求,直到後來家裏有事,我才臨時選擇辭職回家。

因爲在網易實習的時間比較短,我也留下了一些遺憾,好比對整個項目的架構不夠熟悉,而且不少相關技術棧也來不及學習。後來我去熊廠實習的時候,儘可能避免了這些問題。

熊廠實習的時間長達半年,部門當時作的是私有云,emmm徹底是全新的技術棧啊,因而我基本上又是從零開始學習雲計算,可是因爲以前的操做系統和網絡基礎不紮實,在學習相關技術時,基本是兩眼一抹黑,學啥啥不會。

這也致使我在上班期間看了不少計算機基礎方面的書籍,包括《計算機網絡:自頂向下》,《深刻理解計算機系統》等等。固然,這也是由於個人工做內容很簡單。CRUD你懂的。

因而花時間自學成爲了我那時候的主旋律,看書,看內網資源,參加技術分享,倒也很是充實。固然,有空我也會看看項目代碼,瞭解一下技術架構,以便讓本身對整個項目有一個更好的理解。

再後來,2018年來了。

抉擇時刻:實習轉正仍是秋招

我是2018年1月份離開北京的。當時面臨幾個問題,是否續租房子,是否繼續實習。還有一個小插曲就是當時養的一隻貓也得帶回去。再三思考後我決定回學校準備秋招。

過年後我就回到學校了,當時我本不打算參加春招,想要潛心修煉準備秋招,可是架不住春招宣傳力度大,而且幾個大廠都標榜着「轉正容易,hc多多」等口號。因而我沒忍住,上牛客投了幾回簡歷,打算面幾家大廠,心想萬一過了就去吧。

簡歷都投出去了,那也只好複習了啊,當時咱們宿舍跟打了雞血同樣,一成天都在刷題,從早到晚泡着刷LeetCode,一個月後終於刷到100多題,也算是能應付一下筆試了吧。

春招我投的公司很少,也就at,網易遊戲和京東。最後阿里和京東都給了offer。可是當時阿里的流程走得特別慢,直到內推截止前一天才給我發offer,而且本身也感受以前面試表現通常,心想我要是去了也是B+,頗有可能成爲擁抱變化的犧牲品,因而我咬咬牙放棄了,大不了秋招再來。

因禍得福,焉知非福,春招的顆粒無收反而讓我能夠安心準備秋招,因而我有大把的時間作我想作的事,制定本身的學習計劃,安排本身的生活,不須要去考慮轉正這種麻煩事了。

至此,四月終了,春招告一段落。

Java修仙之路

平時常常逛牛客,我也常常發些面經啥的,因而不少牛油喜歡調侃說「看神仙」。這時候我只能尷尬又不失禮貌的微笑了0。0

在下不才,成不了神仙,最多就是打遊戲的時候能修修仙罷了。

不過你還真別說,網上還真有「Java成神之路」這樣的文章,真的打擾了哈哈。

科普一下修仙梗: 修仙梗的意思是喜歡熬夜的人不睡覺不猝死反而要修仙,而後就被廣大的網友們互相調侃玩壞了,如今熬夜都不叫熬夜了,新潮的說法就是修仙,熬夜不會猝死啊,會加強法力。

不逗大家了,我們仍是進入正題吧。我在五月份的時候作了一個計劃,打算在七月底以前完成複習工做,緣由是七月底有阿里的提早批招聘,是我最最重視的一個招聘。這個計劃簡稱三個月計劃,我主要作了三個方面的學習規劃。

一:首先,即是對Java後端技術棧的複習,這也是最重要的一部分,由於面試永遠都是考基礎考得最多。

這部份內容又能夠細分爲多個方面:

1 Java知識體系:包括了Java基礎,集合類,設計模式,Java併發技術,Java網絡編程,JVM,JavaWeb,Spring框架等等。

2 計算機基礎:包括了操做系統,計算機網絡,數據結構,數據庫,緩存等內容。

3 後端進階:包括了分佈式理論,以及常見分佈式技術好比負載均衡,zookeeper,消息隊列,分佈式緩存等等。固然,這裏面也包括系統架構方面的知識,以及RPC,微服務等內容。

4 額外內容:這部份內容因人而異,我主要是由於實習的時候項目涉及了hadoop以及私有云技術棧,因此本身看了不少這方面的東西,譬如Hadoop生態,OpenStack生態,以及docker生態。

我在複習這部份內容的時候,通常先看優質博客,而後本身整理總結對應寫一些博客,最後把可以實現的東西實現一下,這樣一來一個知識點就搞定了。剩下的事情就是重複這個步驟。

下面放上個人博客:https://blog.csdn.net/a724888

二:其次,即是對算法的學習了。我也把算法的學習分爲了幾個部分。

1 基礎數據結構與算法:主要是複習以前學過的數據結構和算法,額外再看一些算法書籍,譬如《圖解算法》,以瞭解常見算法。

2 劍指offer:劍指offer基本上是面試必考的,因此把它刷個兩三遍是頗有必要的。

3 LeetCode:搞定前面兩項以後,刷LeetCode也會有些底氣了,我當時就刷了150題左右,主要也是刷經典的題目。

4 筆試真題:這個就不用多說了,真題是必定要刷的。畢竟各個公司出題的路子都花裏胡哨。

刷題多了,就會遇到不少原題和相似題目,因此,儘早開刷,作好準備吧。

3、最後一部分,則是作項目。大概說下我作項目的幾個要點吧

1 爲何這時候我還要作項目呢:一來是我以爲實習過程本身接觸的東西太細碎,沒有對全局作把控,二來是由於想給GitHub加點東西,順便學點新的技術。因而我選擇了當時牛客網上的兩個項目來本身作作看。

2 關於項目選擇:葉神這兩個項目仍是講的很是棒棒的,用的東西也很新,代碼也有提供,避免了本身要寫前端的尷尬,另外,這兩個項目模仿了知乎和頭條,更加接地氣。

3 把項目作到GitHub上:以前對git也比較熟了,因此想把這個項目按照正常開發的流程走一遍,因而我天天都會作一個模塊,而後發佈幾個版本,記錄一下版本更新的細節,寫這些東西的時候,本身其實就已經作了思考和總結,感受仍是不錯的。

下面放上個人GitHub:https://github.com/h2pl

就這麼過了三個月,提早批拉開序幕。

秋招回憶錄

從七月初第一次投遞簡歷,到九月初,整整兩個月的時間,大大小小投了幾十家公司,其中不少都是提早批,內推,也經歷了許多的筆試,面試。

期間也拿了幾個offer,包括百度,騰訊,螞蟻金服,頭條,華爲,網易(網易雲音樂沒給offer,調到了其餘部門)。有幾家直接收到拒信的,包括拼多多,深信服。還有幾家在等待結果。包括快手,鬥魚等。

固然也有一些還沒面試完的公司以及待安排面試的公司,這裏就不展開說了。

八月底基本上提早批就已經結束了,因此通常這段時間正式校招也開始了,各類大規模的筆試也不少,因此你們即便沒有拿到offer也不要灰心,畢竟校招是一場持久戰,基本上要到九月十月才能下結論。我以前分享了不少公司的面經,其實大部分都是提早批的,不少都是直接免筆試的,由於我對算法並非很在行,因此感受仍是比較幸運的。

從七月底第一次面試到9月基本佛系,中間經歷了大大小小的面試,這裏只進行簡單的記錄哈,要看面經的話請到個人公衆號:程序員江湖。

具體的面經都比較長,這裏大概介紹一下面試的狀況,而後我會放上面經的連接供你們查閱。

1 阿里面經

阿里中間件研發面經

螞蟻金服研發面經

崗位是研發工程師,直接找螞蟻金服的大佬進行內推。

我參與了阿里巴巴中間件部門的提早批面試,一共經歷了四次面試,拿到了口頭offer。

而後我也參加了螞蟻金服中間件部門的面試,經歷了三次面試,可是沒有走流程,因此面試停止了。

最後我走的是螞蟻金服財富事業羣的流程,經歷了四次面試,包括一次交叉面,最終拿到了螞蟻金服的意向書,評級爲A。

阿里的面試體驗仍是比較好的,至少不要求手寫算法,可是很是注重Java基礎,中間件部門還會特別安排Java基礎筆試。

2 騰訊面經

騰訊研發面經

崗位是後臺開發工程師,我沒有選擇意向事業羣。

SNG的部門撈了個人簡歷,開始了面試,他們的技術棧主要是Java,因此比較有的聊。

一共經歷了四次技術面試和一次HR面試,目前正在等待結果。

騰訊的面試一如既往地注重考查網絡和操做系統,而且喜歡問Linux底層的一些知識,在這方面我仍是有不少不足的。

3 百度面經

百度研發面經

百度研發面經整合版

崗位是研發工程師崗位,部門包括百度智能雲的三個分部門以及大搜索部門。

百度的提早批面試不走流程,因此能夠同時面試好多個部門,因此我參加百度面試的次數大概有12次左右,最終應該是拿了兩個部門的offer。

百度的面試風格很是統一,每次面試基本都要到電腦上寫算法,因此那段時間寫算法寫的頭皮發麻。

4 網易面經

網易研發面經

面試部門是網易雲音樂,崗位是Java開發工程師。

網易是惟一一家我去外地面試的公司,也是我最先去實習的老東家。

一共三輪面試,耗時一個下午。

網易的面試比我想象中的要難,面試官會問的問題都比較深,而且會讓你寫一些結合實踐的代碼。

5 頭條面經

今日頭條研發面經

崗位是後臺研發工程師,地點選擇了上海。

我參加的是字節跳動的內推面試,當時找了一個牛友要到了白金碼,再次感謝這位頭條大佬。

而後就開始了一下午的視頻面試,一共三輪技術面試,每一輪都要寫代碼,問問題的風格有點像騰訊,也喜歡問一些底層知識,讓我有點懵逼。

若是想看更多公司的面經,也請移步微信公衆號:程序員江湖。

另外,我上週還面試了一次亞馬遜,由於不少知名外企到十月纔開始招人,因此閒了好久以後我又重操舊業了,可能在面完大摩和微軟以後,秋招才能正式結束吧

結束也是開始

中秋節剛過,國慶節又要到來了。正如每年的秋招同樣,年復一年,在時間面前咱們也是眇小的塵埃。

秋招結束不表明着結局,而是新的旅程開始,立刻,畢業論文,offer選擇,入職準備,畢業旅行等事項也要提上日程了。

相關文章
相關標籤/搜索