PS:最近一直反覆地看博客園之前發佈的一條.NET全棧開發工程師的招聘啓事,以爲這是我看過最有創意也最樸實的一個招聘啓事,更爲重要的是它更像是一個技術提綱,可以指引咱們的學習和提高,如今轉載過來與各位園友分享。css
* 喜歡編寫代碼。{
是發自心裏的真愛——真正的愛好。在日復一日年復一年,看似枯燥的編碼工做中,可以享受取之不盡的用代碼進行創做的樂趣。
}
* 樂於解決問題。{
做爲程序員,你有一個永遠沒法迴避的問題——天天要面對各類各樣的問題,而惟一的解決之道就是喜歡上解決問題。不只要喜歡上解決問題後的興奮感受,更要喜歡上解決問題過程當中的煎熬。
}
* 討厭重複代碼。{
將重複代碼看成一種垃圾,本身不亂扔垃圾,也不能容忍別人亂扔垃圾。
}
* 講究代碼命名。{
代碼如詩,命名如詩句。在代碼的創做過程當中,追求命名的優雅,不只讓本身也讓別人讀起代碼來賞心悅目。
}
* 寫過三年代碼。{
編程語言不限。但從事這個職位,須要用C#,由於團隊協做開發要使用統一的工具。
}
* 基礎知識牢靠。{
好比知道三大原理(計算機原理、操做系統原理、編譯原理)兩個協議(TCP與HTTP協議)一種結構(數據結構)。不牢靠的地方,能及時補課,夯實基礎。
}
* 基本功夠紮實。{
好比正則表達式不在話下,Windows/Linux服務器玩得轉,Git輕車熟路。若有基本功不紮實,能積極補練基本功。
}
* 可以面向對象。{
至少熟悉一門面向對象編程語言,有必定的面向對象設計基礎,可以將業務邏輯轉變爲對象之間的交互。
}
* 英語水平不賴。{
可以流暢地閱讀英文技術資料,可以順暢地與國外開發者用英文進行文字交流,可以準確地用英文進行代碼中的命名,可以用英文寫代碼註釋與git提交說明。
}
* 自學能力很強。{
可以根據面臨的實際問題,根據本身的不足,根據本身的興趣,根據將來發展的須要,持續地進行學習。更要能在本身所犯的錯誤中學習。一邊寫代碼,一邊學習;一邊學習,一邊寫代碼,這就是你的程序人生。
}
* 自我驅動開發。{
在咱們這裏沒有產品經理,沒有項目經理,一切由程序員說了算。你要能直接面對用戶,主動挖掘用戶需求,將之變爲本身的想法,而後用漂亮的代碼實現。
}html
縱觀博客園的招聘啓事條目中,基礎知識的牢靠一條中提出了「三大原理、兩個協議和一種結構」,所以我開始補習個人計算機專業基礎知識,下面列出個人補課成果:前端
參考書目:《大話數據結構》、《數據結構(C#語言描述)》、《劍指Offer》git
①線性表部分:程序員
線性表(上){ 數組、ArrayList }面試
線性表(中){ 單鏈表、雙鏈表、LinkedList }正則表達式
線性表(下){ 循環鏈表、約瑟夫問題 }算法
②棧與隊列部分:數據庫
棧 { LIFO、Stack<T> }編程
隊列 { FIFO、Queue<T> }
③樹與二叉樹部分:
樹與二叉樹(上){ 二叉樹的建立與遞歸遍歷 }
樹與二叉樹(中){ 二叉樹的非遞歸遍歷與二叉查找樹 }
樹與二叉樹(下){ 二叉樹的應用:求解四則運算 }
④圖部分:
圖(上){ 圖的基本概念、存儲結構與模擬實現 }
圖(中){ 圖的深度與廣度優先遍歷算法與實現 }
圖(中){ 最小生成樹算法介紹與實現 }
圖(下){ 最短路徑算法介紹與實現 }
⑤查找部分:
查找(上){ 二分查找、二叉查找樹、平衡二叉樹、SortedDictionary<TKey,TValue> }
查找(下){ 哈希表、Hashtable、Dictionary、三種查找表的對比測試 }
⑥排序部分:
排序:{ 插入排序、交換排序、選擇排序、歸併排序 }
⑦劍指Offer算法題部分:
面試題1:{ 實現Singleton模式 } 面試題2:{ 二維數組中的查找 }
面試題3:{ 替換空格 } 面試題4:{ 從尾到頭打印鏈表 }
面試題5:{ 重建二叉樹 } 面試題6:{ 用兩個棧實現隊列 }
面試題7:{ 旋轉數組的最小數字 } 面試題8:{ 斐波那契數列 }
面試題9:{ 二進制中1的個數 } 面試題10:{ 數值的整數次方 }
面試題11:{ 打印1到最大的n位數 } 面試題12:{ 在O(1)時間刪除鏈表 }
面試題13:{ 調整整數數組使得奇數在偶數以前 } 面試題14:{ 鏈表的倒數第k個節點 }
面試題15:{ 反轉鏈表 } 面試題16:{ 合併兩個排序的鏈表 }
面試題17:{ 二叉樹的子結構 } 面試題18:{ 二叉樹的鏡像 }
面試題19:{ 包含Min函數的棧 } 面試題20:{ 棧的壓入、彈出序列 }
面試題21:{ 從上到下打印二叉樹 } 面試題22:{ 二叉搜索樹的後序遍歷序列 }
面試題23:{ 二叉樹中和爲某一值的路徑 } 面試題24:{ 複雜鏈表的複製 }
面試題25:{ 二叉搜索樹與雙向鏈表 } 面試題26:{ 字符串的排列 }
面試題27:{ 最小的k個數 } 面試題28:{ 連續子數組的最大和 }
面試題29:{ 醜數 } 面試題30:{ 第一次只出現一個的字符 }
面試題31:{ 兩個鏈表的第一個公共節點 } 面試題32:{ 數字在排序數組中出現的次數 }
面試題33:{ 二叉樹的深度 } 面試題34:{ 翻轉單詞順序vs左旋轉字符串 }
面試題35:{ 將字符串轉換爲數字 }
① TCP/IP協議
參考書目:《圖解TCP/IP協議》
② HTTP協議
參考書目:《圖解HTTP協議》
① 計算機系統原理
參考書目:《程序是怎樣跑起來的》、《深刻理解計算機系統》
② 操做系統原理
參考書目:《計算機的心智-操做系統之哲學原理》
Part 0.導論
操做系統導論 { 程序的演變過程、操做系統是什麼、操做系統的角色和功能 }
操做系統基本概念 { 硬件基礎知識、抽象、內核態與用戶態、操做系統結構、系統調用 }
Part 1.CPU管理部分:
進程原理(上){ 進程模型、進程的層次結構、進程的狀態、進程的缺陷 }
進程原理(中){ 進程調度的定義、各類調度算法、調度異常之優先級倒掛 }
進程原理(下){ 進程通訊概要、各類通訊方式 }
線程原理(上){ 線程基礎、線程同步 }
線程原理(下){ 死鎖描述、死鎖必要條件、死鎖應對方式、哲學家就餐問題、銀行家算法 }
Part 2.內存管理部分:
內存管理(上){ 內存管理概念、基本內存管理 }
內存管理(中){ 頁式內存管理、頁面置換算法 }
內存管理(下){ 段式內存管理、段頁式內存管理 }
Part 3.外存管理部分:
外存管理(上){ 磁盤定義、磁盤結構、訪問時間、磁盤調度算法 }
外存管理(下){ 文件系統、文件夾、文件系統的調用 }
Part 4.設備管理部分:
設備管理 { I/O基本原理、I/O硬件與軟件、I/O軟件的分層 }
③ 編譯原理
參考書目:《編譯原理(龍書)》
① GitHub : { 基本概念、GitHub使用、Git操做、託管代碼 }
② Linux :
參考書目:《鳥哥的Linux私房菜》
輕輕的一句熟悉面向對象,可以將業務邏輯轉變爲對象之間的交互,是一種大道至簡的描述。至於面向對象,不少人都很熟悉,但卻又不太熟悉。所以,我決定從新認知面向對象,下面列出個人補課成果:
【預備篇】
【建立型】
② 設計模式的征途-02.簡單工廠(Simple Factory)模式
③ 設計模式的征途-03.工廠方法(Factory Method)模式
④ 設計模式的征途-04.抽象工廠(Abstract Factory)模式
【結構型】
【行爲型】
① 設計模式的征途-14.職責鏈(Chain of Responsibility)模式
④ 設計模式的征途-17.模板方法(Template Method)模式
⑩ 設計模式的征途-23.解釋器(Interpreter)模式
⑤ 多線程開發基礎
暫時就先列出這麼多,後期持續更新!
② 本身動手寫一個簡單的ASP.NET MVC框架(第二版)
基礎學習實踐系列:.NET Core微服務基礎實踐系列文章索引
ASP.NET Core框架揭祕學習:一個Mini的ASP.NET Core框架的實現
傳送門:.NET Core on K8S學習實踐系列文章索引
① 《MSSQL技術內幕:T-SQL語言基礎》讀書筆記(上)
② 《MSSQL技術內幕:T-SQL語言基礎》讀書筆記(下)
① 《MSSQL技術內幕:T-SQL查詢》讀書筆記Part 1.邏輯查詢處理知多少
② 《MSSQL技術內幕:T-SQL查詢》讀書筆記Part 2.執行計劃
③ 《MSSQL技術內幕:T-SQL查詢》讀書筆記Part 3.索引的基本知識
② Web前端溫故知新-HTML5基礎
③ Web前端溫故知新-CSS3基礎
① Agile Software Development 敏捷軟件開發基礎知識
① 【理論篇】DDD領域驅動設計理論篇-學習筆記
② 【DDD模式、原理與實踐】領域驅動設計學習之路—DDD的原則、模式與實踐
③ 【DDD模式、原理與實踐】領域驅動設計學習之路—戰略模式:在有界上下文之間通訊
④ 【DDD模式、原理與實踐】領域驅動設計學習之路—戰術模式:建立有效的領域模型
⑤ 【DDD模式、原理與實踐】領域驅動設計學習之路—有效應用程序的設計模式