自學Java走進阿里,僅用了六個月,他是怎么做到的?

前言

如果你想自學 Java,認真看完本文,你以后的職場生涯至少少走1年彎路。

本文會持續(xù)更新,建議收藏。

初衷

在 CSDN 上經(jīng)常有同學私聊我詢問 “如何自學 Java”、“想轉行 Java 靠譜嗎” 等問題,因為自己也是在大學時自學的 Java,所以我能理解這些同學的痛苦和迷茫。

寫這篇文章前,我看了一些網(wǎng)上 Java 自學的文章,很多我都不太滿意,有的甚至讓我感到憤怒,要么是站在現(xiàn)有的視角侃侃而談,要么是純粹的瞎編騙小白。

很多文章都有一個老毛?。和耆珱]有從小白的視角去思考,內容太多,什么微服務、架構、大數(shù)據(jù)都來了,這根本不是自學階段該去看的東西,小白看了這些文章,只會越看越懵逼,根本沒法下手。

其實我在18年寫過一篇“0基礎Java自學之路”,但是現(xiàn)在來看,當時那篇文章寫的過于簡單,只是提供了一個思路,但是很多內容沒有寫。

如今已經(jīng)過去了3年,我對于這個話題又有了一些新的思考,同時為了拯救廣大正處于水深火熱的同學們,于是,我決定重新寫一篇自學教程。

自我介紹

在寫本文前有必要介紹下我自己,讓大家更好的去比較和參考。

我大學是普通本科,大三開始自學的 Java,自學了一年,但是我是計算機專業(yè)的,所以有C語言基礎,但是我這一年的自學走了不少彎路,花了很多時間學了很多后面根本沒用到的東西:Oracle、Hibernate、Struct2、JBPM 等等,還有就是缺少有經(jīng)驗的人的指導,所以容易抓不到重點,所以也浪費了不少時間。

不過當時還沒有現(xiàn)在這么內卷,所以我在大四秋招剛開始就找到工作了。

行業(yè)現(xiàn)狀

程序員現(xiàn)狀

由于程序員的薪水比較高,最近幾年有很多其他專業(yè)的人涌進了程序員行業(yè),加速了這個行業(yè)的內卷,但是據(jù)某招聘網(wǎng)上的數(shù)據(jù)統(tǒng)計,程序員當前的需求量還是遠高于全行業(yè)的平均線的。所以,程序員的現(xiàn)狀我覺得是不錯的,至少幾年內是無需擔心的。

Java 現(xiàn)狀

最近幾年,Go、Python 等語言快速崛起,大有挑戰(zhàn) Java 地位的趨勢,但是 Java 毋庸置疑仍是當前互聯(lián)網(wǎng)行業(yè)里招聘需求量最大的。

眾多大廠:阿里、美團、快手、拼多多、滴滴、網(wǎng)易等,都是以 Java 為公司的主語言,部分大廠:騰訊、百度、字節(jié)等,雖然以其他語言為主語言,但是多多少少也會有一些 Java 崗。

所以,Java 的現(xiàn)狀及未來,我覺得都是比較不錯的。崗位多也代表著機會多,對于新人來說比較友好,所以我個人是比較推薦新人學 Java 的。

自學前你應該知道

自學前請做好心理準備,自學是一個既寂寞又漫長的過程,如果想踏進來,請做好放棄幾乎所有娛樂生活的準備,包括過年的時候。如果只是抱著三天打魚兩天曬網(wǎng)的態(tài)度,那我建議還是放棄吧。

但是如果你能堅持下來,我相信一定能有所回報,我自己就是個例子,我走了那么多彎路,跟著本文走,你們沒理由比我當時更差。

自學預估周期

自學的周期我給大家定了一個參考時間:6個月,平均每天6-8小時,共1200個小時左右,大致安排:

1、3個月基礎知識學習和強化。

2、2個月 SSM 項目實戰(zhàn)反復練習,項目實戰(zhàn)同時也在復習和鞏固之前的基礎知識。

3、1個月面試高頻題準備,看面試題其實也會增加自己的專業(yè)知識,而且可能比你想象的要多,不夸張的說,前幾年我從面試題里學到的知識可能比工作里獲得的還多。

自學教程獲取

推薦閱讀:我是如何自學拿到美團80w年薪的

很重要的建議

1、愛因斯坦的成功公式:成功 = 效率 * 時間,自學也一樣,需要勞逸結合,不要搞的太累,否則效率下降,花再多時間也沒用。

2、自學是一個漫長的過程,循序漸進、保持耐心,如果可以,找個伴一起學習,互相鼓勵,互相交流,可以讓自己更有動力堅持下去。

