這是一本讓人著迷的書(shū)!
從我得到樣書(shū)的那一刻起,在每天的閑暇時(shí)間閱讀和思索這本書(shū)中的題目就成了我的一個(gè)新習(xí)慣。雖然網(wǎng)絡(luò)上早就流傳著不少微軟面試題,坊間也不乏一些程序員面試類(lèi)的圖書(shū),但是像這樣集中展示高水平編程面試題目,并且以啟發(fā)性方式對(duì)這些題目予以權(quán)威解答的圖書(shū),這還是第一本。對(duì)于那些正在準(zhǔn)備面試的同學(xué)來(lái)說(shuō),這本書(shū)毫無(wú)疑問(wèn)是寶貴的學(xué)習(xí)資料。而在我看來(lái),即使是對(duì)于已經(jīng)工作的程序員來(lái)說(shuō),這本書(shū)也是非常值得用心閱讀的。
實(shí)話(huà)實(shí)說(shuō),對(duì)于算法和數(shù)學(xué)類(lèi)謎題的意義和價(jià)值,在程序員社群里長(zhǎng)期以來(lái)就存在很大的爭(zhēng)議。CSDN上每隔一段時(shí)間就會(huì)有人討論“算法真的重要嗎”或者“數(shù)學(xué)真的重要嗎”這樣的問(wèn)題。很多人對(duì)此都持質(zhì)疑甚至是否定態(tài)度,他們認(rèn)為,對(duì)于企業(yè)來(lái)說(shuō),是軟件產(chǎn)品而不是具體的程序創(chuàng)造了價(jià)值,而創(chuàng)造成功的軟件產(chǎn)品是一個(gè)龐大而復(fù)雜的系統(tǒng)工程,優(yōu)質(zhì)的算法和程序在其中的作用是有限的,相反,對(duì)平臺(tái)和系統(tǒng)的理解、對(duì)領(lǐng)域知識(shí)和規(guī)則的掌握、軟件質(zhì)量的控制、產(chǎn)品設(shè)計(jì)、架構(gòu)的選擇和設(shè)計(jì)、平臺(tái)和工具選型,以至于團(tuán)隊(duì)管理和有效溝通,對(duì)于軟件工程師來(lái)說(shuō)是更為重要的技能和素質(zhì)。相比之下,算法和數(shù)學(xué)只要基礎(chǔ)扎實(shí)就可以了,在實(shí)踐當(dāng)中反而不如上面那些要素顯得重要,更沒(méi)有必要在類(lèi)似智力測(cè)試般的面試謎題和奇技淫巧上花費(fèi)太多心思了。
這樣的看法,當(dāng)然有很有價(jià)值的方面。當(dāng)代的軟件工程師,確實(shí)需要建立更全面的知識(shí)技能體系和系統(tǒng)思維,但是以此來(lái)否定和貶低算法和數(shù)學(xué)基本功的重要性,否定面試謎題的意義和價(jià)值,則又屬于只見(jiàn)樹(shù)木不見(jiàn)森林。事實(shí)上,這些謎題考察和鍛煉的,并不是算法和數(shù)學(xué)的“奇技淫巧”,而是扎實(shí)、嚴(yán)密和具有創(chuàng)造性的思考能力,面對(duì)問(wèn)題有條不紊的分析能力,和不斷深入、刨根問(wèn)底的精神。毫無(wú)疑問(wèn),這些素質(zhì),都是軟件工程師身上最寶貴的東西。
本書(shū)就是對(duì)這一問(wèn)題的有力證明。請(qǐng)翻開(kāi)這本書(shū),隨便挑選幾個(gè)問(wèn)題,認(rèn)真思考,嘗試解答,再看看作者的思路,在其啟發(fā)下更進(jìn)一步思考,嘗試給出更多更好的解決方案,甚至更進(jìn)一步,提出書(shū)中都沒(méi)有提出的問(wèn)題,把問(wèn)題想透,把程序?qū)崿F(xiàn)出來(lái),驗(yàn)證自己的想法。毫無(wú)疑問(wèn)這樣的閱讀方法是相當(dāng)吃功夫的,但通過(guò)這樣的方式,不但能夠最大程度地獲得本書(shū)的價(jià)值,也能夠?qū)崒?shí)在在提高讀者的基本功、思考力和創(chuàng)造力。毫無(wú)疑問(wèn),這些能力的意義要遠(yuǎn)比任何具體知識(shí)和技能的獲得都更重要。對(duì)系統(tǒng)與平臺(tái)的理解也好,對(duì)領(lǐng)域知識(shí)的掌握也好,產(chǎn)品的設(shè)計(jì)、架構(gòu)的選擇也好,所有這些算法之外的技能,不都需要強(qiáng)悍的思考能力的支撐才能獲得嗎?事實(shí)上,在這個(gè)知識(shí)開(kāi)放共享的時(shí)代,頭腦和思維才是唯一核心的競(jìng)爭(zhēng)力,從這個(gè)意義上講,這本書(shū)是直接面向核心競(jìng)爭(zhēng)力發(fā)展的,其意義何其大也!
這本書(shū)另一個(gè)必須要提的意義,就是它的“美”。真正的程序員都領(lǐng)略過(guò)程序之美,那些簡(jiǎn)潔有力的代碼,精巧嚴(yán)密的構(gòu)思,高效直接的解決方案,美得令人窒息。可惜,在日益工業(yè)化和利益驅(qū)動(dòng)的IT中,這種美已經(jīng)是越來(lái)越少見(jiàn)的東西。但我想每一個(gè)真正熱愛(ài)編程的人,都渴望欣賞這種美,渴望在思考過(guò)程中一次次“Aha!”式的愉悅。這本書(shū)就能夠最有效地滿(mǎn)足我們欣賞編程之美的渴望,題目的美,思考過(guò)程的美??解答的美,延伸思考的美,這種美的感覺(jué),對(duì)于真正的程序員來(lái)說(shuō),本身就是一種精神享受。
雖然這本書(shū)表面上是指導(dǎo)面試的,但是依我來(lái)看,已經(jīng)工作的職業(yè)程序員更有必要好好讀讀這本書(shū)。畢竟世界很大,不是每個(gè)人都要去微軟或者谷歌,而這本書(shū)的意義絕不僅僅在面試,更重要的是在編程之美,思考之美。
posted on 2008-10-05 11:53
侖波比 閱讀(136)
評(píng)論(0) 編輯 收藏