Java如何打好牢固的基礎?

如果純粹是爲了學Java,那麼不建議閱讀本文,因爲本文不是從理論和教科書的角度講述如何打好java基礎,而是會從“快速用java掙錢”這個角度,講邊學、邊做項目和邊提升的方法。

在講具體的方法前,有必要和大家講明如下的道理。

1 工作中用到的java技術。絕不單純是java核心語法,而包括java核心語法、數據庫技能、web框架(目前比較流行的是spring boot框架)和整合大數據組件和分佈式組件的技能。其中資深架構需要掌握java核心語法、數據庫技能、web框架技能,而架構師還需要精通整合大數據和分佈式組件的技能。所以學java絕不是單純學線程集合等java核心的語法。

2 找到java工作後,學java技能的速度要比單純自學和在培訓班裏學java要高太多,原因很簡單,用來掙錢的項目裏包含的纔是真正的技術,自學或培訓項目,沒法模擬相關環境。所以本文後面給出的java打基礎的方法,是先學到能找到工作的程度,再找工作,然後到項目裏學。

3 Java相關的書很多,但不是每個技術點都在項目裏用到,而且很多項目裏需要的技能,其實根本無法從書本上學到。比方說,某初學者在找工作前學了一大堆java技能,或者是數據結構網絡通訊操作系統方面的技能,但是在工作後,會發現真正用到的只是其中一部分,比如java核心裏的socket編程,不少項目就未必用到。

4 相反,項目中經常要遇到的分析排查問題,和分佈式組件調優等的技能,相關的書就比較少,而且,越是值錢的技能,越在書本上看不到,這些技能只是零散地存在網上的諸多文章裏。說這些話的含義還是,請大家務必要在工作中學,自學不是不重要,但高級開發之上的技能點,靠自學或培訓班積累的經驗,未必能和實際項目要求能對上。

在講好上述鋪墊後,下文就可以給出具體的Java固基的步驟了。

1 先用3到5天,在本機安裝jdk,IDEA集成開發環境,MySQL數據庫和MySQL WorkBench數據庫客戶端環境。

2 買兩本java書,比如Java瘋狂講義和Java編程的邏輯。爲什麼買書?因爲書裏的內容畢竟經過出版社審覈過,而且代碼能跑通,兩本書並集足以涵蓋java基礎點。

但是,在學java核心的時候,可以只學基本語法,面向對象語法,集合,異常處理和JDBC。IO,設計模式,圖形化界面,tcp socket編程這塊,可以不用看,因爲剛開始找工作未必要用這些技能。而JVM和多線程這塊,可以先通過跑代碼,瞭解相應的概念。

也就是說,java核心方面的技術點雖然多,但剛開始學的時候,未必要涵蓋所有的點,上文提到不用學的點,在初級開發階段基本用不到,所以學了白學,而且在學java核心技能的時候,一定得邊跑代碼邊學。

3 上文給到的java書裏,一定包含用jdbc連接操作數據庫的技能,此時可以在mysql上搭建相關表,一方面熟悉sql語法,另一方面瞭解下java連接和使用數據庫的大致步驟。

由於列出了只要學習的技能點,所以上述技能學起來應該不難,而且大概用1個月的時間能學好。後面就需要學spring boot,但是,這方面只需要學到能做增刪改查業務的地步。

4 學spring boot的時候可以用我寫的書。在我的書裏,不僅包含了 spring boot+JPA做增刪改查的技能,還進一步給出了可跑通的項目,此外還包含了 spring boot整合分佈式組件的基本做法。

學好spring boot應該能以跑通一個項目爲標誌,請注意這裏是跑通現成代碼,而不是自己手寫出一個全新的項目。

跑通一個spring boot項目後,大致能掌握spring boot做業務的基本技能,這也是幹java活的最低標準。達到這個程度後,後面不應該繼續學,而是應該去找工作了。

跑通一個spring boot項目後讓大家去找工作,不是因爲後面java技能不會用學了,而是比這高深的技能一方面通過自學效率不高,另一方面,找到工作後,更能通過項目爲導向,更精準地知道後面該學什麼。

比如一些資深java開發都知道,學好spring boot相關技能後,可以一方面繼續學習junit和logback等實用性組件,另一方面應當去學數據庫優化,jvm調優乃至分佈式組件應對高併發的技能。但這些技能該學什麼?學到什麼程度可以去挑戰更高階的職位,只能是在做項目的工作中自己去體會,如果沒有在項目中,學到的相關技能,我可以說,大部分都是白學。

java小白如何找工作,雖然很重要,但和主題無關,所以就不再展開說明,如果大家要了解細節,可以看我其它相關文章。

可以這樣說,找到第一份java工作,是學習java的一個關鍵性的里程碑,在這之前,如果光學習找不到工作,學的技能有可能是白學。在後文裏,就將講一下找到第一份工作後,如何有效且高效地繼續打好java基礎。

當零基礎的java開發找到第一份工作後,首先需要儘快掌握用spring boot等框架開發業務的流程,其中不僅包括寫代碼,還包括測試,調試和排查問題等,可以說,入職3個月這段時間內,基本能打好最初級的java基礎,即能成爲一個合格的碼農,在這個階段,還應當掌握如下的基礎知識。

