大家好,我是 CSDN 的頭牌博主二哥呀!
(請把厚顏無恥打在我們的留言區)
二哥的讀者當中有很多大學生,這不有一個大一的小伙伴過來問二哥:“學校課程規劃的比較奇怪,大一上學期學c++,下學期學python,在寒假我是應該復習或預習課內內容(python,c++),還是自己對外拓展呢(c,資料結構)?”
就沖這份愛學習的決心,三年后絕對互聯網公司的 offer 拿到手軟!
講真,小伙伴學校安排的課程和我當年非常相似,也是大一上來就搞 Java,隔壁班上來就搞 C++,完全沒有安排 C語言來過渡下,
所以我給他的建議是,趁寒假打打王者上上分吧!

一、刷清華大學在 GitHub 上的開源課程吧
啊,不!趁寒假刷一波清華在 GitHub 上 20k+ star 的開源課程吧!
https://github.com/PKUanonym/REKCARC-TSC-UHT

我來帶小伙伴們過一下清華的課程安排哈,主要是針對計算機專業的,
大一上的計算機基礎課程有:計算機科學導論、程式設計基礎
大一下有:面向物件程式設計基礎
大二上有:資料結構
大二下有:人工智能導論、計算機圖形學基礎、高性能計算導論
大三上有:計算機組成原理、計算機網路原理、編譯原理、軟體工程、資料庫系統概論、人工神經網路、計算機網路安全技術、人機互動理論與技術
大三下有:作業系統、計算機系統結構、機器學習概論、資料挖掘、搜索引擎技識訓礎、存盤技識訓礎、資料庫專題訓練、計算機網路專題訓練,
大四主要是實踐、實習、畢設等,剩下的計算機課程主要有網路安全工程與實踐、嵌入式系統
可以看得出,大一大二基本上是在摸魚狀態,大三突然開始發力,各種計算機基礎課程,非常瘋狂!
正所謂:
有志者事竟成,破釜沉舟,百二秦關終屬楚;
苦心人天不負,臥薪嘗膽,三千越甲可吞吳!
二、學習 C語言
推薦一本書,兩門視頻課,
書是電子書,書名叫《阮一峰的 C語言入門課》,我第一時間就拜讀了一遍,受益匪淺!可以說目前我見到的最好的 C語言入門教程了,沒有之一!國內的絕大多數高校,大一都會安排 C 語言這門課,阮一峰了老師的這份《C語言入門教程》,絕對是福音,
視頻課是浙江大學翁愷教授的,一門《C語言程式設計入門》,一門《C語言程式設計進階》,
學完這些,大家至少能學會下面這幅思維導圖中列出來的內容,

具體內容可以戳下面這個鏈接:
大一新生應該如何學習C語言,書上代碼看不懂理解不了怎么辦?
三、學習資料結構
什么是資料結構?
資料結構是一種具有一定邏輯關系,在計算機中應用某種存盤結構,并且封裝了相應操作的資料元素集合,它包含三方面的內容,邏輯關系、存盤關系及操作,不同種類的資料結構適合于不同種類的應用,而部分甚至專門用于特定的作業任務,例如,計算機網路依賴于路由表運作,B 樹高度適用于資料庫的封裝,
菜鳥教程上對資料結構的定義我覺得還是蠻正式(官方)的,說人話就是,資料結構就是把一堆資料,按照某種格式揉成一坨,
大家喜歡吃宮保雞丁嗎?
反正我挺喜歡這道菜的,我就以宮保雞丁為例,來講一講資料結構吧,維基百科上是這樣定義的,
宮保雞丁(英語:Kung Pao chicken或Kung-Pao Chicken),又稱宮爆雞丁,呈糊辣荔枝味,源于黔菜、流傳至魯而后成于川菜的一道川味名菜,貴州、山東和四川三地對這道菜的做法不完全一樣,稱呼也有差異,貴州稱為糊辣子雞丁,山東則名為醬爆雞丁,而四川是以宮保雞丁為名的,
來,抽象下宮保雞丁,
struct KungPaoChicken {
雞肉 = []
花生 = []
蔥段 = []
花椒 = []
辣椒 = []
}
這個結構體(struct 是 C 語言中的一個概念)就是一個自定義的資料結構,將很多不同的配料融合在了一起,對于計算機的資料結構來說,只不過是把這些配料換成了基本資料型別,
拿 Java 來舉例,基本的資料型別有 int、char、double 這些,復雜點的有 String(參考資料型別),底層是 char 型的陣列,而那些自定義的型別不過是對基本資料型別和參考型別的封裝,
抽象完宮保雞丁再來抽象一下二哥吧,
class 二哥 {
int age = 18;
double 體重 = 65kg;
void eat(宮保雞丁) {
體重 += 1kg;
}
}
偽代碼不是很嚴謹哈,大家理解這個意思就行了,
說到底,資料結構不過是一種抽象后的封裝,像 Java,它之所以流行的一個很重要的原因,就是它提供了多種多樣的、方便開發者呼叫的資料結構,比如說對陣列的封裝 ArrayList、對鏈表的封裝 LinkedList、對哈希表的封裝 HashMap、ConcurrentHashMap 等等,C 語言就沒有這些,想用的話,就得自己封裝,但 Java 和 C 語言的基本資料型別是一致的,int、float 這些都是相通的,
對于初學者來說,平常敲代碼都是直接去呼叫資料結構的,是很少去想這些資料結構是怎么實作的,
當一個初學者向高級程式員邁進的時候,就必須得靜下心來,去搞清楚 ArrayList 和 LinkedList 的內部實作,搞清楚之后就會明白,之所以它們在增刪改查的時候性能上有差異,就是因為它們的內部使用了不同的資料結構所導致的,
有一說一,我在 2008 年剛學 Java 的那會,真的是不理解,為什么明明有了 ArrayList,Java 還要設計 LinkedList,不都是集合嘛!
害!
資料結構為什么這么重要?
我直接放大招吧,甩一段清華大學計算機系教授鄧俊輝老師話吧,
資料結構是計算機科學的關鍵內容,也是構建高效演算法的必要基礎,其中涉及的知識,在相關專業的課程系統中始終處于核心位置,以 ACM/IEEE
Computing
Curricula(計算機教學大綱)為例,其中對于幾個相關專業(計算機科學、計算機工程、資訊系統、資訊技術、軟體工程)的共同要求中,資料結構與演算法作為程式設計概念與技能的核心,緊隨在數學之后,排在第二位,
資料結構說復雜也不復雜,說簡單也不簡單,這不重要,重要的是必須得學!
有小伙伴可能會問,“我數學學的不好,學資料結構能學會嗎?”
說句實在話,資料結構和數學之間沒有必然的關系,我上小學的時候,參加過洛陽市的奧林匹克數學競賽,還得了三等獎;初中的時候,數學成也一直保持得不錯,但上了高中之后,由于貪玩,數學成績一落千丈,成了瘸腿課,大學的時候對離散數學、微積分這些更是頭大,壓根沒怎么學,
但這并不妨礙我學習資料結構,真的,資料結構中,樹算是最難的一塊了,像陣列、鏈表、堆疊、哈希表這些相對來說,計算機專業的,只要稍微下點功夫,都是能掌握的,
說了這么多,資料結構到底該怎么學呢?
如果你有 C/C++ 的底子,我給推薦兩本書,
第一本,《趣學資料結構》

