微軟亞洲研究院技術(shù)創(chuàng)新組研發(fā)主管鄒欣老師帶領(lǐng)其他幾位同事和實(shí)習(xí)生經(jīng)過9個(gè)月的時(shí)間完成了這本書。
本書收集了大約60道微軟技術(shù)面試題,這些問題妙趣橫生,其解答別出心裁,還穿插了面試者的各種小故事。它傳達(dá)給讀者:微軟重視什么樣的能力,需要什么樣的人才。但它更深層的意義在于引導(dǎo)讀者思考,提倡一種發(fā)現(xiàn)問題、解決問題的思維方式,充分挖掘編程的樂趣,展示編程之美。
夢(mèng)想改變世界,據(jù)說編程的人都懷揣著一個(gè)改變世界的夢(mèng)想:編程神奇而充滿力量。無數(shù)的年輕人投身其中,用夢(mèng)想和思考改變世界。本書更深層的意義在于引導(dǎo)讀者思考,和讀者共享思考之樂,編程之美。
本書收集了約60道算法和程序設(shè)計(jì)題目,這些題目大部分在近年的筆試,面試中出現(xiàn)過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發(fā),引導(dǎo)讀者發(fā)現(xiàn)問題,分析問題,解決問題,尋找更優(yōu)的解法。
本書的內(nèi)容分為下面幾個(gè)部分:
游戲之樂:從游戲和其他有趣問題出發(fā),化繁為簡(jiǎn),分析總結(jié)。
數(shù)字之魅:編程的過程實(shí)際上就是和數(shù)字及字符打交道的過程。這一部分收集了一些好玩的對(duì)數(shù)字進(jìn)行處理的題目。
結(jié)構(gòu)之法:匯集了常見的對(duì)字符串、鏈表、隊(duì)列,以及樹等進(jìn)行操作的題目。
數(shù)學(xué)之趣:列舉了一些不需要寫具體程序的數(shù)學(xué)問題,鍛煉讀者的抽象思維能力。
目錄:
第1章 游戲之樂——游戲中碰到的題目
1.1 讓CPU占用率曲線聽你指揮
1.2 中國(guó)象棋將帥問題
1.3 一摞烙餅的排序
1.4 買書問題
1.5 快速找出故障機(jī)器
1.6 飲料供貨
1.7 光影切割問題
1.8 小飛的電梯調(diào)度算法
1.9 高效率地安排見面會(huì)
1.10 雙線程高效下載
1.11 NIM(1)一排石頭的游戲
1.12 NIM(2)“拈”游戲分析
1.13 NIM(3)兩堆石頭的游戲
1.14 連連看游戲設(shè)計(jì)
1.15 構(gòu)造數(shù)獨(dú)
1.16 點(diǎn)游戲
1.17 俄羅斯方塊游戲
1.18 挖雷游戲
第2章 數(shù)字之魅——數(shù)字中的技巧
2.1 求二進(jìn)制數(shù)中1的個(gè)數(shù)
2.2 不要被階乘嚇倒
2.3 尋找發(fā)帖“水王”
2.4 的數(shù)目
2.5 尋找最大的K個(gè)數(shù)
2.6 精確表達(dá)浮點(diǎn)數(shù)
2.7 最大公約數(shù)問題
2.8 找符合條件的整數(shù)
2.9 斐波那契(Fibonacci)數(shù)列
2.10 尋找數(shù)組中的最大值和最小值
2.11 尋找最近點(diǎn)對(duì)
2.12 快速尋找滿足條件的兩個(gè)數(shù)
2.13 子數(shù)組的最大乘積
2.14 求數(shù)組的子數(shù)組之和的最大值
2.15 子數(shù)組之和的最大值(二維)
2.16 求數(shù)組中最長(zhǎng)遞增子序列
2.17 數(shù)組循環(huán)移位
2.18 數(shù)組分割
2.19 區(qū)間重合判斷
2.20 程序理解和時(shí)間分析
2.21 只考加法的面試題
第3章 結(jié)構(gòu)之法——字符串及鏈表的探索
3.1 字符串移位包含的問題
3.2 電話號(hào)碼對(duì)應(yīng)英語單詞
3.3 計(jì)算字符串的相似度
3.4 從無頭單鏈表中刪除節(jié)點(diǎn)
3.5 最短摘要的生成
3.6 編程判斷兩個(gè)鏈表是否相交
3.7 隊(duì)列中取最大值操作問題
3.8 求二叉樹中節(jié)點(diǎn)的最大距離
3.9 重建二叉樹
3.10 分層遍歷二叉樹
3.11 程序改錯(cuò)
第4章 數(shù)學(xué)之趣——數(shù)學(xué)游戲的樂趣
4.1 金剛坐飛機(jī)問題
4.2 瓷磚覆蓋地板
4.3 買票找零
4.4 點(diǎn)是否在三角形內(nèi)
4.5 磁帶文件存放優(yōu)化
4.6 桶中取黑白球
4.7 螞蟻爬桿
4.8 三角形測(cè)試用例
4.9 數(shù)獨(dú)知多少
4.10 數(shù)字啞謎和回文
4.11 挖雷游戲的概率