自學 6 個月 Java 找到了一份 15K 的工作,師弟的方式值得推薦給大家

2021-04-03 23:00:02

我有一個大學校友,他是去年 8 月份才開始正式學習 Java 的,之前在一傢俬企工作了 5 年,工資一個月只有不到 6000 塊,日子過得很苦逼,畢竟鄭州的房貸壓力也不小,公司就那麼大,除非領導離職,否則根本看不到晉升的希望。他剛 26 歲,正值青春年華,我就勸他不如改學 Java,他之前學 PHP 的,雖然做起來專案很快,但發展前景確實不怎麼樂觀。我身邊的很多朋友在北京做 Java 開發,差不多能拿到 2 到 3 萬的月薪,師弟聽了非常羨慕,感覺超出了他的認知範圍,就下定決心開始學習 Java,一共學了大概 6 個月的時間,今年跑去杭州找到了一份 Java 開發的工作,月薪 15K,因為是自學,能拿到這個薪水我覺得很不錯了。

這期間,我給了他很大幫助,幫他梳理了一條非常清晰的自學路線,他自己也很下勁,遇見什麼問題就來問我,我有時候回覆不及時,過一會他就說,不用了,自己找到了答案,這股勁真的讓我感覺非常佩服。

自學的過程並不容易,我認為有兩個因素非常重要。

第一,就是一定要自律。很多人看到 Java 很吃香,就跑過來學,很草率,學了一段時間後,感覺很痛苦,就放棄了。我師弟的情況特殊一點,他本身感覺到生存的壓力比較大,就抱著很強烈的學習願望,再一聽別人拿那麼多錢,就更下勁了。加上自己學習又非常自律,每天上班的時候偷偷學一點,然後下班後又一直學到晚上一點多真的超級自律。

第二,就是有人帶。如果全程靠自己去摸索,超級難受,一是沒有目標,不知道該學什麼,東學一塊,西學一塊,成不了知識體系;二是遇到問題的時候沒人交流,這個是非常難受的,信心就會受到很大的打擊,慢慢學習的勁頭就下去了。師弟來找我,我基本上看到就回復他了,我還認識很多技術很厲害的大佬,基本上沒有解決不了的問題。

所以,總結一下就是,自身一定要主動去學習,然後要有人帶你,然後就是時間,水到渠成的事。這兩點少了一點,就很難成功。

自學 Java 必須要注意的一些問題。

1)遇到不會的點,不要死磕

很多問題,可能是自己當時累了,然後如果鑽牛角尖的話,很容易出不來,耽誤了學習時間不說,還很有挫敗感。可能休息一下,或者問一下大佬,或者去學一下其他的知識點,很快可能就找到了解決方案。

2)一定要高效

學習就是這樣,如果短時間內看不到效果,會很沮喪,會懷疑自己,然後就越來越沒勁去學習了。動手動腦,不要一直眼睛盯著去看,無論是視訊,還是書,要學會去調解自己,累了就休息會,千萬不要學頭懸梁錐刺股的那種學習方式。

3)及時溝通

可以去問搜尋引擎,一定不要用度娘,最起碼也得用必應去搜尋吧,最次跑到知乎直接問問題,這也是一種溝通,俗稱「人機互動」,哈哈。另外一個就是問大佬,跑技術交流群去提問,不要怕沒人回答你,自己總結的過程中可能就會自己得到答案。

接下來,說一下 Java 主要學的內容。

第一部分,Java 基礎

學 Java 基礎的話,我推薦兩本,一本《Java 核心技術卷》,一本《Head First Java》。

《Java 核心技術卷》分為上下兩冊,上冊的難度較低,可以在最短時間內刷完,尤其是有了 C語言的程式設計基礎後,再刷這本書可以說是手到擒來。下冊涉及到的內容有流與檔案(☆)、XML、網路(☆)、資料庫程式設計、國際化、Swing、AWT、JavaBean、安全(☆)、指令碼編譯和註解處理、分散式物件、本地方法(☆),沒有標星的內容我認為可以略過。

《Head First Java》更有趣一些,裡面有很多小遊戲,很活潑的一本書。

兩本書之間的風格差別比較大,之前就有讀者給我反饋說,《Head First Java》有點駕馭不了,那就挑《Java 核心技術卷》。

刷完任意一本書後,可以看一看《Java 程式設計思想》,看自己是否能駕馭得了。因為思想的東西嘛,只有經過一些實踐後才能有所感悟,否則就像王陽明一開始對著竹子格物一樣,屁也格不出來,有了後面領軍作戰的經驗,以及到地方上體驗艱苦生活的感受後就開創了心學。

如果 Java 程式設計思想看起來確實比較痛苦的話,可以看一看《On Java 8》,GitHub 上有開源的中文翻譯版,作者是同一個人。

上面提到的這 4 本書裡面都還保留了圖形程式設計的內容(AWT 和 Swing),我認為是完全可以跳過的,希望後面出版社再版的時候能把這些內容全部刪除,定價估計就降了,但他們不一定會這麼幹。

