1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        0 基礎 Java 自學之路(2021年最新版)

        共 7092字,需瀏覽 15分鐘

         ·

        2021-04-14 08:39

        前言

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

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


        初衷

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

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

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


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

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


        自我介紹

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

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

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


        行業(yè)現狀

        程序員現狀

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


        Java 現狀

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

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

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


        自學前你應該知道

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

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


        自學預估周期

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

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

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

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


        自學教程獲取

        授人以魚不如授人以漁,一個簡單又靠譜的的教程獲取方式:B站搜索關鍵字+教程,例如:Java零基礎教程視頻、JDBC教程、MySQL基礎教程、JavaWeb視頻教程、SSM整合教程、Java項目實戰(zhàn)等等,然后按“最多點擊”排序,在前幾個里尋找一個合適的即可,一般點擊高的都是質量還可以的。


        很重要的建議

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

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

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

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

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

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

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

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

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

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


        自學知識點

        1、Java SE

        1.1、Java基礎

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

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

        變量類型:局部變量、實例變量(成員變量)、類變量(靜態(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、數組、日期時間、枚舉、使用 IDE 進行 DEBUG


        1.2、集合

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

        List:ArrayList(最重要)、LinkedList

        Set:HashSet(最重要)、TreeSet


        1.3、多線程

        線程生命周期

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

        ThreadPoolExecutor(線程池)

        鎖:synchronized 和 Lock


        1.4、I/O流

        1.5、網絡編程

        1.6、反射

        1.7、泛型

        1.8、注解


        小結:

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

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

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

        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 后端已經比較少直接使用到了,最近幾年的 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),將之前所學的知識點應用起來,做出一個真正的項目(網站)。學習的項目必須使用 SSM 框架,加深自己對 SSM 的理解。該階段所做的項目,也是未來寫在你簡歷里的“項目經驗”,需要跟著敲一遍。


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


        7、面試準備

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


        7.1、重點內容

        • Java 基礎高頻面試題

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

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

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

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

        • SSM 實戰(zhàn)項目

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


        7.2、進階內容

        • JVM

        • Redis

        • Kafka

        • Zookeeper

        • Dubbo

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

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


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


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


        面試真題可以參考我的文章:Java 基礎高頻面試題(2021年最新版)。


        常見問題

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

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


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

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


        3、在網上看到有人自學6個月進 BAT?

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

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


        4、自學還是培訓機構?

        答:坦白的講,培訓機構肯定比自學要輕松點,至少培訓機構會幫你們制定好方向。但是自學其實會給公司留下不錯的印象,公司會覺得你的學習能力不錯,同時自學也很鍛煉人,對你以后的成長有幫助。

        我只能幫你們分析,你們可以根據自己的情況去選擇。但是,我覺得如果你無法靠自學進入這一行,你以后的路可能也會走得比較艱難。

        但是如果你已經報了培訓機構,那就好好學不要多想,并不是說一定不能找培訓機構,先入行再說。


        5、算法是否重要?

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


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

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


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

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

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


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

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


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

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


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

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

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

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


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

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


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

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


        福利

        文章提到的知識點,我在B站找了一些當前點擊量和評價比較不錯的教程,簡單的整理了一份“0 基礎 Java 自學之路(配套教程)”,需要的在公眾號右下角菜單欄“自學教程”自行獲取即可。

        如果覺得不合適,也可以按文中“自學教程獲取”提到的方法去自己尋找合適的,也是可以的。


        學習交流群

        另外,我自己也有一個“Java 學習交流群”,里面有很多也在自學的同學,也有一些工作了的同學,大家可以在里面討論 Java 相關內容。

        有興趣的在公眾號右下角菜單欄“聯系我”加我好友,備注:加群,我拉你進群。


        最后

        如果你的問題沒有在本文提到,或者你對本文有疑問,你可以在文章下方留我留言,對于每個留言我基本都會在24小時內回復,極端情況下可能會放到周末回復,原則上只要是與本文相關的正常留言我都會回復。


        推薦閱讀

        921天,從小廠到入職阿里

        兩年Java開發(fā)工作經驗面試總結

        4 年 Java 經驗面試總結、心得體會

        5 年 Java 經驗字節(jié)、美團、快手核心部門面試總結(真題解析)

        面試必問的 Spring,你懂了嗎?

        如何寫一份讓 HR 眼前一亮的簡歷(附模板)

        面試阿里,HashMap 這一篇就夠了

        面試必問的線程池,你懂了嗎?

        BATJTMD 面試必問的 MySQL,你懂了嗎?

        如何準備好一場大廠面試

        跳槽,如何選擇一家公司

        瀏覽 79
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男人的天堂在线播放 | 成人A片 免费视频观看 | 爱爱高潮免费视频 | 欧美激情自拍 | 亚洲久久天堂 | 日本少妇无码 | 十八岁新疆女rapper更新内容 | 操B在线看 | 91精品国产入口在线 | 欧美三级性爱视频 |