3、將自己的學習過程記錄下來,當你發(fā)現(xiàn)累計的越來越多的時候,心里會有一種小成就感,這會提高你學習的動力。

4、專注于重點知識的學習,本文介紹的基本涵蓋了當前你應該學習的內容,沒有提到的大部分是沒那么重要的,如果你無法判斷是否重要,可以在本文下面留言,我會一一解答,至于像一些什么:k8s、hadoop、hbase 等等,看都別看,對于當前的你來說只是浪費時間。

5、利用好搜索引擎,有什么問題就百度,新手大部分的問題百度都能解決。

6、看視頻不要看書,當前階段的你看任何書,包括大名鼎鼎的《Java編程思想》都是浪費時間。

7、看視頻要跟著敲一遍甚至多遍,如果只看視頻不跟著敲,你會發(fā)現(xiàn)最后啥都學不會。

8、視頻中一些介紹歷史的視頻可以過一遍簡單了解就行,節(jié)省點時間。

9、關于視頻教程的選取:選擇近2~3年的教程,講師讓自己聽著舒服即可,點擊高的視頻水平基本差不多。

10、不懂的知識可以反復看,例如同一個知識點有兩套教程,看完第一個沒完全理解,可以再看第二個,加深印象,也可以查些資料幫助理解。

自學知識點

1、Java SE

1.1、Java基礎

基礎概念/語法:面向對象(繼承、封裝、多態(tài))基礎、包、類、接口、方法、對象、屬性、第一個 Java 程序。

數(shù)據(jù)類型:1)基本數(shù)據(jù)類型8種:byte、short、int、long、float、double、char、boolean;2)引用數(shù)據(jù)類型

變量類型:局部變量、實例變量(成員變量)、類變量(靜態(tài)變量)

修飾符:public、private、不寫、protected、static、final、abstract、synchronized ,volatile

運算符:1)算術運算符:+、-、、/、%、++、--;2)關系運算符:==、!=、>、<、>=、<=;3)邏輯運算符:&&、||、!;4)賦值運算符:=、+=、-=、=、/=;5)條件運算符:Object x = (expression) ? value if true : value if false;

循環(huán)結構:for 循環(huán)、while 循環(huán)、do...while 循環(huán)

條件語句:if...else、if...else if...else

異常處理:try...catch...finally、throws、throw

字符串:String、StringBuilder、StringBuffer

其他:switch case、數(shù)組、日期時間、枚舉、使用 IDE 進行 DEBUG

1.2、集合

Map:HashMap(最重要)、ConcurrentHashMap、TreeMap、Hashtable

List:ArrayList(最重要)、LinkedList

Set:HashSet(最重要)、TreeSet

1.3、多線程

線程生命周期

創(chuàng)建線程的三種方式:繼承 Thread、實現(xiàn) Runnable;實現(xiàn) Callable

ThreadPoolExecutor(線程池)

鎖:synchronized 和 Lock

1.4、I/O流

1.5、網(wǎng)絡編程

1.6、反射

1.7、泛型

1.8、注解

小結:

1、該階段很重要,建議至少看兩套不同的教程。由于每個老師的觀點都會有一些片面性,當遇到疑惑的時候,可以看看其他老師的理解,可能就想通了。

2、看第一遍時會比較慢,第二遍會快一點,已經(jīng)掌握的知識可以快速帶過。

3、有疑問的知識多看幾遍,也可以網(wǎng)上看點博文輔助理解,實在看不懂的可以先記下來,后面學到一定程度可能就理解了。

4、對于重點知識,可以做筆記來加深自己的理解,也方便后續(xù)自己復習。

5、Java基礎、集合、多線程是核心中的核心。

章節(jié)目標:熟練掌握該章節(jié)所列的所有 Java 核心基礎知識,能熟練的編寫 Java 程序。

2、SQL

2.1、SQL

1)了解基礎概念;2)掌握 DML 語句的使用:SELECT、UPDATE、INSERT 和 DELETE;3)掌握 DDL 語句的使用:操作表時用到的一些SQL語句。例如:CREATE、ALTER、DROP等。

2.2、JDBC

掌握基本的使用。

2.3、MySQL

掌握基本的使用。

章節(jié)目標:熟練掌握SQL語句的基礎使用,了解JDBC和MySQL的基礎使用。

3、Java Web

3.1、偏前端內容

HTML、CSS、JS(JavaScript)、Ajax、jQuery

3.2、偏后端內容

Servlet、JSP、Request、Response、HTTP、Session、Cookie、Filter、Listener

