大家好,我是帥地,
前陣子帥地還被我們組的 leader 叫去談話,說是好好學習,快速提升自己,特別是對于計算機的那些基礎知識,也不能丟掉,你們看吧,計算機基礎知識,想不學都不行,
我覺得我校招能夠拿到不少大廠的 offer,其中一個重要的原因就是得益于對計算機基礎 + 演算法的重視了,因為校招面試,基本就問這些,今天帥地就講述下我平時是如何學習的,
不過說實話,對于計算機基礎,帥地在學習的程序中,也沒有運用啥方法論,也沒啥技巧,可能和很多人一樣,就是簡單粗暴著看書,所以這篇文章,我也很難告訴你們學習的騷技巧或者捷徑,所以大家不要有太大的期望,更多的是和大家講一講,我自己是如何學習的計算機基礎知識的,然后供大家一個參考,假如你是學生或者非科班或者計算機基礎很薄弱的作業者,或許可以參考一下,
一、計算機基礎指哪些?
在微信,還是經常有小伙伴問我:你們說的計算機基礎具體是指哪些呢?,這個問題,感覺算起來,已經被問過 10+ 次了,
計算機基礎包括哪些?如果要全部都說的話,其實我也不清楚,這個還得看如何定義計算機基礎,不過,最常見的幾門計算機基礎課,大概就是這幾門了:
1、計算機網路
2、作業系統
3、計算機組成原理
4、匯編語言
5、編譯原理
其中,計算機網路和作業系統,也是面試中被問的最多的兩門課程,如果你沒有太多的時間來學習這些課程,那么可以優先學習計算機網路和作業系統,之后在學習計算機組成原理、匯編語言和編譯原理,當然,如果你還是在校生,那么這些課程都會在大二大三學習到,我希望你能好好學習下,特別是計算機網路和作業系統這兩門課,
二、我是如何學習?
對于如何學習這個事情,我覺得我一句話就能回答完了,因為真的沒啥技巧,我基本就是看書為主,視頻為輔,看這些知識有時候容易困,因為有些真的是挺枯燥,特別是編譯原理和計算機組成原理,又難又枯燥,
一種比較有效的學習方式就是從作業中用到的知識點出發,這樣你可能是帶著疑問去學習的,目的性也比較強,學起來會比較有趣,學完之后也會豁然開朗,
但是,假如你是一個學生,那么是很難從作業中遇到的知識點出發的,或者說,如果你對計算機基礎知識一竅不通,那么就算你又疑問,你也是很難從哪里學起的,
所以,我的建議就是,如果可以,一定要系統學習一下,千萬不要覺得以后作業了,或者等用到了再來學習,一定要從 0 到 1,系統學習起來,所謂系統,就是找一本書,從頭看到尾,就是這么簡單粗暴,
講一講我平時是怎么看這些書的
其實我在看這些書的時候還是非常快的,因為我會以最快的速度看一本書,會先從總體上掌握這門知識,不會去死扣某個知識點,一遍看過去,理解了就行了,但如何你問我細節,我可能都忘了,但是我知識大概是怎么一回事,
一般來說,對于作業系統和計算機網路,我都看了兩遍,第一遍只求理解,心中知道個大概,看的很快,總體上知道作業系統是怎么一回事,網路是如何鏈接起來的,
看完第一遍之后,我會看這本書的目錄,然后看到某個標題,自己思考一下是怎么一回事,例如TCP 是如何保證可靠性傳輸的,我會思考一下該如何保證,然后會打開對應的頁面去看看大佬們都是怎么寫的,因為可靠性傳輸,其實會涉及到很多種方法,第一遍看的,雖然當時理解了,但其實很多也都忘了,這時我會在看一遍,再次為大佬們想出的方法臥槽一遍,
不過,我第二次并不會從頭到尾看,而是根據目錄來看的,第一次看的時候,其實有時候是一遍看一遍犯困的,但是第二次看的時候,會 get 到更多的點,心中不斷著給大佬們點贊,臥槽,我怎么沒想到還能這樣做!
總之就是,先快速且系統著從總體把握這門知識,看的程序中犯困很正常,之后會根據目錄,一遍思考自己的想法一遍看看書上是如何實作的,因為當你什么也沒學的時候,其實你的想法是很少的,但是當你看了很多人的想法之后,你的腦袋也會積累的挺多想法,也就是說,在第二遍看的時候,你一定要思考,
還有一種就是,我第一遍有時候是通過看視頻學習的,把視頻看完之后,在系統從頭到尾看書,我也不會一遍看視頻一邊看書,而是瘋狂著,以最快的速度刷完視頻,
三、無處不在的計算機基礎
我們都說計算機基礎很枯燥,學了也很少用到,但我覺得,正是因為枯燥難學,才有了人與人之間的差距,并且計算機基礎知識也是處處都存在的,例如你學習 redis 的時候,可能會學到快取的淘汰演算法,如果你學習作業系統的記憶體置換,那么你一眼就能看懂了,
例如你可能經常聽說過重量鎖和輕量鎖,重量鎖很消耗性能,如果你沒有學過作業系統的話,可能你并不清楚重量鎖為啥就消耗性能了?內核切換咋就消耗性能了?但是如果你學過作業系統中的行程/執行緒的話,可能就知道重量級鎖和輕量級鎖的本質區別了,
不過在我看來,學習計算機基礎知識最重要的,就是讓我們學到了一些設計思想,這種設計思想,會伴隨我們終生,你在學習的程序中,會學到各種各樣的方法,并且都是你最開始沒有想到的方法,方法積累多了,你就能產生屬于自己的新想法,
說實話,我在學習的程序中,并不覺得很枯燥,相反覺得很有趣,因為我在不停著吸收新知識,吸收前人的精華,例如計算機網路中的流量控制、用賽控制、HTTPS 的加密演算法等等,我特么就沒想到,還能這樣做,要我,肯定無法設計出這么嚴謹的演算法,所以在看的程序中,真的覺得很過癮,
當然,有時候也會犯困,實不相瞞,犯困往往是因為有點難,看了一大堆描述之后,居然忘了剛才看了啥,然后看著看著就困了就不想看了,我也就先跳過了,之后在回過頭來看,
四、簡單說下具體都需要學些什么 + 書籍推薦
對于如何學習,貌似我說了好像和沒說一樣,這也沒辦法,因為確實沒什么學習技巧,我說的先快速把握全域,在根據目錄來深入思考,這是我的方法,適不適合你,其實我也不清楚,下面我簡單說下一些相對重要的知識點,相當于拋磚引玉,看看你掌握了多少
1、計算機網路
計算機網路是作業中用的最多的吧,真的無處不在,最常見就是 HTTP 協議了,這必須學,get 和 post 的本質區別,通過他們報文的定義來區分就好,不需要死記硬背你之前看過的那些面試題,
HTTPS 是如何解決 HTTP 明文問題的的,數字證書解決了什么問題?為啥 HTTP 是一種無狀態協議?啥是無狀態協議?
TCP,UDP 也是必須掌握的了,特別是 TCP,TCP 是如何保證可靠傳輸的呢?啥是擁塞控制和流量控制呢?啥時拆包粘包?這必須掌握,
IP地址主要用來干啥?為啥還需要子網,子網掩碼?世界這么大,IP 這么多,啥是路由尋址?
咋就還有公網IP和私網IP了?NAT轉化解決了啥問題?
DNS除了能進行域名決議,還是解決了啥問題?
…
等等,我說的這些,基本都是重點,你們可以看看自己掌握了多少,
至于視頻多話,我在 B 站看過韓立綱的視頻,地址:https://www.bilibili.com/video/BV17p411f7ZZ?from=search&seid=4498723187261542166
感徑訓不錯,33 個小時,1.x倍播放,其實很快就能看完,之后刷了《圖解 http》和《計算機網路:自頂向下》兩本書,書籍太容易失效了,我就不整理了,你們可以在這個 GitHub 上找到:https://github.com/iamshuaidi/CS-Book
2、作業系統
咋就還有行程和執行緒之分?為什么要有掛起、運行、阻塞等這么多種狀態?怎么就還有悲觀鎖和樂觀鎖,他們的本質區別?
行程咋還會出現死鎖,都有哪些處理策略?行程都有哪些調度演算法?
虛擬記憶體解決了什么問題?為啥每個行程的記憶體地址就是獨立的呢?
為啥 cpu 很快而記憶體很慢?磁盤怎么就更慢了?
聽說中國 mooc 有些課程講的不錯,大家可以去找找勒,我主要是看書的,新手可以先看《程式是怎樣跑起來的》,之后看《現代作業系統》或者《深入理解計算機作業系統》,對于書籍在我那個GitHub上可以找到,
3、匯編
學了匯編,估計你就更加理解地址是怎么一回事了,順序、分之,回圈、函式呼叫、陣列之類的,是如何通過暫存器來實習的?
小小的幾個暫存器,居然還能實作這么多復雜的操作?
如果你能用匯撰寫個紅黑樹的話,那就,呵呵了
書籍的話,我看的是王爽寫的《匯編語言》,
4、計算機組成原理
計算是如何用 0 和 1 表示各種數值的?為啥要有補數?
計算機是如何進行加減乘除的?為啥計算機無法精確表示某些浮點數?
計算機是如何知道記憶體地址的?
計算機組成原理還是有點難度,書籍暫時沒有推薦的,大部分知識,其實《深入理解計算機作業系統》這本書,其實都有包括,
后面的,就不繼續寫了,你們可以來補充勒,
另外,單單掌握了計算機基礎還是不能成為別人眼中的大神,演算法的掌握也是非常非常重要的,特別是對于在校生,校招在演算法基本上必問環節,這里給大家推薦一份 BAT 大佬的刷題筆記

