Java初級~中級~高階進階之路

java架構00發表於2020-10-24

初級程式設計師

僅能完成簡單模組和專案的開發工作,難以勝任複雜模組的開發。通常是入行不久, 1 年及以下工作經驗的同學。

能力要求

  1. 熟悉前端基礎知識如 HTML、JS、CSS 。

  2. 能夠使用一門 MVVM 框架進行簡單的業務開發。

  3. 遇到複雜的元件和模組,會找現有的輪子使用。

  4. 會使用百度、google 等檢索工具搜尋問題。

中級程式設計師(阿里 p5)

在必要的輔導或標準流程支援下,能獨立負責一個子模組或者一個專案的具體任務,對及時性和準確性負責。通常是 2-3 年工作經驗的同學。

能力要求

  1. 除了前端基礎知識外,熟悉計算機、網路等專業基礎知識。

  2. 熟練掌握工作中使用的技術棧開發業務。(除了 MVVM 框架外,還能瞭解 webpack 的配置)。

  3. 能瞭解一個需求從開發-上線整個生命週期,並對各個環節負責。

  4. 具備基本的邏輯分析、問題分解、歸納總結等能力。

  5. 瞭解基本的資料結構和演算法,寫程式碼較熟練。

  6. 知道從靠譜的渠道去查詢問題,在找不到合適輪子的時候,會造一些簡單的輪子輔助業務開發。

程式設計師的進化之路

初級 -> 中級

通常在初級這個階段,是進步空間最大的階段,這個階段是不存在天花板的。

編碼

編碼是初級階段最需要經常做的事情,古話說孰能生巧,寫程式碼也是同樣的道理。

  • 寫什麼的樣程式碼

  • 在公司要多做業務,嘗試不同的業務,目標是讓自己先成為一個熟練工。下班後也可以折騰點小專案做,可以選擇自己感興趣的內容,嘗試自己實現一遍。

  • 如何寫程式碼

  • 學會模仿,參考大牛的編碼風格,照葫蘆畫瓢。如果公司有程式碼規範,跟隨著公司的程式碼規範走,如果沒有,參考業界規範,並用工具(如 eslint)約束自己。遇到一些不會寫的,哪怕找到可以參考的程式碼,跟著抄一遍也行。

工作

大部分時間都在工作,那麼如何合理的利用好 8 小時工作時間呢。

  • 熟悉業務 不要僅僅埋頭寫程式碼,也需要對業務瞭解,認真參與需求評審環節,明確自己所做的任務。

  • 熟悉工作流程

  • 要熟悉從需求-開發-聯調-測試-上線的每個工作環節,認真按照規範來執行,對上線要有敬畏心。

  • 提升效率

  • 工作的時候,儘量不要被打斷,可以安排一個免打擾時段,比如下午的 2點-4點,只編碼而不去處理其它事情。減少在群裡 灌水和鬥圖的時間。

  • 加班

  • 可以接受合理的加班(比如為了趕某一個需求加班一陣子),不接受沒有任何補償和調休的日常加班(996),因為日常 加班會壓縮你學習和生活的時間。

學習

  • 初級階段是需要透過大量的學習來提升自己的能力。

  • 明確自己的學習目標 學習是為了提升能力,能讓你勝任更復雜和有挑戰的工作。

  • 應該學習什麼內容 前端基礎,JS、CSS、HTML 反覆學習。工作中用到的一門前端 MVVM 框架。瞭解一些廣度知識,比如 HTTP、正規表示式、Web安全、效能最佳化、設計模式,資料結構和演算法。

找到合適的學習方式

  • 看書+編碼:購買經典的書籍閱讀,並作為平時寫碼的參考工具,看書和編碼是一個反覆的過程,基本就是看書->編碼->看書->編碼迴圈個 3-4 次,這個過程就是在不斷修煉內功。

  • 影片:慕課網的入門實戰影片,根據自己的需買,要充分學習自己購買的每一個影片,認真的跟著老師學習一遍寫一遍,遇到不懂的要積極提問,學習在於深入而不在於多。影片比書籍的好處在於更貼合實踐,也更貼合公司業務,另外,課程的升級和更新也更加靈活。

  • 官網文件:學習每一個新的技術棧,入門最好的方式是透過它的文件學習,可以系統的過一遍文件,手敲它每一個示例。

  • 社群:慕課網手記、掘金、CSDN、InfoQ 等中文社群,利用碎片化時間看一些高質量文章學習。

  • GitHub:學會 GitHub 的使用,知道 clone、fork、pull、push 等基本操作。

  • 花更多的學習時間 如果想比別人成長的快,就得花比別人更多的時間用來學習(這也是為什麼不鼓勵日常加班),尤其是初級這個階段,成長曲線是非常快的。

  • 知識沉澱 俗話說好記性不如爛筆頭,可以養成寫部落格的習慣,把學習的內容用文字的形式記錄下來,整理成文,並按學習的技術方向做歸類。

