1. 程式人生 > >秋招結束了,普普通通,我的三年大學

秋招結束了,普普通通,我的三年大學

前陣子有些讀者問我大學期間的學習路線,說他自己現在有點迷茫。說實話,對於學習路線這種文章,一抓一大堆,我也不大喜歡去建議別人究竟該怎麼學習,學習順序之類的。不過對於大學,很多人進入大學的時候,可能都是同一個起點,大學四年過後,卻是完全不同的人生軌跡。正好我也想記錄下自己從高中進入大學這幾年的學習與變化,我的大學經歷,可以說是非常普通,沒有參加任何競賽,也沒拿過獎學金(當然,國家助學金得拿,哈哈)。也正是因為普普通通,我才要分享,因為我相信你們都看過很多充滿各種牛逼的大學經歷。

所以這篇文章,就以時間的順序,記錄下這幾年的學習、想法、看過的書等,或許,普通的大學經歷,更加有參考性也不一定哦,嘻嘻。

一、非計算機專業的大一

在我高考分數下來的時候,看了下分數。我去,比預想中了至少少了幾十分,真心想不通我的數學和英語為啥能考這麼差,平時數學、物理是我的強項,算是經常全班第一,不過高考數學得比預想中的少了幾十分,處於及格邊緣,而且,英語也並預想的少了二十多分,當時還是很鬱悶的,高考這麼重要的場合,居然考這麼低。

不過說實話,當時我並不傷心,因為我覺得,學校雖然挺重要,但也沒有那麼重要,我相信自己要乾的事,在哪個學校都能幹,而且在我看來,技術與成績,只是大學的一部分而已,雖然是比較重要的一部分。當然,能上個牛逼一點的學校當然比較好了,至少還能裝個逼,哈哈。

當時我是想讀計算機類專業的,不過以我的分數,如果選擇省內一本學校的話,我會讀不上計算機專業,只有被調劑的份(當時沒有考慮省外)。不過我是一定要讀計算機專業的,並且也想盡量進個一本的學校(不是說看不起其他批次學校哈),當時我就查哪些學校轉專業比較容易,所以後來我是報讀了一個容易轉專業的學校,也就是選擇被調劑,之後在轉專業到自己相對喜歡的專業。當然,這裡存在轉專業失敗的風險。

後來我是被調劑到木材科學與工程這個專業,也算是意料之中,在開學的前幾天,我看過一本對我影響挺大的書,叫做《李開復自傳》,書裡面有一句話一直影響著我,大致的意思就是『當你把大學所學的知識全部忘光時,剩下的,便是教育的本質』,說實話,我還是很喜歡這句話的,當時我解讀為,在大學,提升自己的思維、學習能力才是最核心的。所以在之後的學習中,我都是比較在意自己的學習能力的,對於一件事情,我也會去認真做好,因為我覺得,認真去做一件事情,非常重要,它可以間接著去提高你的學習能力,儘管這件事情可能和你所學的專業沒有任何關係。

在木材科學與工程裡,有一門科目,就做《工程製圖》,我去,我真的是被這門課給折磨了,畫各種圖。例如根據一張螺絲的圖片,畫出它是三檢視,這種東西對我來說,太難了。後來我就想,我認真去學習下我就不信我會搞不定,後來事實證明,人真的是各有所長,對於製圖,我真的不行,雖然認真學能搞懂,但是花是時間多,並且效果也不大好。從那時起我就覺得,雖然學習能力是通用的,但是,有些技能,你還真的不大適合,因為興趣、以往的技能積累影響著你對這門技能的擅長程度。選擇自己比較擅長的技能去學習,還真的挺重要,從而也更加堅定了我要轉專業的想法。

大學第一學期的國慶,我開始自學 c 語言,主要是看書。當時自己跟著書本打 demo,感覺挺有意思,好像七天時間,我學到了結構體部分,感覺自己還學的挺快的,當時可以說是不求甚解(就是感覺自己稍微理解了就接著下一章),接著學指標,我去,難度頓時加大,感覺遇到了瓶頸,之後就隨便看了下沒繼續看了。

稍微學了點 C 語言之後,就像寫個稍微好玩一點的程式,然後並不知道 C 語言能幹什麼,書上也沒有啥有趣程式的案例。後來我就去水百度貼吧,發現有好多人發了遊戲程式,不過好多有些設計到其他知識,我也不懂。最後找到了個貪吃蛇的程式,這應該是我見過最簡單的貪吃蛇了,只有黑色的介面以及把一個方塊自己當做蛇頭,不過我當時還是挺感興趣的,就跟著原始碼打程式,之後在自己理解了原來遊戲是這樣弄的,畫面的動態效果是這樣搞出來的,把程式執行起來之後,稍微添加了一些自己的東西。

