我今天查資料時無意發現的,https://github.com/CyC2018/CS-Notes
這個倉庫包含了下列幾個維度的計算機學習資料:
深受國內程序員喜愛,已經有超過3萬多star了。
1. 算法
(1) 劍指 Offer 題解:目錄根據原書第二版進行編排,代碼和原書有所不同,儘量比原書更簡潔。
這裡麵包含了非常多的程序員找工作面試和筆試需要準備的知識點:
1. 前言
2. 實現 Singleton
3. 數組中重複的數字
4. 二維數組中的查找
5. 替換空格
6. 從尾到頭打印鏈表
7. 重建二叉樹
8. 二叉樹的下一個結點
9. 用兩個棧實現隊列
10.1 斐波那契數列
10.2 跳臺階
10.3 矩形覆蓋
10.4 變態跳臺階
11. 旋轉數組的最小數字
12. 矩陣中的路徑
13. 機器人的運動範圍
14. 剪繩子
15. 二進制中 1 的個數
16. 數值的整數次方
17. 打印從 1 到最大的 n 位數
18.1 在 O(1) 時間內刪除鏈表節點
18.2 刪除鏈表中重複的結點
19. 正則表達式匹配
20. 表示數值的字符串
21. 調整數組順序使奇數位於偶數前面
22. 鏈表中倒數第 K 個結點
23. 鏈表中環的入口結點
24. 反轉鏈表
25. 合併兩個排序的鏈表
26. 樹的子結構
27. 二叉樹的鏡像
28 對稱的二叉樹
29. 順時針打印矩陣
30. 包含 min 函數的棧
31. 棧的壓入、彈出序列
32.1 從上往下打印二叉樹
32.2 把二叉樹打印成多行
32.3 按之字形順序打印二叉樹
33. 二叉搜索樹的後序遍歷序列
34. 二叉樹中和為某一值的路徑
35. 複雜鏈表的複製
36. 二叉搜索樹與雙向鏈表
37. 序列化二叉樹
38. 字符串的排列
39. 數組中出現次數超過一半的數字
40. 最小的 K 個數
41.1 數據流中的中位數
41.2 字符流中第一個不重複的字符
42. 連續子數組的最大和
43. 從 1 到 n 整數中 1 出現的次數
44. 數字序列中的某一位數字
45. 把數組排成最小的數
46. 把數字翻譯成字符串
47. 禮物的最大價值
48. 最長不含重複字符的子字符串
49. 醜數
50. 第一個只出現一次的字符位置
51. 數組中的逆序對
52. 兩個鏈表的第一個公共結點
53. 數字在排序數組中出現的次數
54. 二叉查找樹的第 K 個結點
55.1 二叉樹的深度
55.2 平衡二叉樹
56. 數組中只出現一次的數字
57.1 和為 S 的兩個數字
57.2 和為 S 的連續正數序列
58.1 翻轉單詞順序列
58.2 左旋轉字符串
59. 滑動窗口的最大值
60. n 個骰子的點數
61. 撲克牌順子
62. 圓圈中最後剩下的數
63. 股票的最大利潤
64. 求 1+2+3+...+n
65. 不用加減乘除做加法
66. 構建乘積數組
67. 把字符串轉換成整數
68. 樹中兩個節點的最低公共祖先
(2) Leetcode 題解
對題目做了一個大致分類,並對每種題型的解題思路做了總結。
作為要準備踏入碼農行業的人來說,要準備校招,怎麼能不去刷刷LeetCode呢?LeetCode收錄了許多互聯網公司的算法題目,被稱為刷題神器。
這個Github倉庫裡有豐富的LeetCode題目解題思路分析和答案源代碼,題目主要包含下列內容:
算法思想
雙指針
排序
快速選擇
堆排序
桶排序
荷蘭國旗問題
貪心思想
二分查找
分治
搜索
BFS
DFS
Backtracking
動態規劃
斐波那契數列
矩陣路徑
數組區間
分割整數
最長遞增子序列
最長公共子序列
0-1 揹包
股票交易
數學
素數
最大公約數
進制轉換
階乘
字符串加法減法
相遇問題
多數投票問題
其它
數據結構相關
鏈表
樹
遞歸
層次遍歷
前中後序遍歷
BST
Trie
棧和隊列
哈希表
字符串
數組與矩陣
圖
二分圖
拓撲排序
並查集
位運算
(3) 其他常用算法,包括排序、並查集、棧和隊列、紅黑樹、散列表。
一、前言
二、算法分析
數學模型
注意事項
ThreeSum
倍率實驗
三、排序
選擇排序
冒泡排序
插入排序
希爾排序
歸併排序
快速排序
堆排序
小結
四、並查集
Quick Find
Quick Union
加權 Quick Union
路徑壓縮的加權 Quick Union
比較
五、棧和隊列
棧
隊列
六、符號表
初級實現
二叉查找樹
2-3 查找樹
紅黑樹
散列表
小結
七、其它
漢諾塔
哈夫曼編碼
每個超鏈接點進去都有詳細的源代碼:
操作系統的知識點:
一、概述
基本特徵
基本功能
系統調用
大內核和微內核
中斷分類
二、進程管理
進程與線程
進程狀態的切換
進程調度算法
進程同步
經典同步問題
進程通信
三、死鎖
必要條件
處理方法
鴕鳥策略
死鎖檢測與死鎖恢復
死鎖預防
死鎖避免
四、內存管理
虛擬內存
分頁系統地址映射
頁面置換算法
分段
段頁式
分頁與分段的比較
五、設備管理
磁盤結構
磁盤調度算法
六、鏈接
編譯系統
靜態鏈接
目標文件
動態鏈接
請大家進入倉庫後點超鏈接細看:
Linux作為非常重要的一種操作系統,在這個github裡單獨詳細介紹:
一、常用操作以及概念
快捷鍵
求助
關機
PATH
sudo
包管理工具
發行版
VIM 三個模式
GNU
開源協議
二、磁盤
磁盤接口
磁盤的文件名
三、分區
分區表
開機檢測程序
四、文件系統
分區與文件系統
組成
文件讀取
磁盤碎片
block
inode
目錄
日誌
掛載
目錄配置
五、文件
文件屬性
文件與目錄的基本操作
修改權限
文件默認權限
目錄的權限
鏈接
獲取文件內容
指令與文件搜索
六、壓縮與打包
壓縮文件名
壓縮指令
打包
七、Bash
特性
變量操作
指令搜索順序
數據流重定向
八、管道指令
提取指令
排序指令
雙向輸出重定向
字符轉換指令
分區指令
九、正則表達式
grep
printf
awk
十、進程管理
查看進程
進程狀態
SIGCHLD
wait()
waitpid()
孤兒進程
殭屍進程
計算機網絡:
一、概述
網絡的網絡
ISP
主機之間的通信方式
電路交換與分組交換
時延
計算機網絡體系結構
二、物理層
通信方式
帶通調製
三、數據鏈路層
基本問題
信道分類
信道複用技術
CSMA/CD 協議
PPP 協議
MAC 地址
局域網
以太網
交換機
虛擬局域網
四、網絡層
概述
IP 數據報格式
IP 地址編址方式
地址解析協議 ARP
網際控制報文協議 ICMP
虛擬專用網 VPN
網絡地址轉換 NAT
路由器的結構
路由器分組轉發流程
路由選擇協議
五、運輸層
UDP 和 TCP 的特點
UDP 首部格式
TCP 首部格式
TCP 的三次握手
TCP 的四次揮手
TCP 可靠傳輸
TCP 滑動窗口
TCP 流量控制
TCP 擁塞控制
六、應用層
域名系統
文件傳送協議
動態主機配置協議
遠程登錄協議
電子郵件協議
常用端口
Web 頁面請求過程
HTTP協議:
一 、基礎概念
URL
請求和響應報文
二、HTTP 方法
GET
HEAD
POST
PUT
PATCH
DELETE
OPTIONS
CONNECT
TRACE
三、HTTP 狀態碼
1XX 信息
2XX 成功
3XX 重定向
4XX 客戶端錯誤
5XX 服務器錯誤
四、HTTP 首部
通用首部字段
請求首部字段
響應首部字段
實體首部字段
五、具體應用
連接管理
Cookie
緩存
內容協商
內容編碼
範圍請求
分塊傳輸編碼
多部分對象集合
虛擬主機
通信數據轉發
六、HTTPs
加密
認證
完整性保護
HTTPs 的缺點
七、HTTP/2.0
HTTP/1.x 缺陷
二進制分幀層
服務端推送
首部壓縮
八、HTTP/1.1 新特性
九、GET 和 POST 比較
作用
參數
安全
冪等性
可緩存
XMLHttpRequest
面向對象的設計模式
這可是BAT,TMD等互聯網公司面試和筆試重點考核的知識點哦:
一、概述
二、創建型
1. 單例(Singleton)
2. 簡單工廠(Simple Factory)
3. 工廠方法(Factory Method)
4. 抽象工廠(Abstract Factory)
5. 生成器(Builder)
6. 原型模式(Prototype)
三、行為型
1. 責任鏈(Chain Of Responsibility)
2. 命令(Command)
3. 解釋器(Interpreter)
4. 迭代器(Iterator)
5. 中介者(Mediator)
6. 備忘錄(Memento)
7. 觀察者(Observer)
8. 狀態(State)
9. 策略(Strategy)
10. 模板方法(Template Method)
11. 訪問者(Visitor)
12. 空對象(Null)
四、結構型
1. 適配器(Adapter)
2. 橋接(Bridge)
3. 組合(Composite)
4. 裝飾(Decorator)
5. 外觀(Facade)
6. 享元(Flyweight)
7. 代理(Proxy)
數據庫系統原理
應聘後臺工程師的程序員們要多花點時間在數據庫知識點上:
一、事務
概念
ACID
AUTOCOMMIT
二、併發一致性問題
丟失修改
讀髒數據
不可重複讀
幻影讀
三、封鎖
封鎖粒度
封鎖類型
封鎖協議
MySQL 隱式與顯示鎖定
四、隔離級別
未提交讀(READ UNCOMMITTED)
提交讀(READ COMMITTED)
可重複讀(REPEATABLE READ)
可串行化(SERIALIZABLE)
五、多版本併發控制
版本號
隱藏的列
Undo 日誌
實現過程
快照讀與當前讀
六、Next-Key Locks
Record Locks
Gap Locks
Next-Key Locks
七、關係數據庫設計理論
函數依賴
異常
範式
八、ER 圖
實體的三種聯繫
表示出現多次的關係
聯繫的多向性
表示子類
Java基礎
Java 基礎
不會涉及很多基本語法介紹,主要是一些實現原理以及關鍵特性。
Java 容器
源碼分析:ArrayList、Vector、CopyOnWriteArrayList、LinkedList、HashMap、ConcurrentHashMap、LinkedHashMap、WeekHashMap。
Java 併發
線程使用方式、兩種互斥同步方法、線程協作、JUC、線程安全、內存模型、鎖優化。
Java 虛擬機
運行時數據區域、垃圾收集、類加載。
Java I/O
NIO 的原理以及實例。
系統設計
系統設計基礎
性能、伸縮性、擴展性、可用性、安全性
分佈式
分佈式鎖、分佈式事務、CAP、BASE、Paxos、Raft
集群
負載均衡、Session 管理
攻擊技術
XSS、CSRF、SQL 注入、DDoS
緩存
緩存特徵、緩存位置、緩存問題、數據分佈、一致性哈希、LRU、CDN
消息隊列
消息處理模型、使用場景、可靠性
其他工具
工具
Git
一些 Git 的使用和概念。
Docker
Docker 基本原理。
正則表達式
正則表達式基本語法。
構建工具
構建工具的基本概念、主流構建工具介紹。
編碼實踐
重構
參考 重構 改善既有代碼的設計。
代碼可讀性
參考 編寫可讀代碼的藝術。
代碼風格規範
Google 開源項目的代碼風格規範。
最後,這個倉庫的主人叫鄭永川,如果大家從該倉庫受益,記得去他主頁上點個贊。謝謝。
閱讀更多 汪子熙SAP 的文章