說到這,多說一嘴,2018 年的時候,人民郵電出版社的張老師邀請我出一本 Java 方面的書,我當時想命名為《趣學 Java》,張老師說,剛好之前和陳小玉老師合作出了一本《趣學演算法》的書,要不發一本你看看吧,
你別說,這本書還挺適合拿來作為演算法的入門書呢,后來,陳小玉老師又出了一本新書,叫《趣學資料結構》,我看了,雖然離“趣”字有點距離,但很適合作為一門資料結構方面的入門書,
第二本,《資料結構(C++語言版)》

對,清華大學鄧俊輝教授編著的,豆瓣評分也蠻高的,這本書還配套了視頻課程,是免費的,可以在學堂在線上看,我之前也有推薦過,

課程質量木得說,算是國家級精品課了,大家有時間的話,一定要刷一遍,
如果你有 Java 的底子,我也給推薦兩本書,
第一本,《資料結構與演算法分析(Java 語言描述)》

雖然翻譯得不怎么樣,但內容很全面,適合拿來作為一本資料結構的入門書,
第二本,《演算法(第 4 版)》

雖然名為演算法,但大家都知道,演算法是基于資料結構的,陣列、佇列、堆疊、堆、二叉樹、哈希表等等,這些資料結構都講到了,
如果時間比較緊的話,C/C++ 程式員只看《資料結構(C++語言版)》就行了,Java 程式員只看《演算法(第 4 版)》就行了,如果一遍沒看懂的話,再看一遍就好了,
有網友“三色院堇子的老公”說得好,
資料結構就是你已經寫了幾百萬行,然后資料結構減到 90 萬行,性能還翻倍,嗯,終于學會了!
四、走心總結
2022 年 1 月份,很有必要開個好頭,
那么趁寒假刷一波清華在 GitHub 上的開源課程,還有 C語言和資料結構,寒假過后,絕壁是卷王中的卷王,
悄悄地告訴大家一聲,很多說放假了一定要打打游戲,一定要放松下,這些人都在悄悄地卷,
所以說,如果你是正在放松的那個,可要小心了!
不要一個寒假就被甩開了差距,
對了,我把內容簡化了一下,做了一個視頻:
計算機專業的學生如何在寒假充電?要不在 GitHub 上清華?
喜歡看視頻的小伙伴不妨去圍觀三連下,彈幕區已經有人在刷:“CSDN 大佬來 B 戰了呀!!!!!!!!!”
看來二哥在 CSDN 還是挺出名的呀!
(夠了夠了,二哥你這個臭不要臉的)
以上,希望能幫助到大家!
我是老學長二哥 @沉默王二 呀,覺得有用的話,不妨點贊關注下,學習路線不迷路~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/404345.html
標籤:java