講這個貪吃蛇的故事我是想說,興趣和喜歡探索我覺得是非常重要的,當時在沒有任何人教的情況下,自己去折騰,去搜索,最後寫了個簡單的貪吃蛇,我還是非常開心的。這個過程之中,也對我學習能力的提升很重要,在一個自己完全陌生的環境中,如何快速去適應,願意折騰很重要,但是,懂得利用搜索引擎,也非常非常重要。很多人經常問我一些搜尋引擎就能解決的問題,說實話,我是懶的回答的。有些人讓我幫他解決下 bug,我笑笑不說話,不是我不幫你,是我幫不了你,也不大願意幫你,bug 這種東西,你是自己搞出來的,你自己才是解決的最佳人選,解決的過程中,你真的能學習到好多東西,而且這些東西,是潛意識的,看不見的。

二、入坑資料結構與演算法

在大一的寒假,瞭解到轉專業考試是在 3 月份,我也在寒假趕緊重新學習指標,並且也學習了連結串列,說實話,對於當時的我來說,連結串列太他媽難了,真的被折騰了好久,因為當時並不大懂記憶體地址之類的,直到參加考試,也是對連結串列似懂非懂。說實話,如果你學習了好幾天都搞不懂連結串列,別懷疑自己的智商,對於初學者來說,真的挺難,特別是對於我這個 C 語言只自學了大致十幾天的非科班。

這裡多說一些建議,對於沒學過 C 語言的,如果有時間,我還是挺建議大家學習下 C 語言的,特別是指標那部分,也很歡迎大家把 C 語言中作為入門語言,我覺得,學習了 C 語言,以後學習別的語言,可以幫你理解的更深刻,而且也可以很快就入手其他語言,例如 Java 中的引用啥的,這不就是地址嗎。反正,我覺得 C 語言如果有時間,是必須語言。當然,只是我個人的看法。

後來轉專業通過了,巨開心,終於可以肆無忌憚著學習程式設計了。當時是真的對學習充滿興趣(這句話意味著後面學習不上心)。大一第二學習,學校開了一門資料結構與演算法的課。這門課我覺得算是比較難的一門課了,相信很多人也都是被這門課折磨過。

但是,我想說的是,這門課,也就連結串列難,如果你學會了連結串列,後面我覺得一點也不難,由於我自己折騰過連結串列,所以我很快就上手這門課了。我也沒有看學校的教材,學校的教材是清華大學初版的嚴蔚敏的書,說時候,這本書個人感覺真的不適合初學者,反正我看不下去,可能是我比較菜吧,當時自己另外賣了本《資料結構與演算法分析—C語言描述版》。說實話,這本書我很喜歡,感覺看著特別舒服,如何你要學習資料結構與演算法,那麼可以選這本,有 C 語言版,也有 Java 版,不過如果可以,我建議大家用 C 語言來實現那些資料結構。

在資料結構與演算法書裡,對連結串列的講解比較詳細,加上我之前看過一些連結串列的文章,所以很快就理解了連結串列,也跟著書上一點點去實現連結串列的基本操作(增刪查改),這裡我必須說下,千萬別自己理解了就不動手寫程式碼,一定要動手寫,因為寫的過程,你一定會遇到很多 Bug,通過解決這些 bug,你會對連結串列理解的更加深刻。

對於資料結構的學習,我基本是沒聽課的,因為我覺得老師講的不適合我,當時老師連結串列還沒講完的時候,我自己已經學到了圖那部分了。反正那本書涉及到的演算法,我基本都學了,也都實現了,大致有:連結串列、佇列、棧,二叉樹、圖,圖學的比較久點,感覺設計的演算法比較多,如深度遍歷,廣度遍歷,最小生成樹,拓撲排序,最短路徑,我覺得,這幾個圖演算法都很實用,也很重要,不懂的建議大家學。

三、選擇不玩 ACM

沒進入計算機專業之前,我還是非常想進學校的集訓隊的,感覺 acm 很牛逼,自己也經常去學校的 OJ 刷題,買了本演算法入門的書籍《演算法設計與分析基礎》,這本書我覺得非常適合入門,用虛擬碼實現的,很簡單,我好像一個星期就看完了。後面也買了本《挑戰程式設計大賽》的演算法書,我去,當時感覺這本書講的挺不錯,這本書主要是刷題,學的不亦樂乎。雖然學的不亦樂乎,不過我感覺那些競賽的題太他媽難了,一道題有時搞了一天才懂,少則幾個小時,並且還是看著答案來理解的。當時還是刷了挺多題的,不過當時感覺要是自己去打 acm 的話,憑藉著我這種程度,感覺拿不了啥大獎,也感覺自己確實對這些競賽題並不怎麼敏感,不能一眼就看出解法,而且一道題幾個小時,自己實在搞不來,所以我也就放棄了參加學校 acm 的打算了。