提問

在初級階段,免不了經常遇到問題,會提問也是一門技術活,好的提問姿勢能讓你事半功倍。

  • 不好的提問方式“這個報錯是什麼意思?”;缺乏思考,沒有體現自己關於問題的思考過程。“為什麼我的程式碼和你的一模一樣,就是執行不了?”;缺乏上下文,應告知程式碼是編譯不過還是執行不起來、錯誤提示資訊、相關程式碼、可能出錯的程式碼分析。沒有足夠的上下文,神仙都不知道如何解決相關的問題。“為什麼 xxx 能(不能)yyy”;問的問題本身就是一個錯誤的結論,通常是隻是看到了現象,而沒有分析問題的本質。

  • 好的提問方式首先你在提問之前,自己應該經過充分的思考,並學會把問題拆解,在拆解的過程中就會把問題的複雜度降低。其次要善用搜尋引擎,把關鍵字提取出來去搜尋引擎上去搜尋,先嚐試自己去解決問題。如果仍然不能解決,可以將問題的相關上下文、截圖及必要標識及自己的思考過程、查詢到的相關資料,以及自己的分析傳送給想要幫助你的人,並能提供最小化復現的問題。最後,請將你的問題及解決方案重新整理,並告知幫助你的人問題已經解決,重新整理解決問題的過程會幫助你理清思路、從而對問題有著更深的理解。

中級 -> 高階

到了中級階段,基本上意味著你可以在大公司缺人的時候進入大公司工作了,如果想成為大公司不可拒絕的人才, 那你還需要朝著高階階段努力。

編碼

沒錯,到了中級階段,你想要提升最重要的途徑還是要編碼。

  • 寫什麼的樣程式碼和初級不同,除了做業務之外,你也參與開發做一些偏技術型別的專案,比如參與組內元件庫的開發,一些通用 JSSDK 的開發,這些會對你的技術要求會更高。有機會去參與平時使用到的一些開源技術棧的共建,比如想實現每個 feature 但現有開源庫不滿足,實現難度不大的情況下可以去提一個 pull request。

  • 如何寫程式碼學會模仿,除了參考大牛的編碼風格,還要琢磨他們的編碼思路,多思考他們為什麼這麼做。學會元件化、模組化的開發方式,學會複用和封裝,減少 CV 的操作。對自己的程式碼質量負責,可以經常組織 code review。

工作

想要進階,需要在工作方面有些產出。

  • 業務思考要明白業務和公司的目標,參與到需求的早期階段中,同時也要多思考業務,想著有沒有透過技術手段來提升業務價值,比如移動端的白屏時間減少,可以帶來很好的使用者體驗,提升使用者的留存率。

  • 技術思考思考業務開發中的一些痛點,如何用技術手段去最佳化業務的開發流程,提升開發效率,比如為業務量身定製一款腳手架工具。

  • 最佳化工作流程不僅要熟悉從需求-開發-聯調-測試-上線的每個工作環節,還要多思考每個環節有沒有可以提升的點,特別是上線過程,比如能不能做到自動化,能不能做到小流量上線,能不能及時回滾程式碼。

  • 技術分享

    把工作中遇到的一些問題的解決方案、學習的一些新技術,產出的一些技術專案總結下來,作為組內技術分享和輸出,這樣一是可以總結沉澱你的技術,二是可以讓大家能知道你做的東西,並活躍組內的技術氛圍,三是鍛鍊自己的表述能力,這個能力在大公司的晉升述職中非常重要。

學習