1 結合項目需求,熟悉java集合的用法,即數據結構如何用在存儲業務數據方面。

2 用通過命令登上linux服務器,再通過命令查看日誌,如果可以,再積累分析問題和排查問題的能力,在此基礎上,更可以開始熟悉mysql,redis等組件在linux上的安裝和部署流程。

3 全面積累並掌握單機版spring boot的開發、測試和調試技術,這塊要做到給一個需求,能很快用spring boot框架實現,出現問題,只要不是分佈式方面的,可以很快通過調試看日誌等手段發現並解決問題,適當掌握junit單元測試等的手法。

一般來說,java初級開發應該在半年內熟悉上述技術,最長不應該超過1年。在這個過程中,不僅應當掌握必要的java和spring boot框架等方面的技術,更要習慣在做項目時解決問題的方式。

比如遇到問題該如何通過搜索關鍵字來排查和解決問題,遇到自己不會的技術,如何快速通過搜索引擎熟悉,更重要的是,在被要求開發一個新的功能模塊時,能快速地仿照着現有模塊,改寫並實現現有功能模塊。做到這一點以後,其實後面的提升,只是體力活了。

初級java開發的標準是更用spring boot等框架開發增刪改查的功能,用半年到1年時間做到這種程度後,更應當爲升級到高級開發打下java方面的基礎,這塊需要哪些技術?又該怎麼做?

1 凡是項目裏遇到的問題,你都積極去參加,哪怕你不是熟悉,也得覆盤人家的分析和解決過程,這樣做個3個月,一定能快速積累經驗。

2 多參與系統上線和發佈的工作,這方面包含了大量搭建組件環境和排查組件問題的經驗,還是這句話,剛開始不懂就先跟着學,這方面絕對也是一回生兩回熟。

3 千萬留心分佈式方面和調優方面的事情,比如瞭解項目裏用到哪些redis,kafka等分佈式組件,結合業務看這些組件的語法和配置參數,同時學習下通過分佈式組件實現高併發的技能。如果項目裏遇到性能調優等方面活(比如數據庫調優jvm調優或高併發調優),這種事情多參加,哪怕不歸你管你也多參加,要升級到資深開發和架構,就需要打好這方面的基礎。

如果做到這種程度,是否能拿高級開發或資深開發到工資我不敢說,但技術上應該是滿足了資深開發的要求。這裏請注意,從初級開發升級到資深開發,以及以後升級到架構師,該學什麼java技術,不能人云亦云,而應當結合自己的實際,在項目開發中自己體會。

比如網上有很多系列的升級教程,這些教程中包含了足夠多的技術體系,而每個技術體系裏,也恨不得羅列全所有的語法和經驗。這就好比服用補藥,每個人的體質不同,進補的目的也不同,如果java程序員不管三七二十一,脫離自己的需求盲目地學習網上的教程,雖然不會出錯,但學到的技能未必對自己的提升有直接的項目。

所以在打基礎的過程中,不應緣木求魚,定好方向,即我要應聘大廠資深開發崗,需要哪些技術,該如何學,如何準備面試?具體精準下來,無非包括如下的內容。

1 證明自己有調優和分佈式組件的技能,按上文給出的做法,能通過項目找到對應的實踐機會,然後針對性地看redis和dubbo組件的用法即可。

2 證明自己有數據庫調優和jvm調優能力,也是老辦法,項目裏解決問題的實踐+適當看資料。

3 很多面向資深開發的面試官,會問看似很偏的技能,比如violate或dubbo協議等,掌握這些技能的做法是,收集面試題,再找實際項目中的落腳點,這樣也能高效地打好相關基礎。

4 至於背題,這種不能不算基礎,但僅僅屬於理論基礎,用幾天背下就可以了。

一個java初級開發升級到高級或資深開發的時間,快則1年,慢則2年,如果2年內再升不成,那估計是方法有問題。這個過程該打好哪些基礎,該怎麼做?這些絕非能用短短的文字來描述,上文也僅僅是給出了方法。

再囉嗦下,在java初級開發升級到資深開發的過程中,絕不能僅僅關注項目,因爲項目裏未必有升級能用到的技能,也絕不能單單去看書去看面試題,更不能過於聽信別人給出的技術路線。而應當先全面收集高階職位大廠的面試題,這個是目標方向,同時儘可能地在當前你做的項目中找落腳點,如果項目裏沒,然後再找網上的資料看。總之第一確定技術要點,第二看這些要點是如何同項目結合的,第三再適當背題,這樣不僅能高效打好java資深開發相關的基礎,而且還能高效通過資深開發的相關面試。

寫好java資深開發方面打基礎的方法後,似乎應當繼續寫架構師的基礎該怎麼打。但本文已經洋洋灑灑寫了將近4千字,而架構師打基礎的方法可能和前文說的不同。爲了不喧賓奪主,本文暫且告一段落。如果本文點擊量高,本人會再來更新一波,寫寫架構師的固基之法。

 

這是我的公衆號,其中包含了大量面試文章,同時我自己出了多本Python和Java方面的書籍,會定期在公衆號裏發書的電子版。請大家關注下我的公衆號,謝謝了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章