不過那幾個月對演算法的學習,也為了打下了不錯的基礎。後面我也自己想做點東西,不過 C 語言寫的介面黑乎乎的,不大喜歡。所以後面學了些 HTML,這種即學即可以看出成果的技能,感覺學的比較有趣,學了幾天,把大致的知識點學完,後面發現單單 HTML 不行,還得學下 JavaScript。然後花了十幾天學了 JS,然後就沒有然後,因為我移情別戀了。

不過這讓我懂得了一些前端知識,說時候,我覺得就算你以後不學前端,那麼也要應該懂點前端的知識,這是必須的,就算是做後端,也是經常需要用到前端的知識的。

四、瞎搞的暑假

1、windwos 程式設計

大一結束後的暑假,我挺想寫個遊戲,可是 C 語言又沒有介面,怎麼辦?後面我發現 windows 程式設計可以畫介面,畫圖之類的,也是用 C 語言實現的,所以當時我就看小甲魚的視訊學習 windows 程式設計,自己也順便買了本《windows程式設計》的書,那本書 900 頁,呵呵。我覺得 windows 程式設計還是挺難的,各種控制代碼啥的,大概學了差不多一個月,900 也大概看了 600頁,各種鍵盤事件,滑鼠事件,反正好多好多。後面靠著這些知識,寫了個計算器,我去,當時還是很開心,還告訴我姐,讓他試試這個計算器。然後就沒有然後了,我又移情別戀了,哈哈。

不過 windows 程式設計的折騰,也讓我學到了很多,例如知道了我們平時滑鼠移動是怎麼回事,知道了我們文字編輯器的底層是如何實現的,感覺知道了很多相對底層的東西,也讓自己的學習能力更強了。

2、安卓的學習

因為 windows 程式設計寫出來的程式,在手機不能執行,根據沒人用我的程式,所以我轉行學 Android,不過 Android 聽說用 Java 實現的,所以我入門了 Java,好像是看了幾天的視訊入門的,只學了點皮毛就去寫 Android了,買了本書,也是學的不亦樂乎,大概折騰了二十幾天,跟著書本寫了個天氣預報,學習的過程中,由於自己太多的不懂了,遇到了很多 Bug,也是好幾次把自己搞奔潰。後面還寫了個《快樂學數字》的 app 發到應用寶上,當然,這些程式是跟著書本寫的,哈哈。而且還幾十個人下載了,當時也是挺開心。然後又沒有然後了,我又移情別戀了,,,,

五、步入正軌

說實話,大一真的折騰了很多東西,那時候學什麼都充滿幹勁,雖然學的很多知識都是後面用不上的,但我覺得很值,因為我覺得,大一大二這段時間,千萬別問別人幹學啥學啥,如果你有感興趣的,就去折騰,全心全力的折騰,真的能學到很多東西,而這些東西,遠遠不是那些具體的知識點,更多的是,你的學習能力,折騰能力,邏輯思維。

到了大二,關注了『碼農翻身』這個公眾號,自己通過這個公眾號,理解了挺多知識點,這個時候的瞭解,更多的是一種『廣度』的瞭解。大家感興趣的話,也可以去買《碼農翻身》這本書,可以先看下目錄再買,主要是用故事講解技術。

在大二主要學習了《離散數學》,這本書可以讓我們學到聽說演算法與資料結構的知識的,後面學了《Java程式設計思想》,不過我覺得這本書對新手不友好,看不懂,期間看了 尚學堂Java300集,感覺講的很好,嗶哩嗶哩可以搜尋到。看了這個視訊之後,我感覺自己的 Java 很牛逼了,懂了很多東西。接著再來看《Java程式設計思想》,我去,感覺這本書講的太好了,推薦學習Java的看。反正從這個時候開始,我就決定學習 Java 體系了。

六、開始有目標著學習

對於 Java,我就覺得看了 尚學堂 300 集 + 《Java 程式設計思想》感覺自己掌握的差不多了,後面聽說學習 Java 進階得看虛擬機器,於是就買了本《深入理解Java虛擬機器》這本書看。之後感覺自己的Java挺強了,不過上面這些,對多執行緒的知識講的不多,關於Java的多執行緒,這裡推薦《Java併發程式設計藝術》和《Java併發實戰》,感覺講的不錯。我也就看了上面這些書而已,當然,零零散散看了挺多其他書的,這裡不列舉,因為我覺得上面這些,差不多夠了。