中級階段仍然需要透過大量的學習來提升自己的能力。

  • 明確自己的學習目標學習是為了提升自己的硬實力,不僅僅能夠提升工作效率,還能讓自己更好的服務於業務,升職加薪。

  • 應該學習什麼內容研究工作中所用到的工具鏈,不僅僅是執行時的 MVVM 框架,還可以是編譯時的 webpack,必要的時候去研究其中的原始碼實現。深入學習一些廣度知識,比如 HTTP、正規表示式、Web安全、效能最佳化、設計模式,資料結構和演算法,並把它們應用到你的工作中。

  • 找到合適的學習方式看書:找到所學習方向的經典書籍閱讀,適當做一些學習筆記。影片:如慕課網的進階實戰影片,根據自己的需買。官網文件:可以嘗試去看一下英文文件。社群:StackOverflow、HackerNews,慕課網手記、掘金等,除了利用碎片化時間看一些高質量文章學習,也可以往上面釋出一些優質文章。GitHub:關注 trending,參與開源社群的共建,並嘗試自己造一些輪子。

  • 學習時間與深度在中級階段,你仍然需要花很多時間去學習,這個時候要注重自己學習的深度了。

  • 知識沉澱俗話說好記性不如爛筆頭,可以養成寫部落格的習慣,把工作中深入學習到的一些非敏感知識記錄下來併發布,而不僅僅去釋出一些基礎知識的學習了。

  • 技術視野除了自己工作中的使用的技術棧之外,也要了解同類其它優秀的開源技術棧,從多個維度(feature 完整性、文件、上手難度、維護力度、生態等)去做對比。要保持對新技術的敏感的關注,並時刻思考這些技術能否為自己的業務帶來價值,在需要的時候做合理的技術選型。

總結

所謂技術能力其實就是解決問題的能力和學習能力,所以無論你在哪個階段,甚至是更高的階段,不斷提升這兩個能力都是你應該一直要做的事情。

最後

小編整理出一篇Java進階架構師之路的核心知識,同時也是面試時面試官必問的知識點,篇章也是包括了很多知識點,其中包括了有基礎知識、Java集合、JVM、多執行緒併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java演算法、資料庫、Zookeeper、分散式快取、資料結構等等

由於pdf文件裡的細節內容實在過多所以只編輯了部分知識點的章節粗略的介紹下,每個章節小節點裡面都有更細化的內容!以下就是部分章節目錄,由於頭條的篇幅限制目錄上的詳細講解也無法一一列出,文末底下有獲取以下章節的所有詳細知識講解。

JVM

  1. 執行緒

  2. JVM記憶體區域

  3. JVM執行時記憶體

  4. 垃圾回收與演算法

  5. JAVA 四中引用型別

  6. GC分代收集演算法 VS 分割槽收集演算法

  7. GC垃圾收集器

  8. JAVA IO/NIO

  9. JVM 類載入機制


由於篇幅限制小編,細節內容實在太多啦,所以只把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!有需要的程式設計師,可以幫忙點個贊+關注我掃一掃加"VX"即可免費獲取哦

JAVA集合

  1. 介面繼承關係和實現

  2. List

  3. ArrayList(陣列)

  4. Vector(陣列實現、執行緒同步)

  5. LinkList(連結串列)

  6. Set

  7. HashSet(Hash表)

  8. TreeSet(二叉樹)


JAVA多執行緒併發

  1. JAVA併發知識庫

  2. JAVA執行緒實現/建立方式

  3. 4種執行緒池

  4. 執行緒生命週期(狀態)

  5. 終止執行緒4種方式

  6. sleep與wait 區別

  7. start與run區別

  8. JAVA後臺執行緒

  9. JAVA鎖

  10. 執行緒基本方法4.1.11. 執行緒上下文切換

  11. 同步鎖與死鎖

  12. 執行緒池原理

  13. JAVA阻塞佇列原理

  14. CyclicBarrier、CountDownLatch、Semaphore的用法

  15. volatile關鍵字的作用(變數可見性、禁止重排序)

  16. 如何在兩個執行緒之間共享資料


Spring 原理

  1. Spring 特點

  2. Spring 核心元件

  3. Spring 常用模組

  4. Spring 主要包

  5. Spring 常用註解

  6. Spring第三方結合

  7. Spring IOC原理

  8. Spring APO原理

  9. Spring MVC原理

  10. Spring Boot原理

  11. JPA原理

  12. Mybatis快取

  13. Tomcat架構


由於篇幅限制小編,pdf文件的詳解資料太全面,細節內容實在太多啦,所以只把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!有需要的程式設計師可以幫忙轉發+關注之後,掃一掃加"VX"即可免費獲取哦



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985897/viewspace-2729374/,如需轉載,請註明出處,否則將追究法律責任。

相關文章