前言
無論你是否想自學 Java,認真看完本文,你以后的職場生涯至少少走1年彎路,
本文會持續更新,建議收藏,
初衷
在 CSDN 上經常有同學私聊我詢問 “如何自學 Java”、“想轉行 Java 靠譜嗎” 等問題,因為自己也是在大學時自學的 Java,所以我能理解這些同學的痛苦和迷茫,
寫這篇文章前,我看了一些網上 Java 自學的文章,很多我都不太滿意,有的甚至讓我感到憤怒,要么是站在現有的視角侃侃而談,要么是純粹的瞎編騙小白,
很多文章都有一個老毛病:完全沒有從小白的視角去思考,內容太多,什么微服務、架構、大資料都來了,這根本不是自學階段該去看的東西,小白看了這些文章,只會越看越懵逼,根本沒法下手,
其實我在18年寫過一篇“0基礎Java自學之路”,但是現在來看,當時那篇文章寫的過于簡單,只是提供了一個思路,但是很多內容沒有寫,
如今已經過去了3年,我對于這個話題又有了一些新的思考,同時為了拯救廣大正處于水深火熱的同學們,于是,我決定重新寫一篇自學教程,
自我介紹
在寫本文前有必要介紹下我自己,讓大家更好的去比較和參考,
我大學是普通本科,大三開始自學的 Java,自學了一年,但是我是計算機專業的,所以有C語言基礎,但是我這一年的自學走了不少彎路,花了很多時間學了很多后面根本沒用到的東西:Oracle、Hibernate、Struct2、JBPM 等等,還有就是缺少有經驗的人的指導,所以容易抓不到重點,所以也浪費了不少時間,
不過當時還沒有現在這么內卷,所以我在大四秋招剛開始就找到作業了,
行業現狀
程式員現狀
由于程式員的薪水比較高,最近幾年有很多其他專業的人涌進了程式員行業,加速了這個行業的內卷,但是據某招聘網上的資料統計,程式員當前的需求量還是遠高于全行業的平均線的,所以,程式員的現狀我覺得是不錯的,至少幾年內是無需擔心的,
Java 現狀
最近幾年,Go、Python 等語言快速崛起,大有挑戰 Java 地位的趨勢,但是 Java 毋庸置疑仍是當前互聯網行業里招聘需求量最大的,
眾多大廠:阿里、美團、快手、拼多多、滴滴、網易等,都是以 Java 為公司的主語言,部分大廠:騰訊、百度、位元組等,雖然以其他語言為主語言,但是多多少少也會有一些 Java 崗,
所以,Java 的現狀及未來,我覺得都是比較不錯的,崗位多也代表著機會多,對于新人來說比較友好,所以我個人是比較推薦新人學 Java 的,
自學前你應該知道
自學前請做好心理準備,自學是一個既寂寞又漫長的程序,如果想踏進來,請做好放棄幾乎所有娛樂生活的準備,包括過年的時候,如果只是抱著三天打魚兩天曬網的態度,那我建議還是放棄吧,
但是如果你能堅持下來,我相信一定能有所回報,我自己就是個例子,我走了那么多彎路,跟著本文走,你們沒理由比我當時更差,
自學預估周期
自學的周期我給大家定了一個參考時間:6個月,平均每天6-8小時,共1200個小時左右,大致安排:
1、3個月基礎知識學習和強化,
2、2個月 SSM 專案實戰反復練習,專案實戰同時也在復習和鞏固之前的基礎知識,
3、1個月面試高頻題準備,看面試題其實也會增加自己的專業知識,而且可能比你想象的要多,不夸張的說,前幾年我從面試題里學到的知識可能比作業里獲得的還多,
自學教程獲取
授人以魚不如授人以漁,一個簡單又靠譜的的教程獲取方式:B站搜索關鍵字+教程,例如:Java基礎教程、MySQL教程、JavaWeb教程、SSM整合教程、Java專案實戰等等,然后按“最多點擊”排序,在前幾個里尋找一個合適的即可,一般點擊高的都是質量還可以的,
很重要的建議
1、愛因斯坦的成功公式:成功 = 效率 * 時間,自學也一樣,需要勞逸結合,不要搞的太累,否則效率下降,花再多時間也沒用,
2、自學是一個漫長的程序,循序漸進、保持耐心,如果可以,找個伴一起學習,互相鼓勵,互相交流,可以讓自己更有動力堅持下去,
3、將自己的學習程序記錄下來,當你發現累計的越來越多的時候,心里會有一種小成就感,這會提高你學習的動力,
4、專注于重點知識的學習,本文介紹的基本涵蓋了當前你應該學習的內容,沒有提到的大部分是沒那么重要的,如果你無法判斷是否重要,可以在本文下面留言,我會一一解答,至于像一些什么:k8s、hadoop、hbase 等等,看都別看,對于當前的你來說只是浪費時間,
5、利用好搜索引擎,有什么問題就百度,新手大部分的問題百度都能解決,
6、看視頻不要看書,當前階段的你看任何書,包括大名鼎鼎的《Java編程思想》都是浪費時間,
7、看視頻要跟著敲一遍甚至多遍,如果只看視頻不跟著敲,你會發現最后啥都學不會,
8、視頻中一些介紹歷史的視頻可以過一遍簡單了解就行,節省點時間,
9、關于視頻教程的選取:選擇近2~3年的教程,講師讓自己聽著舒服即可,點擊高的視頻水平基本差不多,
自學知識點
1、Java SE
1.1、Java基礎
基礎概念/語法:面向物件(繼承、封裝、多型)基礎、包、類、介面、方法、物件、屬性、第一個 Java 程式,
資料型別:1)基本資料型別8種:byte、short、int、long、float、double、char、boolean;2)參考資料型別
變數型別:區域變數、實體變數(成員變數)、類變數(靜態變數)
修飾符:public、private、不寫、protected、static、final、abstract、synchronized ,volatile
運算子:1)算術運算子:+、-、*、/、%、++、--;2)關系運算子:==、!=、>、<、>=、<=;3)邏輯運算子:&&、||、!;4)賦值運算子:=、+=、-=、*=、/=;5)條件運算子:Object x = (expression) ? value if true : value if false;
回圈結構:for 回圈、while 回圈、do...while 回圈
條件陳述句:if...else、if...else if...else
例外處理:try...catch...finally、throws、throw
字串:String、StringBuilder、StringBuffer
其他:switch case、陣列、日期時間、列舉、使用 IDE 進行 DEBUG
1.2、集合
Map:HashMap(最重要)、ConcurrentHashMap、TreeMap、Hashtable
List:ArrayList(最重要)、LinkedList
Set:HashSet(最重要)、TreeSet
1.3、多執行緒
執行緒生命周期
創建執行緒的三種方式:繼承 Thread、實作 Runnable;實作 Callable
ThreadPoolExecutor(執行緒池)
鎖:synchronized 和 Lock
1.4、I/O流
1.5、網路編程
1.6、反射
1.7、泛型
1.8、注解
小結:該階段很重要,建議多看幾遍,其中的:Java基礎、集合、多執行緒是核心中的核心,
章節目標:熟練掌握該章節所列的所有 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
掌味訓本的使用,
章節目標:熟練掌握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 后端已經比較少直接使用到了,最近幾年的 Java 程式員甚至可能都沒接觸過,大部分是被下一節的 SSM 框架給封裝代替掉了,但是這一章節初學者還是有必要認真學習一下,做到能看得懂、能照著改,
章節目標:了解該章節所涉及的知識,做到能看得懂、能照著改,對于 Servlet 可以稍微多留意一下,Servlet 是本章節比較重要的知識,
4、常用工具
4.1、Tomcat
Web 應用服務器,
4.2、Maven
專案構建管理,簡單理解為用于匯入 Jar 依賴的工具,
4.3、Git
分布式版本控制系統,簡單理解為代碼管理工具,
章節目標:需要知道有這么些工具,然后掌握其基本的使用即可,
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
掌味訓本的使用,
章節目標:了解 SSM 框架的基本使用,該階段可以不用做到完全理解,可以在專案實戰里去通過實際的例子加深自己對 SSM 的理解,
6、專案實戰
準備 2~3個專案實戰,將之前所學的知識點應用起來,做出一個真正的專案(網站),學習的專案必須使用 SSM 框架,加深自己對 SSM 的理解,該階段所做的專案,也是未來寫在你簡歷里的“專案經驗”,需要跟著敲一遍,
目標:將之前所學知識串聯起來,熟練掌握一個 Web 專案的完整流程,通過專案加深對之前所學知識的理解,特別是 SSM 框架知識,
7、面試準備
如果對于上述的 Java 基礎知識你已經能熟練使用,然后也能熟練搭建一個簡單的 SSM 的專案,那我建議你可以將時間多花在面試準備這一章節上,面試準備的重要程度可能超過很多人的想象,同時在看面試題的程序中也能加深自己對之前知識的認知,
7.1、重點知識點
- Java 基礎
- 集合
- 多執行緒
- MySQL
- Spring/SpringMVC/MyBatis
- SSM 實戰專案
該模塊對應我們上面學習的知識,但是只會使用是很難滿足當前的面試要求的,因此需要針對這些知識進行面試強化,具體的題目可以看下我的面試系列文章,
7.2、進階知識點
- JVM
- Redis
- Kafka
- Zookeeper
- Dubbo
- 演算法:常見的演算法,二分、排序等,可以刷劍指offer的題目
你可能會有疑問,為什么進階里列的知識點都是之前上面沒有提過的,還需要準備面試題,之所以補充進階部分,主要是為了應對當前互聯網行業內卷越來越嚴重的現象,這幾個知識點都是當前 Java 面試的高頻考點,但是要像前面的基礎知識一樣,系統的學習這些知識對于初學者當前階段來說基本不太可能,所以一個比較合適的方式是直接看高頻面試題,然后將高頻面試題帶著理解記下來,
章節目標:各個知識點的高頻面試題熟記于心,盡量做到理解,不能理解就先硬背,
面試真題可以參考我的文章:Java 基礎高頻面試題(2021年最新版),
常見問題
1、自學時遇到不懂的知識怎么辦?
答:百度/谷歌找答案,初學者遇到的問題基本百度上都能找得到,多利用搜索引擎,鍛煉自己的解決問題的能力,這個能力會貫穿你的整個程式員生涯,
2、普通人按本文自學后能達到什么程度?
答:如果你確實很努力的花了超過1000個小時,按本文的路線去學習,掌握了本文所介紹的知識,那我相信你找個作業是不難的,
3、在網上看到有人自學6個月進 BAT?
答:自學6個月進 BAT 有嗎?我相信是有的,多嗎?我相信是海底撈針,
針對這個話題,大部分是假的,更多的是一些人/機構用于打廣告的,看了文章內容99%要你付費加群或買資料,
4、自學還是培訓機構?
答:坦白的講,培訓機構肯定比自學要輕松點,至少培訓機構會幫你們制定好方向,但是自學其實會給公司留下不錯的印象,公司會覺得你的學習能力不錯,同時自學也很鍛煉人,對你以后的成長有幫助,
我只能幫你們分析,你們可以根據自己的情況去選擇,但是,我覺得如果你無法靠自學進入這一行,你以后的路可能也會走得比較艱難,
5、演算法是否重要?
答:對于0基礎自學的同學來說,演算法的地位可以稍微放后面一點,當前的目標還是先打好 Java 基礎,能寫 Java 代碼,
6、是否應該先學 C 語言?
答:說實話,我個人并不建議,雖然 C 語言確實是挺重要的,但是我覺得如果有這個時間,還不如把 Java 基礎多鞏固一下,
最后
如果你的問題沒有在本文提到,或者你對本文有疑問,你可以在文章下方留我留言,對于每個留言我基本都會在24小時內回復,極端情況下可能會放到周末回復,原則上只要是與本文相關的正常留言我都會回復,
對于評論里的題目,如果是很多人關注的,我在后續會添加到文章的“常見問題”里,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274105.html
標籤:其他
上一篇:第三章 了解C語言的常見關鍵字