不過,語言只是一門工具,我覺得我們需要選擇一門語言,並且深入學習它,這裡我選擇了 Java,不過這還不夠,瞭解到大廠面試,非常看重計算機基礎,於是自己學習了計算機網路,當時在嗶哩嗶哩看韓老師的《計算機網路原理》這個視訊,感覺講的很好,之後跟著學校的課程學習了作業系統,看的是《作業系統:精髓與設計原理》,也學了《計算機組成原理》。如果你想學習計算機基礎,我覺得這兩門課都要學下,這裡我推薦看《深入理解計算機作業系統》,這本看感覺把這兩門課都差不多綜合在一起。

不過這些知識學了後由於很少用,容易忘記,不過我覺得這並不重要,因為學習的過程中,你會學到很多設計、演算法思想等。到了大三,學校開了門計算機網路的課程,所以我再次學習了計算機網路,當時看的是《計算機網路:自頂向下》這本書,我覺得講的很好,並沒有看學校的教材。當然,期間也學習了資料庫等知識,這些課程的掌握、推薦書籍等,我不說了,可以看我之前的文章【吐血整理】那些讓你起飛的計算機基礎知識:學什麼,怎麼學?

由於自己寫的有點長,字數有點多了,所以接下來可能就寫的簡潔點了,好像有點有頭沒尾?哈哈

七、微信公眾號的開通

在大三這一年,我開通了自己的公眾號,並且也開始寫文章,說實話,我開通公眾號的目的有三個:

1、掙錢

2、通過技術部落格給面試加分

3、訓練自己的軟能力

事實證明,公眾號給我帶來了很多收穫,認識了很多人,也掙了些錢。不過說實話,弄公眾號,真的花了我很多時間,寫一篇文章需要幾個小時,還要排版等各種,我覺得我要是不弄公眾號,現在學習的東西,肯定多很多,技術肯定牛逼很多。在弄公眾號的這一年裡,雖然少學了很多東西,不過我並不後悔,因為我說了,技術和成績只是大學的一部分,玩公眾號,我也學了很多其他的東西,例如運營,也接觸了這幾年興起的所謂的知識付費,很多人也考這個掙了不少錢。

並且通過公眾號,我也實現了經濟獨立,再也不用向爸媽要錢了,當時真的挺開心,後來依靠自己的努力買了屬於自己的一加 6T,Mac 筆記本,還給爸媽寄了幾次錢。玩公眾號到現在一年3個月,大概掙了七八萬吧,雖然這些錢不值一提,不過對於還沒畢業的我來說,真的很開心。雖然在公眾號花了不少時間,不過秋招還是憑藉著自己紮實的基礎找到了想去的大廠。並且靠著公眾號,在沒畢業前,實現了月入過萬。對於公眾號這方面的折騰,我覺得我可以再寫一篇長文了,大家感興趣的話,之後可以寫一篇關於公眾號的歷程。

大家千萬別看到公眾號這麼好掙錢就去玩公眾號哈,很多東西看著容易,弄起來還是很不容易的,有多少人是寫著寫著就放棄的,我當時也中途放過,只能說,公眾號還是給我帶來了很多收穫的,而不止是期間掙到了錢。

八、爛尾

感覺這篇文章要爛尾了,哈哈。核心寫了自己的大一大二的折騰,一不小心就寫了六千多字了,關於步入正軌的學習介紹的很少,主要是因為步入正軌之後,感覺沒啥好說的,主要就是那些計算機基礎知識的學習,如果要詳細寫的話,感覺要分三篇文章寫,所以我選擇了爛尾。後面再寫吧,估計這篇近 7000 字的文章寫了三四個小時,不知道有多少人是看完的,所以還是不寫那麼長了,不然就沒人看了,嘻嘻。大學這三年,總結下來就是 大一的折騰與探索,大二基礎知識的積累,大三公眾號的運營以及秋招面試的準備。

當然,上面說的只是技術方面的學習與折騰點,還有很多人生的感悟沒寫,後面再來寫了,雖然你們可能並不感興趣。好吧,不知道有多少人是看到這裡的,看到這裡的絕對是真愛。

九、最後的最後

雖然自己的大學普普通通,平平凡凡,但自己還算滿意,至少有了自己的公眾號,沒事可以來扯扯淡,找到看自己想去的公司,哦,大學忘了談個戀愛,大一和初戀分手之後,就佛系沒繼續找女朋友。現在的目標是,好好學習 sql + Linux + go,好好寫技術文章,好好為未來的工作做好準備,好好掙錢!如果你喜歡我寫的文章,或者和我的經歷似曾相識,歡迎大家關注我的微信公眾號『苦逼的碼農』

每天都會分享資料結構+演算法+計算機網路+作業系統+MySQL+Linux的文章哦,不過主打資料結構與演算法的文章。