Java Web初級內容的相關技術在當前 Java 后端已經(jīng)比較少直接使用到了,最近幾年的 Java 程序員甚至可能都沒接觸過。大部分是被下一節(jié)的 SSM 框架給封裝代替掉了,但是這一章節(jié)初學者還是有必要認真學習一下,做到能看得懂、能照著改。

章節(jié)目標:了解該章節(jié)所涉及的知識,做到能看得懂、能照著改。對于 Servlet 可以稍微多留意一下,Servlet 是本章節(jié)比較重要的知識。

4、常用工具

4.1、Tomcat

Web 應用服務器。

4.2、Maven

項目構建管理,簡單理解為用于導入 Jar 依賴的工具。

4.3、Git

分布式版本控制系統(tǒng),簡單理解為代碼管理工具。

章節(jié)目標:需要知道有這么些工具,然后掌握其基本的使用即可。

5、核心框架

5.1、Spring

1)掌握基本的使用;2)掌握核心概念,需重點注意的知識點:IoC(控制翻轉)、DI(依賴注入)、AOP(面向切面編程)、事務控制。

5.2、SpringMVC

1)掌握基本的使用;2)掌握核心概念,需重點注意的知識點:MVC 架構、Controller 里的各種注解、一個 HTTP 請求的流程。

5.3、MyBatis

1)掌握基本的使用;2)掌握核心概念,需重點注意的知識點:XML 文件力的 SQL 語法、接口(interface)和 SQL 的映射。

5.4、Spring Boot

掌握基本的使用。

章節(jié)目標:了解 SSM 框架的基本使用,該階段可以不用做到完全理解,可以在項目實戰(zhàn)里去通過實際的例子加深自己對 SSM 的理解。

6、項目實戰(zhàn)

準備 2~3個項目實戰(zhàn),將之前所學的知識點應用起來,做出一個真正的項目(網(wǎng)站)。學習的項目必須使用 SSM 框架,加深自己對 SSM 的理解。該階段所做的項目,也是未來寫在你簡歷里的“項目經(jīng)驗”,需要跟著敲一遍。

目標:將之前所學知識串聯(lián)起來,熟練掌握一個 Web 項目的完整流程,通過項目加深對之前所學知識的理解,特別是 SSM 框架知識。

7、面試準備

如果對于上述的 Java 基礎知識你已經(jīng)能熟練使用,然后也能熟練搭建一個簡單的 SSM 的項目。那我建議你可以將時間多花在面試準備這一章節(jié)上,面試準備的重要程度可能超過很多人的想象。同時在看面試題的過程中也能加深自己對之前知識的認知。

7.1、重點內容

  • Java 基礎高頻面試題

  • 集合高頻面試題,重點:HashMap

  • 多線程高頻面試題,重點: synchronized、線程池

  • MySQL高頻面試題,重點:索引、鎖

  • Spring/SpringMVC/MyBatis高頻面試題,重點:Spring

  • SSM 實戰(zhàn)項目

該模塊對應我們上面學習的知識,但是只會使用是很難滿足當前的面試要求的,因此需要針對這些知識進行面試強化,具體的題目可以看下我的面試系列文章。

7.2、進階內容****

  • JVM

  • Redis

  • Kafka

  • Zookeeper

  • Dubbo

  • 算法:常見的算法,二分、排序等,可以刷劍指offer的題目

  • 設計模式:可以主要看下單例模式

你可能會有疑問,為什么進階里列的知識點都是之前上面沒有提過的,還需要準備面試題。之所以補充進階部分,主要是為了應對當前互聯(lián)網(wǎng)行業(yè)內卷越來越嚴重的現(xiàn)象,這幾個知識點都是當前 Java 面試的高頻考點,但是要像前面的基礎知識一樣,系統(tǒng)的學習這些知識對于初學者當前階段來說基本不太可能,所以一個比較合適的方式是直接看高頻面試題,然后將高頻面試題帶著理解記下來。

章節(jié)目標:各個知識點的高頻面試題熟記于心,盡量做到理解,不能理解就先硬背。

路線問題可以參考:阿里成長學習筆記

面試真題可以參考我的文章:字節(jié)Java面試題庫

常見問題

1、自學時遇到不懂的知識怎么辦?

答:百度/谷歌找答案,初學者遇到的問題基本百度上都能找得到,多利用搜索引擎,鍛煉自己的解決問題的能力,這個能力會貫穿你的整個程序員生涯。

2、普通人按本文自學后能達到什么程度?

答:如果你確實很努力的花了超過1000個小時,按本文的路線去學習,掌握了本文所介紹的知識,那我相信你找個工作是不難的。

