寫了很久,這是一份最適合/貼切普通大眾/科班/非科班的『學習路線』

帥地發表於2020-01-12

說實話,對於學習路線這種文章我一般是不寫的,大家看我的文章也知道,我是很少寫建議別人怎麼樣怎麼樣的文章,更多的是,寫自己的真實經歷,然後供大家去參考,這樣子,我內心也比較踏實,也不怕誤導他人。

但是,最近好多人問我學習路線,而且很多大一大二的,說自己很迷茫,看到我那篇 普普通通,我的三年大學 之後很受激勵,覺得自己也能行,(是的,別太浪,你一定能行)希望我能給他個學習路線,說實話,幾乎每天都有問這種問題的,鑑於此,我就來寫一篇適合普通大眾的學習路線,就從大一入學那一刻開始入門說起,雖然不一定適合你,但或許能給沒有明確目標的人帶來一些學習的方向,那麼這篇文章,我就覺得值了。

**注意:**這篇文章不是讓你成為大神的,學完也不是多厲害,而是,給處於大學迷茫、不知道學啥的你,一個學習的方向,無論你是否是科班。不過我相信,當你學完了這些,你應該會有自己的學習方向了。

一、選擇一門語言入門程式設計的世界

1、入門語言的選擇

學習程式設計的第一件事,我覺得就是選擇一門語言,不過能選擇的語言實在是太多了,不知道如何選擇的,可以選如下一門比較熱門,也是 90% 人的選擇的語言入門。分別是 C 語言PythonJava

那應該選哪一門呢?說實話,我覺得選哪一門都問題不大,因為等你成功入門之後,你大概率還會學習其他語言,那麼我這裡建議跟著學校的課程來選,因為大一基本也都會開設一門程式語言,我們學習當時開設的是 C 語言

那麼問題來了,根據讀者的反饋,其實還要部分學校大一是沒有開設這些語言的,而且學那些網頁設計這類的語言,那該咋辦?答是我這裡建議你仍然選擇一門語言來學習,由於你不是跟著學校的課程走的,那麼我這裡建議你選擇 C 語言

說實話,我覺得不論你是學哪一門語言的,如果有時間,都應該瞭解、學習下 C 語言,我覺得,你只要會了 C 語言,那麼你入門其他語言分分鐘,但會了其他語言,入門 C 語言可能會被虐。學習 C 語言,真的讓人學習到挺多知識的,所以你不知道學習哪一門語言,這裡我建議學習 C 吧,以後參加打ACM之類的比賽了,也一般用 C/C++。

2、書籍以及視訊的介紹

這一個星期,我至少被 15 個人問過學習 C 語言要用哪一本呀?用什麼編譯器啊?反正我是被問哭了,不過當年我也有這樣的疑問,所以就都耐心回答了。所以這裡介紹下一些書籍和視訊,雖然不是最好的,但我覺得還可以。這裡我就以 C/Python/Java 為例子來介紹。

後面我也會出一篇彙總各類工具的文章。現在已經收集了幾十個常用開發工具了,不過可沒有提供破解教材哈,百度一搜一大堆破解教程或者序列碼。估計在過一個星期,我就會整理出來的了

(1)、C語言

書籍推薦:書籍可以看《C語言程式設計》,譚浩強寫的,適合入門學習,也是我第一本看的書。進階可以看《C 和指標》。

視訊推薦:可以看郝斌錄製的視訊,在 b 站搜尋 C 語言就出來了,叫做《郝斌 C 語言自學教程》。說實話,對於新手,我覺得看視訊還是比較不錯的,可以少掉很多坑,不然你搞編譯環境都搞死。

這裡工具我就不介紹了,一般書籍和視訊都會手把手交你們用哪個編譯器。我當時用的是 codeblocksvs6

(2)Java

書籍推薦:《Java核心卷1》,這個算是入門書籍吧,入門書籍我看的不多,暫時介紹這一本,因為沒看過的一般我不介紹,大家可以去網上搜尋。

視訊推薦:這裡推薦 【尚學堂】Java300集,作者是 高琪 錄製的,b 站搜尋就可以了。講的是真的好,入門的話,感覺看前面 100 集就可以了。進階可以看《Java程式設計思想》,這本書也很好,解決了我很多疑惑。、

