個人Java後端學習之路

本文主要記錄了我從Java初學者到專一於Java後端技術棧的開發者的學習歷程。主要分享了學習過程當中的一些經驗和教訓,讓後來人看到,少走彎路,與君共勉,共同進步。若有錯誤,還請見諒。前端

個人GitHub:java

github.com/h2pl/MyTechc++

文章首發於個人我的博客:git

h2pl.github.io/2018/04/20/…程序員

更多關於Java後端學習的內容請到個人CSDN博客上查看:github

blog.csdn.net/a724888web

相關連接:我和技術博客的這一年:blog.csdn.net/a724888/art…面試

  不論你是否是網民,不管你遠離互聯網,仍是沉浸其中;你的身影,都在這場偉大的遷徙洪流中。超越人類經驗的大遷徙,溫暖而無情地,開始了。                                  -----《互聯網時代》redis

選擇方向

  0上大學前的那些事,讓它們隨風逝去吧。算法

  1 我的對計算機和互聯網有情懷,有興趣,本科時在專業和學校裏選擇了學校,當時專業不是計算機,只能接觸到一點點計算機專業課程,因此選擇了考研,花半年時間複習考進了一個還不錯的985,考研經歷有空會發到博客上。

  2 本科階段接觸過Java和Android,感受app蠻有趣的,因此研一的時候想作Android,起初花大量時間看了計算機專業課的教材,效果不好。但也稍微瞭解了一些計算機基礎,如網絡,操做系統,組成原理,數據庫,軟工等。

  3 在沒肯定方向的迷茫時期看了大量視頻和科普性文章,幫助理清頭緒和方向。期間瞭解了諸如遊戲開發,c++開發,Android,Java甚至前端等方向,其中還包含遊戲策劃崗。

  4 後來綜合自身條件以及行業發展等因素,開始鎖定本身的目標在Java後臺方向。因而乎各類百度,知乎,查閱該學什麼該怎麼學如此類的問題,學習別人的經驗。固然只靠搜索引擎很難找到精品內容,那段時間可謂是病急亂投醫,走了很多彎路。


夯實基礎

  1 研一的工程實踐課讓我知道了個人基礎不夠紮實,因爲並不是科班,須要比別人更加勤奮,古語有云,天道酬勤,勤能補拙。遇上了17年的春招實習招聘,期間開始各類海投,各類大廠面試一問三不知,才知道自身差距很大,開始瘋狂複習面試題,刷面經,看經驗等。死記硬背,之乎者也,倒也是能應付一些小公司,可謂是臨陣磨槍不快也光。

  2 不過時間的屢屢受挫讓我冷靜思考了一段時間,我再度調研了崗位需求,學習方法,以及須要看的書等資料。再度開工時,個人桌上開始不斷出現新的經典書籍。這還要歸功於個人啓蒙導師:江南白衣,在知乎上看到了他的一篇文章,個人Java後端書架。在這個書架裏我找尋到了不少我想看的書,以及我須要學習的技術。

  3 遙想研一我還在看的書:教材就不提了,脫離實際而且年代久遠,而我選的入門書籍居然還有Java web從入門到精通這種爛大街的書籍,而後就是什麼Java編程思想啦,深刻理解計算機系統,算法導論這種高深莫測的書,感受有點高不成低不就的意思。要麼太過難懂要麼過於粗糙,這些書在當時基本上沒能幫到我。


