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

我以前裏的文章,寫的大部分都是與計算機基礎知識相關的,這些基礎知識,就像咱們的內功,若是在將來想要走的更遠,這些內功是必需要修煉的。框架變幻無窮,而這些通用的底層知識,倒是幾乎不變的,瞭解了這些知識,能夠幫助咱們更快着學習一門知識,更加懂得計算機的運行機制。固然,在面試中也常常會被問到,特別是對於應屆生,對於春秋招,也能夠看看我前陣子寫過的文章歷經兩個月,個人秋招之路結束了!。也有讀者常常問的計算機基礎知識到底是指啥?學習順序?推薦書籍?程序員

我公衆號的讀者學生以及非科班的應該挺多的,因此我今天這篇文章就寫一寫,我學過的計算機基礎知識,看過的書以及我學過的順序面試

固然,如下是我我的的一些經驗,而且學過的一些知識,僅供參考,也歡迎你們進行補充算法

1、計算機網絡

在咱們用的程序中,99% 都離不開網絡,做爲一個程序員,我以爲了解計算機網絡是必須的,在大學的課程中,通常也都會開設這一門課。sql

在我學習這門課以前,我就特別好奇,一臺電腦是怎麼把消息發給另一臺電腦的呢?例如:數據庫

一、兩臺電腦啥線路也沒有相連,怎麼就能把消息發送給他呢?編程

二、世界上的電腦那麼多,咋就能找到那臺特色的電腦呢?有人說咱們能夠 MAC 或者 IP 來惟一標識啊,但是,我就有點疑惑了,世界那麼大,電腦那麼多,有了這個標識,咱們該怎麼找到他呢?遍歷全部電腦?數組

三、多個程序同時發消息給一臺電腦,電腦是如何準確把這些消息拿給這些不一樣程序的呢?緩存

四、發送的消息丟失了怎麼辦?安全

總之,一大堆疑問,看了計算機網絡以後,才豁然開朗。本身也寫了一篇評價不錯的文章:一文讀懂一臺計算機是如何把數據發送給另外一臺計算機的微信

因此這裏,我是強烈建議你們學一下的,在面試中,計算機網絡也是高頻考點,這裏我大體總結一下一些必學協議以及面試高頻考點:

一、http協議,包括:封裝格式,常見響應碼,不一樣版本的區別,常見請求方法,存在哪些安全隱患,啥是無狀態協議等。

二、https協議:http 是明文傳輸,https 是加密安全的,須要知道 https 是如何加密的、數字證書如何造成,啥的對稱加密、非對稱加密。

三、TCP協議:三次握手、四次揮手、如何保證可靠傳輸、流量控制、擁塞控制。

四、UDP:這個大體瞭解便可,好像內容比較少

五、DNS、ICMP、ARP、DHCP(我就不一個一個寫了)

上面寫的這些協議,我以爲是比較重要的,特別是在面試中。我公衆號文章也寫了好幾篇這些協議的,你們能夠去計算機基礎那個模塊找。

對於新手推薦視頻:能夠看韓老師講的視頻,在嗶哩嗶哩搜索韓老師就能夠找到 韓老師講搞笑《計算機網絡原理》。

推薦書籍:《計算機網絡:自頂向下》、《圖解http》

我是先看了視頻,在看這兩本書的(文末我會給出電子版)。

你們也能夠關注個人微信公衆號:苦逼的碼農,第一時間獲取個人文章以及一些資料

2、操做系統

操做系統也是一門很是重要的知識,在面試中也是問的很是多(固然,看公司,有些公司技術棧是 Java 的,可能問的比較少)。對於操做系統,要學的也挺多,例如:

啥是進程,啥是線程,他們的本質區別?咱們運行一個程序時,數據放在哪裏?代碼放在哪裏?咋就還要分堆和棧?線程切換時是上下文是啥意思?

虛擬地址是什麼鬼東西?線程須要那麼多種狀態幹啥子?什麼是樂觀鎖、悲觀鎖?死鎖是怎麼形成的?解決死鎖的策略有哪些?等等

有人說學操做系統太他媽枯燥了,確實挺枯燥,不過說實話,我仍是學的挺有意思的,感受能夠學到不少種策略,一種比一種好,每次看完都是:我去,咋我就想不到呢。我以爲,對於前期,咱們須要多參考別人的策略,看多了,有了必定的基礎,慢慢造成本身的策略,總之,看這些書,不單要掌握這些知識點,更重要的是一種思惟邏輯的提高

對於操做系統,我總結了下面一些比較核心,面試相對容易被考到的。