3、在網(wǎng)上看到有人自學6個月進 BAT?

答:自學6個月進 BAT 有嗎?我相信是有的。多嗎?我相信是海底撈針。

針對這個話題,大部分是假的,更多的是一些人/機構用于打廣告的,看了文章內容99%要你付費加群或買資料。

4、自學還是培訓機構?

答:坦白的講,培訓機構肯定比自學要輕松點,至少培訓機構會幫你們制定好方向。時間是程序員最大的痛點;

我只能幫你們分析,你們可以根據(jù)自己的情況去選擇。

5、算法是否重要?

答:對于0基礎自學的同學來說,算法的地位可以稍微放后面一點,當前的目標還是先打好 Java 基礎,能寫 Java 代碼。

6、是否應該先學 C 語言?

答:說實話,我個人并不建議,雖然 C 語言確實是挺重要的,但是我覺得如果有這個時間,還不如把 Java 基礎多鞏固一下。

7、初中/高中/中專學歷能不能自學 Java?

答:網(wǎng)上可能有很多人/機構說學歷不重要啊,balabala。但是負責任的說,學歷還是很重要的,我不是很推薦這些同學自學 Java,因為真的比較難,就算學會了也困難重重,很多企業(yè)都有學歷限制。

目前來看,至少要有大專學歷,最好有本科,否則建議還是仔細考慮下,除非你確實已經(jīng)走投無路了。

8、大齡轉行自學 Java 是否可行?

答:跟學歷一樣,大齡在這個行業(yè)也是個問題,如果現(xiàn)在有工作,我建議可以先用業(yè)余時間學看看,但是不要輕易辭職自學,風險很大。

9、看書學習快,還是看視頻學習快呢?

答:視頻。自學階段的小白看書效率很低,基本是看不下去的,不推薦看書,可以后續(xù)學習的差不多了,看點入門的書籍輔助。初學階段主要看視頻,然后輔助看一些網(wǎng)上入門的博文。

10、為什么不能看書,我有時候看了一上午視頻就感覺很浮躁,下午去教室看書不行嗎?

答:因為本文還是主要按大多數(shù)人的學習情況來寫,所以正常會推薦新手看視頻,但是如果視頻有時候看不下去,想嘗試下看書,我覺得也是可以的,但是如果看書看不下去后,說明不合適,就不要繼續(xù)堅持了,還是看視頻為主。

看書的話,《Java編程思想》我肯定是不推薦的,這本書我自己當時看過,效果不好,不推薦。

目前看來對于初學者,評價比較好的是:《Java核心技術·卷 I 基礎知識》,這本書我自己沒看過,但是我看有好幾個正在自學的同學推薦看,然后本身評價也不錯,所以想看書的同學建議可以入這本書試試。

11、有不少大一新生表示看不懂?

答:大一新生看不懂,我覺得是正常的,也不需要急,因為你們所處的時間點還是很早的,只要現(xiàn)在抓緊時間,按本文的路線去學習,到大三應該就學的差不多了,后面還有時間去學學進階的知識。后面畢業(yè)后,你們會發(fā)現(xiàn)你們的優(yōu)勢是比較大的。

12、好多東西聽不懂,還有好多詞看了后就忘了,不知道具體是啥意思,搞的越來越懵了?

答:這個是初學者正常都會遇到的,不需要很慌張,沒有什么捷徑,就是多看、多敲、多練,久而久之用多了,就記住了。

推薦閱讀

《飛馬計劃》到底是什么? 可以讓數(shù)萬程序員為之著迷

進大廠也就這回事,工作2到3年后進大廠操作指南

看完三件事

如果你覺得這篇內容對你還蠻有幫助,我想邀請你幫我三個小忙:

點贊,轉發(fā),有你們的 『點贊和評論』,才是我創(chuàng)造的動力。

關注公眾號 『 Java斗帝 』,不定期分享原創(chuàng)知識。

同時可以期待后續(xù)文章ing??

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 夜鶯2517閱讀 128,103評論 1 9
  • 版本:ios 1.2.1 亮點: 1.app角標可以實時更新天氣溫度或選擇空氣質量,建議處女座就不要選了,不然老想...
    我就是沉沉閱讀 7,377評論 1 6
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,822評論 28 54
  • 兔子雖然是枚小碩 但學校的碩士四人寢不夠 就被分到了博士樓里 兩人一間 在學校的最西邊 靠山 兔子的室友身體不好 ...
    待業(yè)的兔子閱讀 2,765評論 2 9

友情鏈接更多精彩內容