Java 是一門物件導向的程式語言,所以三大特性:封裝、繼承、多型是必須要掌握的,然後是例外處理、IO、集合和並行程式設計。只要這些內容掌握了,可以說 Java 的基礎知識就全部掌握了。

這其中的難點是並行程式設計,我前面提到過,顯然這部分內容學起來並不容易,但卻最能考驗一名 Java 後端工程師的功底了。怎麼才能學好並行程式設計這塊呢?我推薦一本非常牛逼的開源電子書《深入淺出 Java 多執行緒》,幾位阿里朋友寫的,品質非常高,我在很早之前推薦過,可以點選下面的連結下載離線版。

幾位阿里朋友重寫的Java並行程式設計,牛逼了

第二部分,Java Web

大部分 Java 程式設計師都要從事 JavaWeb 的相關開發工作,要開發 JavaWeb,自然就離不開 Spring 的系列框架。甚至可以這麼說,沒有 Spring 的 Java 專案是不存在的。

要學習 Spring,能讀的書不多,我能想到的只有《Spring實戰》,坦白地說,這本書很一般,但市面上比它好的書,我還不知道。學完 Spring,就要學 SpringMVC,推薦大家看鬆哥的視訊,在 B 站上雖然播放量不是特別大,但我覺得內容特別棒。

然後是 MyBatis,不用找書看了,直接看官方檔案就行,講得特別好。本身 MyBatis 也沒有特別難的東西,就是一些 XML 設定和動態 SQL。

Spring+SpringMVC+MyBatis 這三個學完,可以說你就具備了開發企業級應用的能力了。

然後是 Spring Boot,我推薦看大哥純潔的微笑的部落格,存取量在千萬級別以上,影響了無數的初學者,我個人強烈推薦。連結就不用我貼了,直接搜「Spring Boot」關鍵字就行了。

如果說你已經掌握了 Spring、SpringMVC、MyBatis、Spring Boot 等內容,就有能力進行一些真正有用的應用專案開發了,比如說學生管理系統、商城系統、部落格系統、秒殺系統等等。

如果你覺得這些系統無從下手的話,其實可以到 GitHub 或者碼雲上去找,很快就能找到一大堆。為了節省大家的時間,我直接給大家推薦兩個。一個微人事,一個 mall,可以直接到 GitHub 上搜。

第三部分,資料庫

學習一門程式語言,如果不去操作下資料,就感覺這門程式語言空有皮囊卻沒有靈魂,對吧?要想學好資料庫,首先要學習一下 SQL(《SQL 必知必會》這本小冊子就足夠用了),然後是 MySQL(最流行的關係型資料庫,當推《高效能 MySQL》),然後是 Redis(快取,老錢的《Redis 深度歷險:核心原理與應用實踐》非常經典)和 MongoDB(非關係型資料庫,《MongoDB權威指南》就可以吃透)。

第四部分,工具

工欲善其事必先利其器,掌握了下面這些工具,學習起來其他的內容也會更加順手,不用瞎折騰。

Intellij IDEA,編寫 Java 程式的最佳 IDE,必須得掌握。GitHub 上有一本開源的書庫值得推薦。

接下來是 Maven,可以幫助我們解決 jar 包的煩惱。看《Maven 實戰》就可以了。

然後是 Git,工作中是必須掌握的,看《Git 權威指南》就好了。

這些內容學完後,就可以準備找工作了,但在找工作之前,一定還要做兩件事。這兩件事對找到一份心滿意足的工作至關重要,缺一不可。拼命學習了這麼長時間,就剩下這最後兩個關鍵節點了,怎麼能不錦上添花。

1)first blood

一定要刷面試題,做到有備而戰。就像打戰一樣,如果只是招募到兵員,卻不訓練,上了場,根本就不經打,只有訓練有素的士兵,在場上作戰的時候才能做好攻守平衡,應付自如。

我推薦這份在 GitHub 上星標 100k 的面試攻略,離線版已經更新到第四版,內容更加詳實。新增了校招/社招面試指南、程式設計師簡歷之道這些大多數程式設計師在面試前比較關心的內容。可通過下面的方式下載離線版。

V4.0 《JavaGuide 面試突擊版》來啦!GitHub 上標星 100k,幫你成功上岸!

2)double kill

一定要準備一份讓面試官耳目一新的簡歷,很多初學者容易忽略的一個點就是,隨隨便便整一份簡歷,然後就開始投遞,結果就像石沉大海一般,沒有迴響。作為簡歷的撰寫者,你必須要搞清楚一點,簡歷的本質是什麼,它就是為了來銷售你的價值主張的。往深處說,簡歷就是一塊敲門磚,它通過白紙黑字的方式告訴招聘方,我是誰,我想來貴公司擔任什麼職位,我能夠完成什麼樣的工作,我能夠為公司帶來什麼價值,我期望的薪資是多少。

入職阿里後,才知道原來簡歷這麼寫

OK,這兩件事準備充足了,就大膽地往前衝吧,相信我,就像我的師弟一樣,你也一定能找到一份滿意的工作。有任何關於 Java 相關的疑問,也歡迎隨時私信我。

傳統美德不能丟,來個一鍵三連吧,筆芯芯~