建議看看電腦科學速成課,一門很全面的電腦原理入門課程,短短10分鐘可以把大學老師十幾節課講的東西講清楚!整個系列一共41個視頻,B站上有中文字幕版。 每個視頻都是一個特定的主題,例如軟體工程、人工智慧、操作系統等,主題之間都是緊密相連的,比國內很多大學電腦課程強太多! 這門課程通過生動形象的講 ...
建議看看電腦科學速成課,一門很全面的電腦原理入門課程,短短10分鐘可以把大學老師十幾節課講的東西講清楚!整個系列一共41個視頻,B站上有中文字幕版。
每個視頻都是一個特定的主題,例如軟體工程、人工智慧、操作系統等,主題之間都是緊密相連的,比國內很多大學電腦課程強太多!
這門課程通過生動形象的講解方式,向普通人介紹了電腦科學相關的基礎知識,包括電腦的發展史、二進位、指令和程式、數據結構與演算法、人工智慧、電腦視覺、自然語言處理等等。
每節課程短小精悍,只有短短十幾分鐘,適合平時碎片化時間觀看。
課程目錄如下,光看課程大綱都有學習的欲望~
- 早期的計算
- 電子計算
- 布爾邏輯與邏輯電路
- 二進位
- 算術邏輯單元
- 寄存器 & 記憶體
- 中央處理器
- 指令和程式
- 高級 CPU 設計
- 編程史話
- 編程語言
- 編程原理:語句和函數
- 演算法初步
- 數據結構
- 阿蘭·圖靈
- 軟體工程
- 集成電路、摩爾定律
- 操作系統
- 記憶體 & 儲存介質
- 文件系統
- 壓縮
- 命令行界面
- 屏幕 & 2D 圖形顯示
- 圖形用戶界面
- 3D 圖形
- 電腦網路
- 互聯網
- 萬維網
- 網路安全
- 黑客與攻擊
- 加密
- 機器學習與人工智慧
- 電腦視覺
- 自然語言處理
- 機器人
- 電腦中的心理學
- 教育型科技
- 奇點,天網,電腦的未來
課程地址:https://www.bilibili.com/video/av21376839/?vd_source=2b77c4a826e636ae19a4f75a4b2ca146
建議關閉彈幕認真觀看~
在這裡給大家分享一本谷歌大佬撰寫的演算法手冊,整整 300 道 LeetCode 題目,並且都是最優解,非常強!這本手冊幫助不少朋友加入大廠,大家加油!
操作系統
無論學習什麼編程語言,和需要和操作系統打交道。如果對操作系統不熟悉,那麼你在未來的學習路上將會遇到很多障礙,比如線程進程調度、記憶體分配、Java的虛擬機等知識,都會一頭霧水。所以只有把操作系統搞明白了,才能夠更好地學習電腦的其他知識。
視頻教程推薦
Udacity的Advanced OS公開課:https://www.classcentral.com/course/udacity-advanced-operating-systems-1016
還有國內不錯的操作系統的課程,清華大學的公開課:https://www.xuetangx.com/course/THU08091000267/5883104?channel=search_result
由清華大學兩位老師向勇、陳渝講授,同時配有一套完整的實驗,實驗內容是從無到有地建立起一個小卻五臟俱全的操作系統,以主流操作系統為實例,以教學操作系統ucore為實驗環境,講授操作系統的概念、基本原理和實現技術,為學生從事操作系統軟體研究和開發,以及充分利用操作系統功能進行應用軟體研究和開發打下扎實的基礎。
另外推薦另一門MIT操作系統課程:MIT6.268
課程地址:https://pdos.csail.mit.edu/6.828/2018/schedule.html
MIT6.828 是一門非常值得學習的課程,廣受好評。
只要你跟著項目一步一步走,做完 6 個實驗,就能實現一個簡單的操作系統內核。
每個實驗都有對應的知識點,學完理論知識後會有相應的練習,學習體驗非常棒!
建議在開始學習這門課之前先熟悉C和彙編,對電腦組成有一定瞭解。
操作系統主要知識點:
- 操作系統的基礎特征
- 進程與線程的本質區別、以及各自的使用場景
- 進程的幾種狀態
- 進程通信方法的特點以及使用場景
- 進程任務調度演算法的特點以及使用場景
- 死鎖的原因、必要條件、死鎖處理。手寫死鎖代碼、Java是如何解決死鎖的。
- 線程實現的方式
- 記憶體管理的方式
- 虛擬記憶體的作用,分頁系統實現虛擬記憶體原理
- 頁面置換演算法的原理
- 靜態鏈接和動態鏈接
電腦組成原理
電腦組成原理,主要學習電腦的基本組成原理和內部運行機制,並探索硬、軟體之間相互作用的關係,以及如何有效利用硬體提高系統性能。
視頻推薦
電腦組成原理(哈工大劉巨集偉): https://www.bilibili.com/video/BV1WW411Q7PF
劉巨集偉老師主講,他的課不僅適合考研人,也非常適合初學者,初學者也聽得懂。
【麻省理工學院-中文字幕版】電腦組成原理:https://www.bilibili.com/video/BV1kU4y177x9
課程為 MIT 6.004 Computation Structures, Spring 2017,如果英文不錯,可以跟著學學,課程質量很高的。
編譯原理
編譯原理介紹了編譯程式構造的原理與實踐,讓你明白高級語言都是如何被轉換為另外一種語言的。學完編譯原理,可以嘗試自己去實現一個完整的小型面向對象語言編譯程式。
推薦哈工大的編譯原理視頻:https://www.bilibili.com/video/BV1zW411t7YE?p=1&vd_source=2b77c4a826e636ae19a4f75a4b2ca146
比起很多磚頭書和博客,強太多!陳鄞老師的 PPT 做的很好,講得也很通俗易懂,課程評價也很高。推薦!
另外推薦一門課,編譯原理-國防科技大學:https://www.bilibili.com/video/BV12741147J3
課程前置知識:具備電腦程式設計語言和程式設計知識,對數據結構與演算法、電腦原理、離散數學等相關知識有一定瞭解更好。視頻簡潔明瞭,適合多刷幾遍。
數據結構和演算法
為什麼學習數據結構與演算法?對於電腦專業的同學來說,這門課程是必修的,考研基本也是必考科目。對於程式員來說,數據結構與演算法也是面試、筆試必備的非常重要的考察點。
數據結構與演算法是程式員內功體現的重要標準之一,且數據結構也應用在各個方面。數據結構也蘊含一些面向對象的思想,故學好掌握數據結構對邏輯思維處理抽象能力有很大提升。
視頻推薦
UCSanDiego的數據結構與演算法專項課程:https://www.coursera.org/specializations/algorithms
浙大陳越姥姥的數據結構課程:
https://www.bilibili.com/video/BV1H4411N7oD
浙江大學陳越姥姥和何欽銘教授聯合授課,非常經典的課程。姥姥我的偶像!
小甲魚的數據結構和演算法課程:https://www.bilibili.com/video/BV1jW411K7yg
數據結構與演算法主要學習以下內容:
- 基本數據結構(數組、鏈表、棧、隊列等)
- 樹(二叉樹、avl樹、b樹、紅黑樹等)
- 堆結構
- 排序演算法(冒泡排序、選擇排序、插入排序、快速排序、歸併排序、堆排序等及時間空間複雜度)
- 動態規劃、回溯、貪心演算法(多刷刷leetcode)
- 遞歸
- 位運算
學完感覺還很吃力?可以藉助一些刷題網站鞏固下。下麵推薦幾個刷題網站。
在這裡跟大家分享一份2024屆秋招信息彙總表,目前已更新2000家,不僅有互聯網公司,還有外企、國企、各類研究所,不斷更新中,可以對照投遞,避免錯過秋招信息!
牛客網
作為牛客紅名大佬,來給牛客宣傳一波!(牛客打錢!)
牛客網擁有超級豐富的 IT 題庫,題庫+面試+學習+求職+討論,基本涵蓋所有面試筆試題型,堪稱"互聯網求職神器"。在這裡不僅可以刷題,還可以跟其他牛友討論交流,一起成長。牛客上還會各種的內推機會,對於求職的同學也是極其不錯的。
LeetCode
力扣,強推!力扣虐我千百遍,我待力扣如初戀!
從現在開始,每天一道力扣演算法題,堅持幾個月的時間,你會感謝我的(傲嬌臉)
我剛開始刷演算法題的時候,就選擇在力扣上刷。最初刷easy級別題目的時候,都感覺有點吃力,堅持半年之後,遇到中等題目甚至hard級別的題目都不慌了。
不過是熟能生巧罷了。
LintCode
與Leetcode類似的刷題網站。
LeetCode/LintCode的題目量差不多。LeetCode的test case比較完備,並且LeetCode有討論區,看別人的代碼還是比較有意義的。
LintCode的UI、tagging、filter更加靈活,更有優點,大家選擇其中一個進行刷題即可。
電腦網路
電腦網路這門課需要學習電腦網路的概念、原理和體繫結構,知道電腦分層結構,物理層、數據鏈路層、介質訪問子層、網路層、傳輸層和應用層的基本原理和協議,掌握以 TCP/IP 協議族為主的網路協議結構,並且瞭解網路新技術的最新發展。
書籍推薦
《電腦網路自頂向下方法》
這本書是經典的電腦網路教材,採用作者獨創的自頂向下方法來講授電腦網路的原理及其協議,自第1版出版以來已經被數百所大學和學院選作教材。書中從應用層講起,然後展開,擺脫了從物理層開始的枯燥,直接接觸應用實例,更能吸引讀者的興趣。而且,書上很多例子舉的很好,生動形象。
分享一份圖解PDF系列圖書,包括操作系統、網路、電腦組成原理等電腦基礎書籍!強烈建議你收藏起來!
視頻推薦
視頻推薦中科大鄭烇、楊堅全套《電腦網路(自頂向下方法 第7版,James F.Kurose,Keith W.Ross)》課程。這門課是2020年秋科大自動化系本科課程錄製版,可與中科大學生一起完成專業知識的學習。
https://www.bilibili.com/video/BV1JV411t7ow?p=7&vd_source=2b77c4a826e636ae19a4f75a4b2ca146
另外還可以看看哈爾濱工業大學李全龍老師的電腦網路課程:https://www.bilibili.com/video/BV1Up411Z7hC
電腦網路核心知識點:
- 網路分層結構
- TCP/IP
- 三次握手四次揮手
- 滑動視窗、擁塞控制
- HTTP/HTTPS
- 網路安全問題(CSRF、XSS、SQL註入等)
資料庫
互聯網應用大多屬於數據密集型應用,對於真實世界的數據密集型應用而言,除非你準備從基礎組件的輪子造起,不然根本沒那麼多機會去擺弄花哨的數據結構和演算法。
實際生產中,數據表就是數據結構,索引與查詢就是演算法。而應用代碼往往扮演的是膠水的角色,處理IO與業務邏輯,其他大部分工作都是在數據系統之間搬運數據。在最寬泛的意義上,有狀態的地方就有資料庫。它無所不在,網站的背後、應用的內部,單機軟體,區塊鏈里,甚至在離資料庫最遠的Web瀏覽器中。
書籍推薦
- 《MySQL必知必會》
- 《高性能MySQL》
《MySQL必知必會》主要是Mysql的基礎語法,很好理解。後面有了基礎再看《高性能mysql》,這本書主要講解索引、SQL優化、高級特性等,很多Mysql相關面試題出自《高性能MySQL》這本書,值得一看。
視頻推薦
伯克利的 CS168 課程:https://archive.org/details/UCBerkeley_Course_Computer_Science_186
國內中國人民大學王珊老師的《資料庫系統概論》:https://www.bilibili.com/video/BV1pW411W7Do
最後給大家分享200多本電腦經典書籍PDF電子書,包括C語言、C++、Java、Python、前端、資料庫、操作系統、電腦網路、數據結構和演算法、機器學習、編程人生等,感興趣的小伙伴可以自取:
碼字不易,如果覺得對你有幫助,可以點個贊鼓勵一下!
我是 @程式員大彬 ,專註分享互聯網校招、自學CS經驗,歡迎大家關註~