這個文章是轉載的,很經典。

http://www.rzrgm.cn/edisonchou/p/4820676.html

PS:最近一直反復地看博客園以前發布的一條.NET全棧開發工程師的招聘啟事,覺得這是我看過最有創意也最樸實的一個招聘啟事,更為重要的是它更像是一個技術提綱,能夠指引我們的學習和提升,現在轉載過來與各位園友分享。

.NET全棧開發工程師

1.職位描述

獨立負責至少一個產品的前后端開發工作
//注0:今年是博客園開發團隊發展的關鍵一年,我們有兩個重要目標——實踐領域驅動設計與實現.NET應用的跨平臺,我們期待有志開發者的加盟!
//注1:不要求立即全棧,但要在一定時間內成長為全棧。
//注2:投遞簡歷時需要談一下:你為什么想加入博客園團隊。
//注3:除了面試,你還需要完成一份代碼作業,我們要看你寫的代碼。漂亮代碼是吸引我們的重要地方。

2.職位要求

喜歡編寫代碼。{
是發自內心的真愛——真正的愛好。在日復一日年復一年,看似枯燥的編碼工作中,能夠享受取之不盡的用代碼進行創作的樂趣。
}

樂于解決問題。{
作為程序員,你有一個永遠無法回避的問題——每天要面對各種各樣的問題,而唯一的解決之道就是喜歡上解決問題。不僅要喜歡上解決問題后的興奮感覺,更要喜歡上解決問題過程中的煎熬。
}

討厭重復代碼。{
將重復代碼當作一種垃圾,自己不亂扔垃圾,也不能容忍別人亂扔垃圾。
}