Java 編譯器推薦用 IntelliJ IDEA,自己百度去搜尋。

(3)Python

書籍推薦:這裡推薦《Python程式設計:從入門到實踐》。

視訊推薦:我看過小甲魚是視訊,還不錯,如果大家要看小甲魚的視訊的話,書籍可以順便來他的配套書籍吧。視訊叫《[小甲魚]零基礎入門學習Python》,b 站搜尋就可以了。書籍也是也是《[小甲魚]零基礎入門學習Python》。

開發工具我當時是用 pycharm

問題來了,很多人問,應該掌握到哪個程度才算可以呢?

說實話,我也不大清楚,,我覺得書中說的,90% 理解就可以了,注意,是理解,具體怎麼寫,忘記了問題不大。總之,當然是學的深點比較好了。

文章首發於公眾號『苦逼的碼農』,更多經常文章歡迎搜尋關注,已有150多篇原創,公眾號回覆『電子書』送你一份精選電子書

二、資料結構與演算法

大學第一學期你入門了某種語言之後,就要開始學習資料結構與演算法L。當然,不一定是第一學期,對於非科班的也一樣,也是建議這個學習順序。當然,你有自己的目標,完全可以按照自己的來。

我的文章是主寫資料結構與演算法的,我秋招也是靠著這個優勢拿到 offer 的,所以我認為資料結構與演算法是非常非常重要的,可能你會聽到工作都基本沒用到這些知識啊,或者庫函式都幫我們封裝好了啊,我們幹嘛要學。

如果你這樣想的,那你就錯了。對於想要找工作的來說,這方面的知識是必考的,所以你得學;對於已經工作的來說,這方面的知識,可以讓你學習到很多設計思想,所謂 資料結構 + 演算法 = 程式,而且你學了這個,你會發現學習其他知識,上手的特別快。綜上,資料結構與演算法必學。

好吧,上面扯了這麼多,就是告訴你,資料結構與演算法的重要性,好了,下面我介紹下入門資料結構必學的有哪些,不過你跟著書本的學習順序來就是了。

1、基礎資料結構的學習

1、時間複雜度、空間複雜度

2、連結串列、佇列、棧

3、樹(二叉樹,查詢二叉樹、AVL樹,紅黑樹等)

4、圖(圖有好多種演算法,深度/廣度搜尋,最短路徑、最小生存樹等)

如果你是科班的,那麼這些我覺得你大一第二學期都學完是最好的了,沒學完也問題不大,有些人可能是先教《離散數學》這本課,為資料結構與演算法做鋪墊。

書籍推薦:《大話資料結構》、《資料結構與演算法分析:C語言描述版》,學哪一本?都可以,問題不大,我當時學的是第二本。大家記得根據自己的語言去學,我上面列舉的,都是用 c 語言來實現的。

視訊:我只看過《小甲魚的資料結構與演算法》視訊,你們自己看著辦吧。

2、演算法的學習

在大一大二,真心建議你們把演算法基本功打好,後面就真的沒啥時間刷題之類的了,因為無論你以後要學習哪個方向的,演算法都是實用的,會一些演算法,說話也都自信了。演算法的學習,刷題是必須的了,但不建議盲目刷題,而是先學習一些演算法思想,在找對應的題刷,要學的主要有:

1、十大排序演算法

2、遞迴、貪心、回溯、動態規劃、列舉等

推薦書籍:《阿哈演算法》、《演算法設計與分析基礎》適合入門;《演算法第四版》、《演算法導論》、《程式設計之美》適合進階

視訊:這種還是挺建議看書,我沒看過視訊,,這裡就不介紹了。

具體可以看我之前的文章:程式設計師必須掌握的演算法有哪些?談談這這幾年學過的演算法

3、保持演算法的學習

演算法的學習,真的是靠積累的,而刷題是必須的。而且學校都會舉辦一些比賽,這裡還是比較建議大家去參見的,這樣也能讓你更加有激情著去學習。當然,每年都會有很多 ACM 程式設計大賽,要不要參加呢?這個看你了,也不是說參加就一定好,看你自己吧,具體可以參考我之前一篇文章說的: 普普通通,我的三年大學

大家可以在 leetcode 長期保持刷題,一天一兩道,或者一個星期三四道都行。

