內容簡介
《編程之美——微軟技術面試心得》收集了約60道算法和程式設計題目,這些題目大部分在近年的筆試,面試中出現過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發,引導讀者發現問題,分析問題,解決問題,尋找更優的解法。
本書的內容分為下面幾個部分:
遊戲之樂:從遊戲和其他有趣問題出發,化繁為簡,分析總結。
數字之魅:編程的過程實際上就是和數字及字元打交道的過程。這一部分收集了一些好玩的對數字進行處理的題目。
結構之法:匯集了常見的對字元串、鍊表、佇列,以及樹等進行操作的題目。
數學之趣:列舉了一些不需要寫具體程式的數學問題,鍛鍊讀者的抽象思維能力。
書中絕大部分題目都提供了詳細的解說。 每道題目後面還有一至兩道擴展問題,供讀者進一步鑽研。
書中還講述了面試的各種小故事,告訴讀者微軟需要什麼樣的技術人才,重視什麼樣的能力,如何甄別人才。回答讀者關於IT業面試,招聘,職業發展的疑問。這本書的很多題目會出現在IT 行業的各種筆試,面試中。但本書更深層的意義在於引導讀者思考,和讀者共享思考之樂,編程之美。
微軟公司全球資深副總裁沈向洋作序推薦!
北京大學計算機科學技術研究所副研究員潘愛民傾力推薦!
團隊介紹
《編程之美》由下面幾位作者協同完成,如果把這本書的寫作比作一個軟體項目,它有下面的各個階段,每個階段則有不同的目標和角色。
1. 構想階段:鄒欣。
2. 計畫階段:鄒欣、劉鐵鋒、莫瑜。
3. 實現階段/里程碑(一):上述全部人員,加上李東、張曉、陳遠、高霖(負責封面設計)。
4. 實現階段/里程碑(二):上述全部人員,加上樑舉、胡睿。
5. 穩定階段:上述全部人員,加上博文視點的編輯們。
6. 發布階段:鄒欣、劉鐵鋒和博文視點的編輯們。
讀者評論
(1)的確是好書,不同於算法導論和程式設計藝術之類的書(比較抽象),結合很多比較現實易於形象化的題目,大開眼界。每天做兩道題目,感覺挺有收穫的。
——互動網讀者superzxt
(2)這本書對於學生求職還是很有幫助的,通過做題可以先感受一下筆試面試氣氛,拓寬自己的解題思路,從而有助於找到一份不錯的工作。強烈推薦大家對每一道題目都好好揣摩揣摩,必能受益良多。
——互動網讀者cx_flying
(3)這本書表面上是講解算法,實際上體現了一種面對困難、解決問題的心態……個人還是挺喜歡這類書的,把編程人性化了……
——互動網讀者拓荒者
(4)……這本書更大的作用在於——給你一個有趣的題目,讓你自己去思考,思考出來後再對照它給出的解法,看看你是否做對了。在這個過程中,你學會了作為一個程式設計師最重要的東西——獨立思考的能力,而不是碰到問題就在網上到處找代碼片段,盲目拷貝已有的解決方案。
——互動網讀者CoolJie2001
(5)買這本書是因為看到這本書名字的前四個字,而非後面幾個字。看著書的封面,樸素簡單的設計,處處透出清新之美。
隨著軟體產業的迅速發展,各種高級程式語言鋪天蓋地席捲而來,軟體開發變得單調而枯燥,而編程本身的樂趣如今卻很難在身邊找到。這本書正是迎合了我的想法,編程本身應該非常有樂趣,通過巧妙的思考,尋求解決問題的方法。《編程之美》放在案前,每有倦意,品杯香茶,翻開幾頁,感受久違的古色古香,沉浸在美妙的思考中,別有一翻滋味~~
——噹噹網讀者nuaapjy
(6)之前對算法的印象是晦澀難懂,每每總是望而卻步,提不起來興趣去研究算法,讀了《編程之美》中的幾個算法,有一種豁然開朗的感覺,原來算法也可以講的這么生動有趣,這么吸引人。《編程之美》中的算法以實例開題,循序漸進的解決問題,一步步去剖析算法的本質,挖掘和發散算法功效,進而去淋漓盡致的體現算法的美妙!
——噹噹網讀者蘿蔔蘿蔔閃金光
(7)一本編程的課外讀物,引發編程興趣的好書。
——噹噹網讀者tiangu0120
(8)此書重要的是開拓思路,有一定基礎的朋友看了這個,就會有一種意猶未盡的感覺,“原來還可以這么玩啊”的想法。
——卓越網讀者yc_andy1009
(9)剛剛讀完這本書,感覺不錯,啟發很大,這是我繼讀完《算法導論》以來發現比較好的一本書,推薦對算法以及對大公司的面試題有興趣的人去看看。
——卓越網讀者lironghua
(10)算法是電腦程式設計的靈魂,是每個計算機專業的學生和從業人員必須具備的基本素質之一。微軟把一些看似簡單,實則蘊含深刻內涵的算法題目作為面試的重要內容,是經過深思熟慮了的。
——網友Sswv
(11)《編程之美》中這些謎題考察、鍛鍊的是紮實、嚴密和具有創造性的思考能力,面對問題有條不紊的分析能力,和不斷深入、刨根問底的精神。毫無疑問,這些素質,都是軟體工程師身上最寶貴的東西。
——《程式設計師》雜誌技術主編孟岩
(12)隨著軟體產業的迅速發展,各種高級程式語言鋪天蓋地席捲而來,軟體開發變得單調而枯燥,而編程本身的樂趣如今卻很難在身邊找到。《編程之美》正是迎合了我的想法,編程本身應該非常有樂趣,通過巧妙的思考,尋求解決問題的方法。
——噹噹網讀者nuaapjy
(13)我招人的時候找了《編程之美》上面的題目作參考,效果還不錯。裡面描述的算法很有意思。
——噹噹網讀者beikerray119
(14)工程師的驕傲,在於創造。編程的樂趣也在於探索。當我們不僅愛玩電腦,會玩電腦,也嘗試著用電腦去解決實際的問題並獲得成功的時候,那種自我肯定的快樂是一般途徑所體會不到的。
何為編程之美?巧妙的思路,簡明的算法,嚴謹的數學分析——這些綜合起來就是編程之美。
——網友Ultra
目錄
第1章遊戲之樂——遊戲中碰到的題目 1
1.1讓CPU占用率曲線聽你指揮 3
1.2中國象棋將帥問題 13
1.3一摞烙餅的排序 20
1.4買書問題 30
1.5快速找出故障機器 35
1.6飲料供貨 40
1.7光影切割問題 45
1.8小飛的電梯調度算法50
1.9高效率地安排見面會 54
1.10雙執行緒高效下載 59
1.11NIM(1)一排石頭的遊戲64
1.12NIM(2)“拈”遊戲分析 67
1.13NIM(3)兩堆石頭的遊戲 72
1.14連連看遊戲設計 86
1.15構造數獨 91
1.1624點遊戲 99
1.17俄羅斯方塊遊戲 108
1.18挖雷遊戲 116
第2章數字之魅——數字中的技巧 117
2.1求二進制數中1的個數 119
2.2不要被階乘嚇倒 125
2.3尋找發帖“水王” 129
2.41的數目 132
2.5尋找最大的K個數 139
2.6精確表達浮點數 147
2.7最大公約數問題 150
2.8找符合條件的整數 155
2.9斐波那契(Fibonacci)數列 160
2.10尋找數組中的最大值和最小值 166
2.11尋找最近點對 171
2.12快速尋找滿足條件的兩個數 178
2.13子數組的最大乘積 182
2.14求數組的子數組之和的最大值 185
2.15子數組之和的最大值(二維) 192
2.16求數組中最長遞增子序列 198
2.17數組循環移位 204
2.18數組分割 207
2.19區間重合判斷 211
2.20程式理解和時間分析 215
2.21隻考加法的面試題 217
第3章結構之法——字元串及鍊表的探索 219
3.1字元串移位包含的問題 221
3.2電話號碼對應英語單詞 224
3.3計算字元串的相似度 230
3.4從無頭單鍊表中刪除節點 234
3.5最短摘要的生成 237
3.6編程判斷兩個鍊表是否相交 241
3.7佇列中取最大值操作問題 244
3.8求二叉樹中節點的最大距離 250
3.9重建二叉樹 256
3.10分層遍歷二叉樹 262
3.11程式改錯 268
第4章數學之趣——數學遊戲的樂趣 273
4.1金剛坐飛機問題 275
4.2瓷磚覆蓋地板 279
4.3買票找零 282
4.4點是否在三角形內 286
4.5磁帶檔案存放最佳化 291
4.6桶中取黑白球 294
4.7螞蟻爬桿 299
4.8三角形測試用例 303
4.9數獨知多少 307
4.10數字啞謎和回文 315
4.11挖雷遊戲的機率 322