講究代碼命名。{
代碼如詩,命名如詩句。在代碼的創作過程中,追求命名的優雅,不僅讓自己也讓別人讀起代碼來賞心悅目。


寫過三年代碼。{
編程語言不限。但從事這個職位,需要用C#,因為團隊協作開發要使用統一的工具。


基礎知識牢靠。{
比如知道三大原理(計算機原理、操作系統原理、編譯原理)兩個協議(TCP與HTTP協議)一種結構(數據結構)。不牢靠的地方,能及時補課,夯實基礎。


基本功夠扎實。{
比如正則表達式不在話下,Windows/Linux服務器玩得轉,Git輕車熟路。如有基本功不扎實,能積極補練基本功。


能夠面向對象。{
至少熟悉一門面向對象編程語言,有一定的面向對象設計基礎,能夠將業務邏輯轉變為對象之間的交互。


英語水平不賴。{
能夠流暢地閱讀英文技術資料,能夠順暢地與國外開發者用英文進行文字交流,能夠準確地用英文進行代碼中的命名,能夠用英文寫代碼注釋與git提交說明。


自學能力很強。{
能夠根據面臨的實際問題,根據自己的不足,根據自己的興趣,根據未來發展的需要,持續地進行學習。更要能在自己所犯的錯誤中學習。一邊寫代碼,一邊學習;一邊學習,一邊寫代碼,這就是你的程序人生。


自我驅動開發。{
在我們這里沒有產品經理,沒有項目經理,一切由程序員說了算。你要能直接面對用戶,主動挖掘用戶需求,將之變為自己的想法,然后用漂亮的代碼實現。

扎實的基礎知識之路

  縱觀博客園的招聘啟事條目中,基礎知識的牢靠一條中提出了“三大原理、兩個協議和一種結構”,因此我開始補習我的計算機專業基礎知識,下面列出我的補課成果:

1.一種結構:數據結構

  參考書目:《大話數據結構》、《數據結構(C#語言描述)》、《劍指Offer》

  ①線性表部分:

   線性表(上){ 數組、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:{ 將字符串轉換為數字 }

2.兩個協議:TCP與HTTP協議

  ① TCP/IP協議

  參考書目:《圖解TCP/IP協議》

  { 網絡基礎、TCP/UDP、IP、應用層協議 }

  ② HTTP協議

  參考書目:《圖解HTTP協議》

  { HTTP請求、HTTP報文、Web攻擊技術 }

3.三大原理:計算機原理、操作系統原理與編譯原理

  ① 計算機系統原理

  參考書目:《程序是怎樣跑起來的》、《深入理解計算機系統》

  ② 操作系統原理

  參考書目:《計算機的心智-操作系統之哲學原理》

  Part 0.導論

  操作系統導論 { 程序的演變過程、操作系統是什么、操作系統的角色和功能 }

  操作系統基本概念 { 硬件基礎知識、抽象、內核態與用戶態、操作系統結構、系統調用 }

  Part 1.CPU管理部分:

  進程原理(上){ 進程模型、進程的層次結構、進程的狀態、進程的缺陷 }

  進程原理(中){ 進程調度的定義、各種調度算法、調度異常之優先級倒掛 }

  進程原理(下){ 進程通信概要、各種通信方式 }

  線程原理(上){ 線程基礎、線程同步 }

  線程原理(下){ 死鎖描述、死鎖必要條件、死鎖應對方式、哲學家就餐問題、銀行家算法 }

  Part 2.內存管理部分:

  內存管理(上){ 內存管理概念、基本內存管理 }

  內存管理(中){ 頁式內存管理、頁面置換算法 }

  內存管理(下){ 段式內存管理、段頁式內存管理 }

  Part 3.外存管理部分:

  外存管理(上){ 磁盤定義、磁盤結構、訪問時間、磁盤調度算法 }

  外存管理(下){ 文件系統、文件夾、文件系統的調用 }

  Part 4.設備管理部分:

  設備管理 { I/O基本原理、I/O硬件與軟件、I/O軟件的分層 }

  ③ 編譯原理

  參考書目:《編譯原理(龍書)》

4.基本功:Windows Server/Linux/GitHub/正則表達式

  ① GitHub : { 基本概念、GitHub使用、Git操作、托管代碼 }

  ② Linux :  

  參考書目:《鳥哥的Linux私房菜》

熟練的面向對象之路

  輕輕的一句熟悉面向對象,能夠將業務邏輯轉變為對象之間的交互,是一種大道至簡的描述。至于面向對象,很多人都很熟悉,但卻又不太熟悉。因此,我決定重新認知面向對象,下面列出我的補課成果:

1.面向對象分析之UML

  ① OOAD利器之UML基礎

2.面向對象設計之設計模式

.NET核心原理理解之路

1. .NET核心基礎拾遺  

  ① 類型語法基礎和內存管理基礎

  ② 面向對象的實現和異常的處理基礎

  ③ 字符串、集合與流的基礎

  ④ 委托、事件、反射與特性的基礎

  ⑤ 多線程開發基礎

  ⑥ ADO.NET與數據庫開發基礎

  ⑦ Web Service的開發與應用基礎

2.《CLR via C#》讀書筆記

暫時就先列出這么多,后期持續更新!

.NET后端開發之路

1.ASP.NET MVC

  自己動手寫MVC框架:

  ① 自己動手寫一個簡單的ASP.NET MVC框架(第一版)

  ② 自己動手寫一個簡單的ASP.NET MVC框架(第二版)

2.ASP.NET WebAPI

3.WCF 

數據庫技術學習之路

1.MS SQL Server

  T-SQL語言基礎:

  T-SQL查詢:

2.Oracle

3.MySQL

Web前端開發之路

1.HTML5+CSS3

  ① Web前端溫故知新-CSS基礎

  ② Web前端溫故知新-HTML5基礎

  ③ Web前端溫故知新-CSS3基礎

2.JavaScript

3.Bootstrap

4.AngularJS

  ① AngularJS基礎入門初探

移動端開發之路

1.React Native

2.Cordova/PhoneGap

  ① Hybrid App 移動應用開發初探

3.微信小程序

  ① 微信小程序開發初探

Agile-敏捷軟件開發之路

1.Scrum Guide Scrum指南

  ① Scrum Guide 原版

  ② Scrum Guide 中文版

2.Agile 敏捷軟件開發:原則、模式與實踐

  ① Agile Software Development 敏捷軟件開發基礎知識  

DDD-領域驅動設計之路

TDD-測試驅動開發之路

1.單元測試的藝術

  ① .NET單元測試的藝術:入門

  ② .NET單元測試的藝術:核心技術

  ③ .NET單元測試的藝術:測試代碼

2.測試驅動開發