文章首發於公眾號『帥地玩程式設計』,更多經常文章歡迎搜尋關注,已有150多篇原創,公眾號回覆『電子書』送你一份精選電子書

三、選擇一門語言深入學習

剛才我選了選擇一門語言來入門,之後你可能還會學習其他語言。我當時 C 語言入門,後面深入學習 Java。

你可以學習過很多種語言,但你一定要有一門拿的出手的語言,所以把上面的學習了之後,這個時候你可能是大二,最多大三,那你就應該選擇一門語言來深入學習了,一般可選的有四門:C++JavaPythonGo,如果你想從事後端開發崗位 ,那麼 C++,Java和Go相信是大多數人的選擇,其中我覺得選擇 Java 的人數是最多的。Go 是最近才火起的語言,也是個不錯的選擇。

那麼問題來了,該選哪一門呢?入門你以後想從事遊戲之類的開發,那麼建議選擇 C++,或者你以後比較想去騰訊位元組跳動這些的,可能選擇 C++ 會好一點。如果你想從事Web網站開發的,或者未來想去阿里巴巴、美團這些的,那麼 Java 會好點,Go 和 Python呢?其實我也不是很懂,哈哈哈哈。不過我聽說,對於一些不是很大型的網站之類的,都會用 Python 或者 Go 之類的快速開發。

大家如果是面向公司程式設計的,可以去看看哪些公司的技術棧,來選。當然,無論你選哪一門,只要你有實力,哪個公司都會收你,只是有可能到時候要轉語言,我現在好像是需要從 Java 轉向 Go,不過語言只是一門工具,把基礎共通的知識學好,轉語言都問題不大。

四、以Java為主的後端開發學習路線

由於我是深入學習 Java 的,那我就介紹下 Java 的學習以及書籍的推薦吧,其他語言我覺得也類似。我大二開始學習 Java 的,還是看了挺多知識。入門的就不介紹了,上面介紹過。下面說的基本是深入學習必須理解的了。

1、Java進階必學

集合模組:主要是包括各種常用集合:例如 Set(包括HashSet,TreeSet), Map(包括 HashMap,HashTable),List(包括ArrayList,LinkedList)等等,上面列舉的都得學習它的原始碼

多執行緒:synchronize,volatile,執行緒池,併發包(如lock等等),太多了,學了你們自然知道,我也不說的太詳細了。推薦看《Java 併發程式設計藝術》+《Java編髮程式設計實戰》。

各種檔案流:file,inputStream,outputStream等等,反正就是各種檔案流,看書時你們自然會看到,不詳細介紹。

虛擬機器:虛擬機器是必須學習的了,重點是GC部分,推薦看《深入理解Java虛擬機器:JVM 高階特性與最佳實踐》,一本就差不多夠了,多看四五遍就行了。

其他:還有很多,如反射,註解,異常等。

2、JavaWeb 入門

學了上面那麼多,啥程式、網站也沒寫出來,有點難受?沒事,這個時候,我們就要開始擼網站了,如果是以 Java 作為開發語言的,那麼 JavaWeb 是必須學的了。這個時候你可以入門學習下這些(注意,不用深入,快速找個視訊入門就可以了)

1、mysql、html+css+js 、 tomcat、xml等。推薦看視訊,自己去搜尋 JavaWeb的視訊,那麼哪裡不會補哪裡,這些知識,幾個小時就可以入門一門的了。

2、servlet+jsp 系列。

不建議直接學習框架,也是應該先學習 servlet,這些底層才是最重要滴。

3、三大框架

Servlet 寫太麻煩了,只有認真學過 servlet 的人才能吹框架的好處,所以先學 servlet 在來學習框架,主要有三大框架:Spring + SpringMVC + Mybatis。

其實 SpringMVC 也是屬於 Spring 吧,MVC 只是一種思想,這裡學習順序是先建議學習 Spring,直接看視訊入門學習就可以了,後面在買書。視訊還是那句話,B 站搜尋。黑馬的講的不錯,我當時也是看黑馬的。

3、中介軟體的學習

必須中介軟體:redis,其他我也沒學過,這學過這一門,Redis 感覺人人都得學啊,推薦書籍《Redis 設計與實現》、《Redis開發與運維》。我先看後者,感覺後者適合入門,然後在看前者的。

由於我這篇文章是給一個大致的學習方向的,我就不說的太詳細了,不然得單獨來一篇《Java學習路線》了。