書籍選擇

  1 江南白衣的後端書架真是救我於水火。他的書架裏收錄了許多Java後端須要用到的技術書籍,而且十分經典,雖不說每本都適合入門,可是隻要你用心去看都會有收穫,高質量的書籍給人的啓發要優於普通書籍。

  2 每一個門類的書我都挑了一些。好比網絡的兩本(《tcp ip卷一》以及《計算機網絡自頂向下》),操做系統兩本(一本《Linux內核設計與實現》,一本高級操做系統,推薦先看完《深刻理解計算機系統》再來看這兩本),算法看的是《數據結構與算法(Java版)》,Java的四大件(《深刻理解jvm虛擬機》,《java併發編程藝術》,《深刻java web技術內幕》,《Java核心技術 卷一》這本沒看)。

  3 固然還有像《Effective Java》,《Java編程思想》,《Java性能調優指南》這種,不過新手不推薦,太不友好。接着是spring的兩本《Spring實戰》和《Spring源碼剖析》。固然也包括一些redis,mq之類的書,還有就是一些介紹分佈式組件的書籍,如zk等。

  4 接下來就是擴展的內容了,好比分佈式的三大件,《大型網站架構設計與實踐》,《分佈式網站架構設計與實踐》,《Java中間件設計與實踐》,外加一本《分佈式服務框架設計與實踐》。這幾本書一看,絕對讓你打開新世界的大門,醍醐灌頂,三月不知肉味。

  5 你覺得看完這些書你就無敵了,就知足了?想得卻是挺美。這些書最多就是把我從懸崖邊拉回正途,能讓我在正確的道路上行走了。畢竟技術書籍這種東西仍是有門檻的,沒有必定的知識儲備,看書的過程也絕對是十分痛苦的。

    6 好比《深刻理解jvm虛擬機》和《java併發編程藝術》這兩本書,我看了好幾遍,第一遍基本當天書來看,第二遍挑着章節看,第三遍能把所有章節都看了。因此有時候你以爲你看完了一本書,對,你確實看完了,但過段時間是你能記得多少呢。能夠說是不多了。


談一談學習方法

  1 人們在剛開始接觸本身不熟悉的領域時,每每都會犯不少錯誤。剛開始學習Java時,就是摸着石頭過河。從在極客學院慕課上看視頻,到看書,再到看博客,再到工程實踐,也是學習方式轉變的一個過程。

  2 看視頻:適合0基礎小白,視頻給你構建一個世界觀,讓你對你要作的東西有個大概的瞭解,想要深刻理解其中的技術原理,只看視頻的話很難。

  3 看書:就如上面一節所說,看書是一個很重要的環節。當你對技術只停留在大概的瞭解和基本會用的階段時,經典書籍可以讓你深刻這些技術的原理,你可能會對書裏的內容感到驚歎,也可能只是只知其一;不知其二。因此第一遍的閱讀通常讀個大概就能夠。一本書要吃透,不只要看好幾遍,還要多上手實踐,才能變成本身的東西。

  4 看博客,光看一些總結性的博客或者是科普性的博客可能還不夠,一開始我也常常看這樣的博客,後來只看這些東西,發現對技術的理解只能停留在表面。高質量的博客通常會把一個知識點講得很透徹,比你看十篇總結都強,例如講jdk源碼的博文,能夠很好地幫助你理解其原理,避免本身看的時候一臉懵逼。這裏先推薦幾個博客和網站,後面寫複習計劃的時候,會詳細寫出。 博客:江南白衣、酷殼、戰小狼。 網站:併發編程網,importnew。

  5 實踐爲王,Java後端畢竟仍是工程方向,只是經過文字去理解技術點,可能有點紙上談兵的感受了。還有一個問題就是,沒有進行上手實踐的技術,通常很快就會忘了,作一些實踐能夠更好地鞏固知識點。若是有項目中涉及不到的知識點,能夠單獨拿出來作一些demo,實在難以進行實踐的技術點,能夠參考別人的實踐過程。


實習,提升工程能力的好機會

  1 這段時間之後就是實習期了,三個月的W廠實習經歷。半年的B廠實習,讓我着實過了一把大廠的癮。可是其中作的工做無非就是增刪改查寫寫業務邏輯,很難接觸到比較核心的部分。

  2 因而乎我花了許多時間學習部門的核心技術。好比在W廠參與數據平臺的工做時,我學習了hadoop以及數據倉庫的架構,也寫了一些博客,而且向負責後端架構的導師請教了許多知識,收穫頗豐。

  3 在B廠實習期間則接觸了許多雲計算相關的技術。由於部門作的是私有云,因此業務代碼和底層的服務也是息息相關的,好比平時的業務代碼也會涉及到底層的接口調用,好比新建一個虛擬機或者啓動一臺虛擬機,須要經過多級的服務調用,首先是HTTP服務調用,通過多級的服務調用,最終完成流程。在這期間我花了一些時間學習了OpenStack的架構以及部門的實際應用狀況,同時也玩了一下docker,看了kubenetes的一些書籍,算是入門。

  4 可是這些東西其實離後臺開發仍是有必定距離的,好比後臺開發的主要問題就是高併發,分佈式,Linux服務器開發等。而我作的東西,只能稍微接觸到這一部門的內容,由於主要是to b的內部業務。因此這段時間其實個人進步有限,雖然擴大了知識面而且積累了開發經驗,可是對於後臺崗位來講仍是有所欠缺的。

  5 不過將近一年的實習也讓我收穫了不少東西,大廠的實習體驗很好,工做高效,團隊合做,版本的快速迭代,技術氛圍很不錯。特別是在B廠了能夠解到不少前沿的技術,對本身的視野擴展頗有幫助。


