1. 程式人生 > >給想用心走好java這條路的程式設計師一些建議

給想用心走好java這條路的程式設計師一些建議

自學java沒那麼難

一:個人經歷

我的大學:第一年泡在圖書館看雜七雜八的書,跟學習毫無關係。第二年瘋狂打LOL,從白銀打到黃銅(黃銅守門員)。第三年上半年,被某人點醒,學習了整套C#知識體系,某馬。下半年又決定轉行,又開始了為期半年的自學java路程。所以我的經歷可能適用一些正在學校的學生或者準備轉行做java的。

二:建議

  • 如果你還沒畢業或者想轉行做java
  1. java基礎,不得不提,重中之重!你需要把每個知識點都記錄下來,通過實戰去強化,可以藉助外來的視訊資料,但是記住視訊為輔(一般都不是很深入),看完對應的都必須要看一本書:"java程式設計思想或者java核心技術",建議都看,十分經典,可以在你的筆記基礎之上再次提升文章質量。
  2. 對於有了java基礎的小夥伴來說,那麼不得不提的就是演算法與資料結構以及設計模式這兩大塊內容,重中之重!依然先入門,你需要了解常用的資料結構,知道他們的使用場景以及效能分析,需要具備一定的演算法能力,常用的排序演算法等等之類,可以去leetcode網站去找一些演算法題目去練練,java語言也可以在這個階段再一次提高,你要注意你寫的程式碼的邏輯性和美觀性以及效能。設計模式不得不提,隨處可見,23種設計模式都必須瞭解並知道之間的區別以及常用的場景,比如抽象工廠與建造者模式的區別,常用的單例模式,門面模式,介面卡模式等等,spring原始碼能看到很多運用。headfirst設計模式(適合入門)和演算法4(需要你耐著性子去看)。
  3. 接下來看你什麼方向了,如果是web端,那你可以嘗試去學web開發相關的一些內容了,主要包括了Html/css/js,J2EE ,mysql相關的一些知識,對於如果以後專門要做java後端的小夥伴,前端相關知識可以稍微的花一些時間,因為不需要很久,可以入門。J2EE相關的你都必須掌握,servlet的執行原理等等很關鍵,mysql同樣是你必須要非常深入的去學的內容,你必須要能熟練的寫出SQL語句。你不僅僅要會寫SQL,更要配合業務寫出可重用,效能高的sql語句,建議深入的看一下高效能mysql,你不能僅僅停留在簡單的增刪改查,如果連資料庫的設計都不會,效能優化都不瞭解,那麼真的需要再逼一下自己,讓自己懂的更多。
  4. 之後你必須靠著自己做出一個簡單的網站並且搜尋一些專案資料,跟著練手,至少要有兩個練習經驗,鞏固所學的知識點,在這個過程中你能學到很多,會碰到各種各樣的bug,請記錄下來,對你有用。
  5. 做完了這些專案,你可以繼續去學習一些常用的web框架,比如spring,springboot ,springmvc,mybatis,什麼hibernate還有structs2就不要再碰了,你必須熟練掌握這些框架的基本用法,要能明白常用的一些配置,有興趣的可以進入裡面看看原始碼,記著:研究原始碼是你做這份工作不能停下來的事。spring重中之重,不斷的探索,不斷的去研究原始碼。順便再學一下maven如何管理專案,還有git的一些pull,push ,merge,rebase等簡單用法,公司很常用,不要僅僅停留在svn,很多公司都是用git的。
  • 準備找工作
  1. 海投簡歷,不要不好意思,刷足面試題,最好自己要有個比較懂的技術點。
  2. 如果碰到讓你培訓再工作,培訓期間再打生活費這種,儘量別去,我有幾個朋友吃過大虧,後來都放棄了這份工作。
  3. 面試要自信些,展現自己的特長。其實公司很多,沒了這家還有下家。
  • 工作了的小夥伴
  1. 應該嘗試了不少crud的滋味了吧,也接觸到了複雜業務的情景了吧,加班成了平常事了吧,是不是開始又覺得漫無目的了。可能在開發中你會接觸到新的知識,比如,springboot ,springcloud ,dubbo,zookeeper,linux,rabbitmq,redis,mongdb,kafka,elasticsearch等等,你需要學會去用好這些工具。
  2. 對於已經工作了1-3年的小夥伴,可能你不再需要寫簡單的crud了,但是你能否自己搭建框架,能否寫出可複用的模組程式碼,是否能寫出優雅的程式碼,如果不能,還得繼續學,必須重新拾起設計模式,要能對業務封裝,對工具類封裝,要能重構程式碼,要把設計模式運用到專案中去,你需要去看《重構 改善既有程式碼的設計》、《effective java》,久而久之,你可以寫出比較出色又優雅的程式碼。但這還不夠,你必須要對java虛擬機器有深入的理解,要能解決專案中遇到的記憶體溢位異常等等,這部分內容比較枯燥,但是你必須要啃下去,還要會模擬場景去製造異常,因為很多異常你真的不知道從何下手,只能從日誌裡去看堆疊的列印資訊,去看虛擬機器的日誌資訊,去分析,你才能解決問題。所以必須學好,必須死磕這方面的內容。與此同時你還需要研究jdk的原始碼,就跟著你一開始學java基礎的來,從集合開始,去深入的看原始碼,這時候你會發現java基礎和資料結構和設計模式有多重要。還需要去學習併發相關的知識,要對Java併發包java.concurrent有深刻的認識,這些內容需要你摒棄浮躁的心,慢慢看,不能急,急你也看不出什麼效果。如果已經接觸過很多分散式相關的技術了,分散式快取,分散式訊息佇列,分散式計算,負載均衡,大資料等等,你可能都已經用過了,所以現在的你既有了基礎知識的架構支撐,也還沒到退休年齡,建議你深入的去研究一門技術,是很深入,不要既搞分散式計算,又搞分散式快取,又研究大資料等等,說自己懂的那麼多,真正懂得基本都能拿下你。所以你必須開始確定自己的研究方向,專門的去研究某個內容,讓這一塊成為你的優勢和強項,這也是為了避免大齡被淘汰的法門。你應該朝著某個領域的專家去努力。有了自己深入研究的方向,你應該去幫助更多的人,去發表更多的優質文章,也可以去打造屬於自己的開源專案,做出對別人,對自己有價值的東西。所以這個階段的你應該提高自己的影響力,幫助更多的人,更多想學習的人

三:總結

這是我一路走來的資料,其實要學的,要精通的很多,看自己能不能沉住氣,腳踏實地。如果有人需要下方資料,關注微信公眾號:java架構師小密圈, 領取2T學習資源。