下載鏈接:BAT大佬的刷題筆記太經典
把這份筆記突擊學習一下,很多演算法考察,基本都穩了
另外,再給大家推薦一份某大佬的 leetcode 刷題筆記,匯聚了上千道 leetcode 題解,并且代碼都是 beat 100%:
下載鏈接:leetcode 分類題解(最優解)
五、總結
對于計算機基礎如何學習,如我剛才所說,我一句話就能說完了,但還是硬生生扯出了這么多,這批啊文章居然是講「我是如何學習」的,所以我也不會憑空捏造自己的學習方法,而是真實描述自己的學習方法,可能并不適合每一個人,甚至可能感覺自己看了和沒看一樣,但如果對某些人有用,那么感覺就值了,
因為在寫這篇文章的時候,其實我也沒有把握,真心覺得沒啥學習技巧,更多的還是需要自己去死啃,視頻 + 書籍,死磕一遍,應該就差不多了,之后遇到問題,在去查找對應的文章深入了解,但是,如果你沒學過,比起看文章,我依舊堅持希望你去系統看書學習一遍!
基礎路漫漫,大家加油!
作者簡潔
作者:大家好,我是帥地,從大學、自學一路走來,深知演算法,計算機基礎知識的重要性,公眾號「帥地玩編程」10萬粉絲作者,個人網站:https://www.iamshuaidi.com,專業于寫這些底層知識,提升我們的內功,帥地期待你的關注,和我一起學習,點擊了解我四年大學學習之路 轉載說明:未獲得授權,禁止轉載
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279256.html
標籤:其他
下一篇:聊聊我是如何編程入門的