實習轉正,仍是準備秋招?

  1 離職之後,在考慮是否還要找實習,由於有兩份實習經歷了,在考慮要不要靜下心來刷刷題,複習一下基礎,而且回顧一下實習時用到的技術。同一時期,我瞭解到騰訊和阿里等大廠的實習留用率不高,而且可能影響到秋招,因此當時的想法是直接複習等到秋招內推。所以,那段時間比較放鬆,沒什麼複習狀態,也致使了我在今年春招內推的階段比較艱難。

  2 由於當時想着沉住氣準備秋招,因此一開始對實習內推不太在乎。可是因爲AT招人的實習生轉正比例較大,考慮到秋招的名額可能更少,因此仍是不肯意錯過這個機會。由於開始系統複習的時間比較晚,因此投的比較晚,擔憂準備不充分被刷。此次找實習主要是奔着轉正去的,因此只投了bat和滴滴,京東,網易遊戲等大廠。

  3 因爲投遞時間緣由,因此面試的流程特別慢。而且在筆試方面仍是有所欠缺,刷題刷的比較少,在線編程的算法題仍是屢屢受挫。這讓我有點後悔實習結束後的那段時間沒有好好刷題了。


調整心態,從新上路

  1 目前的狀態是,一邊刷題,一邊複習基礎,投了幾家大廠的實習內推,打算選一個心儀的公司準備轉正,可是事情老是沒那麼順利,微軟,頭條等公司的筆試難度超過了個人能力範圍,沒能接到面試電話。騰訊投了一個本身比較喜歡的部門,惋惜崗位沒有匹配上,後臺開發被轉成了運營開發,最終沒能經過。阿里面試的也不順利,當時投了一個牛客上的螞蟻金服內推,因爲投的太晚,部門已經招滿,只面了一面就沒了下文,前幾天接到了菜鳥的面試,這個未完待續。

  2 目前的想法是,由於我不怎麼須要實習經從來加分了,因此想多花些時間複習基礎,刷題,而且鞏固以前的項目經歷。固然若是有好的崗位而且轉正機會比較大的話,也是會考慮去實習的,那樣的話可能須要多擠點時間來複習基礎和刷題了。

  3 在這期間,我會從新梳理一下本身的複習框架,有針對性地看一些高質量的博文,同時多作些項目實踐,加深對知識的理解。固然這方面還會經過寫博客進行跟進,寫博客,作項目。前陣子在牛客上看到一位牛友CyC2018作的名爲interview notebook的GitHub倉庫,內容很是好,十分精品,我所有看完了,而且參考其LeetCode題解進行刷題。

  4 受到這位大佬的啓發,我也打算作一個相似的代碼倉庫或者是博客專欄,儘可能在秋招以前把總結作完,而且把好的文章都放進去。上述內容只是本人我的的心得體會,若是有錯誤或者說的不合理的地方,還請諒解和指正。但願與廣大牛友共勉,一塊兒進步。

微信公衆號【黃小斜】做者是 985 碩士,螞蟻金服 Java 工程師,終身學習踐行者。(關注公衆號後回覆」Java「便可領取 Java基礎、進階、項目和架構師等免費學習資料,更有數據庫、分佈式、微服務等熱門技術學習視頻,內容豐富,兼顧原理和實踐,另外也將贈送做者原創的Java學習指南、Java程序員面試指南等乾貨資源)

相關文章
相關標籤/搜索