對於 Java 的學習,我覺得你會了上面這些,我覺得可以去嘗試找實習了,應該也能找的到,大二大三去體驗一波學習還是挺好的。

文章首發於公眾號『帥地玩程式設計』,更多經常文章歡迎搜尋關注,已有150多篇原創,公眾號回覆『電子書』送你一份精選電子書

五、計算機基礎的學習

看過我文章的都知道,我一直強大計算機基礎的重要性,所以這裡必須列舉要學的有哪些。剛才說了選擇一門語言深入,你在深入學習的過程中,肯定也在學習學校開設的專業課,包括:計算機網路 + 作業系統 + 資料庫 + 彙編 + 計算機組成原理 + 編譯原理 等等。

而這些,我認為是非常重要的,對於秋招的同學來說,只要你會這些,就算你是深入學習 Java的,然後你去應聘 C++ 崗,我覺得也問題不大,你和麵試官說我不會 C++ 就可以了,大不了到時候轉崗。我雖然是 Java 技術棧的,但是我面的公司,都不是 Java 技術棧的,例如 小米,Shopee,位元組跳動,騰訊等。但是,這些都問題不大,你只要會這些基礎 + 演算法,而且,在秋招,特別是對於一些大公司,關於語言的,其實問的也不是很多,基礎問的特別多,所以你會基礎,面試會佔很多優勢。下面按照學習的優先順序,給這些課程排個序。

其實給他們排優先順序是不大好的,這樣給他們排,感覺容易被大佬噴,不過沒辦法,對於小白來說,我還是想排以下順序

1、計算機網路 + 作業系統

2、資料庫 + 計算機組成原理(資料庫相應你們可能已經先學過 MySQL 了)

3、彙編 + 編譯原理

不過,如果你們還是在校的大一大二,那麼可以根據你們課程的學習順序來,但是,我建議有時間的可以提前學,不一定要等到學校教了才學,反正大部分老師講的很一般,但時候你學過的話,可以當做複習,或者學其他。

書籍推薦

《計算機網路自頂向下》、《圖解 http》、《深入理解計算機作業系統》、《組合語言》(王爽寫的)。具體要掌握到哪個程度可以看我之前的文章了。

【吐血整理】那些讓你起飛的計算機基礎知識:學什麼,怎麼學?

之前寫過很多文章,所以這裡不寫的太具體了,具體的可以看我之前寫過的文章。

六、總結

我覺得對於大學四年來學,上面這些是最核心的,也是必須學的。但是僅僅是上面這些還是不夠的,上面的這些一兩年就可以學完的。所以你還有很多其他時間,那麼你可以學一些自己感興趣的,多折騰,多豆鼓,而我上面學的,希望你都學。你也可以看我大學學過的一些核心基礎知識:

我的經歷/成長/經驗

前兩年都在折騰,特別是第一年,但是,我始終一直學習那些比較核心的課程。再次強調,這篇文章不是讓你成為大神的,學完也不是多厲害,而是,給處於大學迷茫、不知道學啥的你,一個方向,無論你是否是科班,如標題所說,普普/大眾。不過我相信,當你學完了這些,你應該會有自己的學習方向了。

最後,是希望各位還在校的學生,大一可以好好浪,但也要保持應有的學習時間,之後,就好好學習吧。不管你是名校還是非名校,我覺得你在只要這幾年認真學,進大公司的機率,真的非常大,這絕對不是雞湯。

上面設計到的工具以及書籍,我都提供了,可以在我的公眾號『苦逼的碼農』,回覆『福利』即可獲取。

推薦閱讀

大學四年,小白一路走來,分享一波我是如何學習、提高自己的演算法
大學四年自學走來,這些私藏的實用工具/學習網站我貢獻出來了

最後,給大家推薦一個 github,在這個github,有很多不錯的電子書,並且分類整理了,或許你需要的可以在這裡找到哦。點選前往Github

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章

1、給俺點個讚唄,可以讓更多的人看到這篇文章,順便激勵下我,嘻嘻。

2、老鐵們,關注我的原創微信公眾號「帥地玩程式設計」,專注於寫演算法 + 計算機基礎知識(計算機網路+ 作業系統+資料庫+Linux)。

儲存讓你看完有所收穫,不信你打我。。了。

相關文章