大多數程序員都習慣了平時在電腦上敲代碼,但也有些情境要求咱們手寫代碼,好比平時學習時作紙質筆記,完成老師佈置的課程做業,同事之間交流討論講解思路,ACM比賽時手寫分析算法,還有最多見的面試手寫算法等。昨天看了康奈爾筆記法,以爲有點意思,因而想着把它應用到程序員的圈子裏來,能夠在面試等場合很好的向面試官闡述算法思路同時規範書寫,但願能給你們帶來一些幫助。程序員
1、什麼是康奈爾筆記法面試
圖1.康奈爾筆記法算法
5R筆記法,又叫作康奈爾筆記法,是用產生這種筆記法的大學校名命名的。這一方法幾乎適用於一切講授或閱讀課,特別是對於聽課筆記,5R筆記法應是最佳首選。這種方法是記與學,思考與運用相結合的有效方法。框架
自從沃爾特·波克博士發明了康奈爾筆記法以來,這一筆記法被普遍應用於聽課、閱讀、複習和記憶材料。使用這一筆記法可讓你的筆記系統化,使你主動融入到知識的創造中去,提升你的學習力,從而幫助你取得學習成果。學習
2、程序員算法手寫本設計思想測試
圖2.程序員算法手寫本設計圖優化
程序員算法手寫本採用了康奈爾筆記法的三大模塊劃分原則,同時結合了程序書寫自己的特性,共分爲如下三個部分:spa
(1)【思路】:理清算法思路,能夠圖文並茂的分析算法,寫出算法實現步驟、邊界條件和測試用例等,爲算法實現奠基基礎,好的思路不只能有效的向他人展現你的思考過程,幫助你清晰地寫出算法,更能有效減小手寫算法代碼難以反覆修改的弊端。(tip:可在「思路」上方留白處簡單寫上算法題目做爲標題。)設計
(2)【算法實現】:根據上一步已經造成的思路,一步步寫出相應的算法實現,行號模擬平時編譯器裏寫代碼的習慣,有助於規範格式和向他人講解算法實現思路,爲算法交流提供便利,爲何設計32行我想大家都會懂,由於程序員對這個數字很敏感,但願你也喜歡。(tip:可在「算法實現」上方寫出對程序的命名,如程序須要幾頁紙共同實現也能夠在這裏標明頁碼。)3d
(3)【總結反思】:分析算法的時間複雜度和空間複雜度,總結所用的方法和能夠進一步優化改進的地方,爲解決follow up問題提供方案,寫完代碼後和麪試官的交流過程均可以在這裏繼續進行分析。
3、如何使用
筆者本身製做成了A4豎開的本子以方便使用,你們在寫代碼時能夠本身在白紙本上畫出這樣的框架來啓迪思路,讓你的手寫算法更規整更具說服力,也能夠和如今很是流行的「方格本」結合使用(《聰明人用方格筆記本》這本書裏詳細講解了它的用法和好處,此處再也不贅述。),同時筆者提供了一個word版的「程序員算法手寫紙」,很方便修改和定製,你們若是須要能夠直接打印使用。東西雖然很簡單,但筆者很用心的思考怎樣才能用紙寫出更優雅的程序,打動你的面試官。
圖3.《程序員算法手寫本》
好了,輪子作好交給大家了,但願大家喜歡,如轉載或用做其餘用途請留言告知^__^。
附:「程序員算法手寫紙word版」百度雲連接:http://pan.baidu.com/s/1pLi1aeZ 密碼:oltr