一、進程的通訊方式(我寫過一篇很不錯的文章:記一次面試:進程之間究竟有哪些通訊方式? ---- 告別死記硬背

二、進程、線程到底是由什麼組成的?有哪些數據?

三、內存管理,包括:虛擬內存(重點)、分頁、分段、分頁系統地址映射、內存置換算法(重點)。

四、死鎖的處理策略(死鎖預防、死鎖檢測與恢復、死鎖避免)

五、進程調度算法

六、磁盤尋道算法

上面說的這些,我認爲是比較重要的,若是你沒學過,我相信學了以後,你能夠學到不少東西,知識點只是其中之一。

推薦視頻:這個我沒看過視頻,因此想學的,我推薦去中國mooc大學找各大高校的課,也能夠去國外找對應的課。

推薦書籍:我看過的書籍是《操做系統—精髓與設計原理(第八版)》,不過大佬們都推薦《深刻理解計算機操做系統(原書第三版)》,我看過目錄,感受還不錯,這裏也推薦這一本。不過對於零基礎的,我建議能夠先看一本專門給小白看的書:《程序是如何跑起來的》。

操做系統的學習,仍是挺枯燥的,不過,只有把最難的啃過去,才能變的更增強大

數據庫(這裏我用 MySQL)

在大學的課程裏,通常都會開設一門數據庫的課程,不過這門數據庫是沒有針對某一種數據庫語言的(例如 MySQL、Oracle)。不過我這裏只講 MySQL的學習,別問爲何,問就是我逃了二十分之十九的課

把MySQL學好,仍是特別重要的,千萬不能停留在會用的層面上,而是應該要了解一下原理,特別是對於要面試的同窗,會問挺多原理,我每次被問到 MySQL 我都會信心大增,由於我雖然不大好寫 SQL,可是,知道挺多原理,記得騰訊、shopee面試時,面完 MySQL,面試官好像對我另眼相看了。好了,不吹了,說這些也是強大 MySQL 的重要性。下面就說我學過的一些知識以及推薦的學習資料吧。

對於 MySQL,須要學的還挺多的,例如,

一、一條 sql 語句是如何執行的?進行更新時又是怎麼處理的?

二、索引是如何實現的?多種引擎的實現區別?聚族索引,非聚族索引,二級索引,惟一索引、最左匹配原則等等(很是重要)

三、事務相關:例如事務的隔離是如何實現的?事務是如何保證原子性?不一樣的事務看到的數據怎麼就不同了?難道每一個事務都拷貝一份視圖?MVCC 的實現原理(重要)等等。

四、各類鎖相關,例如表鎖,行鎖,間隙鎖,共享鎖,排他鎖。這些鎖的出現主要是用來解決哪些問題?(重要)

五、日誌相關:redolog,binlog,undolog,這些日誌的實現原理,爲了解決怎麼問題?日誌也是很是重要的吧,面試也問的挺多。

六、數據庫的主從備份、如何保證數據不丟失、如何保證高可用等等。

還有一些經常使用命令也要知道。

我以爲,只要你瞭解了以上的原理,那麼對數據庫調優的幫助是很是大的,上面除了第六點,其餘五點,在應屆生的面試中,極其高頻。

推薦書籍:連 sql 都不會寫的,推薦《SQL必知必會》,接着推薦《MySQL技術內幕:InnoDB存儲引擎》。

這裏我必須推薦下極客時間的一個專欄:《MySQL實戰45講》,講的很是好,看完應付面試,我以爲夠了,我每次面試 MySQL 幾乎都加分,離不開這個專欄。如何你想要購買,能夠在個人公衆號回覆**『數據庫』**,我會給你發對應的購買連接(注意,這個可不是廣告哈,你們買不買看本身)

4、數據結構與算法

數據結構與算法,我就不想多說了,看我文章的都知道,我寫的文章 80% 是數據結構與算法相關的,重要性不用說。我秋招最大的優點估計就是數據結構與算法的掌握了。上面三門課程的學習,基本也都是離不開數據結構的,對於如何學習數據結構與算法,我以爲能夠在寫一篇文章了,因此數據結構與算法的學習,我這裏不寫了,能夠關注個人文章,我明天會寫一篇與算法相關的。

論面試,我以爲 操做系統+計算機網絡+數據庫 + 算法 這三個是問的最多的,因此我寫的比較詳細,對於學習計算機基礎,不爲了面試的話,我以爲下面的也及其重要。我分出來講,是爲了那些要急着面試的人,能夠重點學習下上面這四個。

5、彙編

我以爲,如何有時間,學習下彙編是必須的,學習了彙編,可以更好着幫助咱們知道計算機是如何處理程序代碼的,例如寄存器和內存是如何使用的?循環、函數調用、數組是如何實現的?地址是怎麼一回事?等等。

不少二進制代碼是能夠反編譯成彙編的,如何你會彙編,那麼能夠幫助咱們更好着去理解一些東西。因此這裏建議你們學習下彙編,而且要動手寫一些程序。

對於彙編的資料,我可能沒啥好推薦的,本身看的很少。看過兩本書,對於入門的,我建議看 王爽的那本書《彙編語言(第三版)》,不過這本只適合入門,若是想繼續,能夠看《彙編程序設計》。

編譯原理

說實話,編譯原理還挺難,反正我以爲很難,不過有時間我以爲能夠學學,學了這個你能夠知道咱們的編譯器如何分析咱們的代碼的,例如詞法分析,語法分析,語義分析等等。固然,你將來可能會本身寫個特定分析代碼的編譯器也不必定,這個時候,就更加須要學了。

對於學習的資料,我以爲能夠看視頻 + 書。視頻的話中國 mooc 大學搜索便可,書的話,說時候,我也看的很少,只看過學校指定的教材,因此這裏給不了多少建議,本身噹噹自行搜索,哪本熱門賣哪本勒。

總結

暫時先介紹這麼多吧,說實話,學了這些,不僅僅是多學了一門知識,更重要的是能夠提高你的羅輯思惟,給你帶來更多的 idea。在以後個人公衆號裏,我也是主要寫計算機基礎 + 算法。而這些,是值得每個程序員去學習的,不管你是什麼崗位。並且知識知識學了以後,你去學習其餘知識,我相信能夠上手的更快滴。

上面涉及到的書籍,我也去給大家搜索來了電子版的,因爲這些書籍涉及到版權問題,百度雲連接很容易失效,若是你想獲取這些書籍,能夠關注個人公衆號:苦逼的碼農

後臺回覆『計算機基礎』。便可獲取文章會首發於個人公衆號,若是想第一時間看個人文章,也歡迎關注哦。下面是以前寫的一些文章,整理出來供你們閱讀

數據結構與算法

計算機網絡

數據庫與其餘

相關文章
相關標籤/搜索