劍指Offer:名企麵試官精講典型編程題(第2版)(繼英文版登陸全球市場後又迎來重大升級加大題量+更新題目+優化解法+融閤中外)
何海濤 著
ISBN 978-7-121-31092-8
2017年5月齣版
定價:65.00元
348頁
16開
編輯推薦
√以麵試官視角拆解考題
結閤作者在多傢名企的經驗,從麵試官視角剖析考題構思、現場心理、題解優劣與麵試心得。
√80餘道精選編程麵試題
從榖歌、微軟等知名IT企業的海量麵試題中精心篩選齣80餘道精華題目,提供多角度解題輔導。由於本書流傳甚廣,這些題已被大量企業真實采用,參考價值頗高。
√高標準的係統解題方法
係統總結如何在麵試時寫齣高質量代碼,如何優化代碼效率,以及分析、解決難題的常用思路和方法。
√真實現場體驗與生涯感悟
Autodesk→微軟中國→思科→美國微軟總部,作者一路跳槽一路“麵”,既親曆備考和被考,更做過數次考官,又常年從事一綫編程工作,大量麵試與實踐經驗,是本書品質後盾。
內容提要
《劍指Offer:名企麵試官精講典型編程題(第2版)》剖析瞭80個典型的編程麵試題,係統整理基礎知識、代碼質量、解題思路、優化效率和綜閤能力這5個麵試要點。《劍指Offer:名企麵試官精講典型編程題(第2版)》共分7章,主要包括麵試的流程,討論麵試每一環節需要注意的問題;麵試需要的基礎知識,從編程語言、數據結構及算法三方麵總結程序員麵試知識點;高質量的代碼,討論影響代碼質量的3個要素(規範性、完整性和魯棒性),強調高質量代碼除完成基本功能外,還能考慮特殊情況並對非法輸入進行閤理處理;解決麵試題的思路,總結編程麵試中解決難題的有效思考模式,如在麵試中遇到復雜難題,應聘者可利用畫圖、舉例和分解這3種方法將其化繁為簡,先形成清晰思路,再動手編程;優化時間和空間效率,讀者將學會優化時間效率及用空間換時間的常用算法,從而在麵試中找到優解;麵試中的各項能力,總結應聘者如何充分錶現學習和溝通能力,並通過具體麵試題討論如何培養知識遷移、抽象建模和發散思維能力;兩個麵試案例,總結哪些麵試舉動是不良行為,而哪些錶現又是麵試官所期待的行為。
目錄
第1章 麵試的流程 1
1.1 麵試官談麵試 1
1.2 麵試的3種形式 2
1.2.1 電話麵試 2
1.2.2 共享桌麵遠程麵試 3
1.2.3 現場麵試 4
1.3 麵試的3個環節 5
1.3.1 行為麵試環節 5
1.3.2 技術麵試環節 10
1.3.3 應聘者提問環節 17
1.4 本章小結 18
第2章 麵試需要的基礎知識 20
2.1 麵試官談基礎知識 20
2.2 編程語言 21
2.2.1 C++ 22
2.2.2 C# 27
2.3 數據結構 36
2.3.1 數組 36
2.3.2 字符串 47
2.3.3 鏈錶 55
2.3.4 樹 59
2.3.5 棧和隊列 67
2.4 算法和數據操作 71
2.4.1 遞歸和循環 72
2.4.2 查找和排序 78
2.4.3 迴溯法 87
2.4.4 動態規劃與貪婪算法 93
2.4.5 位運算 98
2.5 本章小結 103
第3章 高質量的代碼 104
3.1 麵試官談代碼質量 104
3.2 代碼的規範性 105
3.3 代碼的完整性 106
3.4 代碼的魯棒性 132
3.5 本章小結 151
第4章 解決麵試題的思路 153
4.1 麵試官談麵試思路 153
4.2 畫圖讓抽象問題形象化 154
4.3 舉例讓抽象問題具體化 163
4.4 分解讓復雜問題簡單化 184
4.5 本章小結 199
第5章 優化時間和空間效率 201
5.1 麵試官談效率 201
5.2 時間效率 202
5.3 時間效率與空間效率的平衡 237
5.4 本章小結 254
第6章 麵試中的各項能力 256
6.1 麵試官談能力 256
6.2 溝通能力和學習能力 257
6.3 知識遷移能力 260
6.4 抽象建模能力 293
6.5 發散思維能力 305
6.6 本章小結 313
第7章 兩個麵試案例 315
7.1 案例一:(麵試題67)把字符串轉換成整數 316
7.2 案例二:(麵試題68)樹中兩個節點的低公共祖先 324
精彩節摘
第二版序言
時間總是在不經意間流逝,我們也在人生的旅途上不斷前行,轉眼間我在微軟的美國總部工作近兩年瞭。生活總給我們帶來新的挑戰,同時也有新的驚喜。這兩年在陌生的國度裏用著不太流利的英語和各色人種交流,體驗著世界的多元化。這兩年也加過班、熬過夜,為瞭進展不順的項目也焦頭爛額過。在微軟Office新産品發布那天我也自豪過,忍不住在朋友圈裏和大傢分享自己的喜悅和興奮。2015年4月,我和素雲又一次迎來瞭一個小生命。之後的日子雖然辛苦,但每當看著呼呼、陽陽兩兄弟天真燦爛的笑容時,我的心裏隻有無限的幸福。
西雅圖是一個IT氛圍很濃的地方,這裏是微軟和馬遜的總部所在地,Google、Facebook等很多知名公司都在這裏有研發中心。一群程序員聚在一起,總會談到誰去這傢公司麵試瞭,誰拿到瞭那傢公司的Offer。這讓我有機會從多個角度去理解編程麵試,也更加深入地思考怎樣刷題纔會更加有效。我的這些理解、思考都融入《劍指Offer——名企麵試官精講典型編程麵試題》這本書的第二版裏。
這次再版在一版的基礎上增加瞭新的麵試題,涵蓋瞭新的知識點。第二版新增瞭2.4.3節和2.4.4節,分彆討論迴溯法、動態規劃和貪婪算法。正則錶達式是編程麵試時經常齣現的內容,本次新增瞭兩個正則錶達式匹配的問題(詳見麵試題19和麵試題20)。
這次新增的內容有些是原有內容的延伸。比如原書的麵試題35要求找齣字符串中一個隻齣現一次的字符[在第二版中為麵試題50(題目一)]。這次新增的麵試題50(題目二)把要求改為從一個字符流中找一個隻齣現一次的字符。再比如,在原書的麵試題23[在第二版中為麵試題32(題目一)]中討論瞭如何把二叉樹按層打印到一行裏,這次新增瞭兩個按層打印二叉樹的麵試題:麵試題32(題目二)要求把二叉樹的每一層單獨打印到一行;麵試題32(題目三)要求按之字形順序打印二叉樹。
計算機領域的知識更新很快,編程麵試題也需要推陳齣新。本書的參考代碼以C++為主,這次再版根據C++新的標準在內容上進行瞭一些調整。例如,原書的麵試題48要求用C++實現不能繼承的類。由於在C++ 11中引入瞭關鍵字final,那麼用C++實現不能繼承的類已經變得非常容易。因此,這次再版時用新的麵試題替代瞭它。
自本書齣版以來,收到瞭很多讀者的反饋,讓我受益匪淺。例如,麵試題20“錶示數值的字符串”根據GitHub用戶cooljacket的意見做齣瞭修改。在此對所有提齣反饋、建議的讀者錶示衷心的感謝。
本書所有源代碼(包含單元測試用例)都分享在GitHub上,歡迎讀者對本書及GitHub上的代碼提齣意見。如果發現代碼中存在問題,或者發現還有更好的解法,則歡迎讀者遞交代碼。本書所有源代碼均以BSD許可證開源,歡迎大傢共同參與,一起提高代碼的質量。
通過讀者的E-mail,我很高興地得知《劍指Offer——名企麵試官精講典型編程麵試題》一書陪伴很多讀者找到瞭心儀的工作,拿到瞭滿意的Offer。實際上,這本書不僅僅是一本關於求職麵試的工具書,同時還是一本關於編程的技術書。書中用大量的篇幅討論數據結構和算法,討論如何纔能寫齣高質量的代碼。這些技能在麵試的時候有用,在平時的開發工作中同樣有用。希望本書能陪伴更多的讀者在職場中成長。
何海濤
2016年12月7日深夜於美國雷德濛德、
推薦序一
海濤2008年在我的團隊做過軟件開發工程師。他是一名很細心的員工,對麵試這個話題很感興趣,經常和我及其他員工討論,積纍瞭很多麵試方麵的技巧和經驗。他曾跟我提過想要寫本有關麵試的書,如今他把書寫齣來瞭!他是一個有目標、有耐心和持久力的人。
我在微軟做瞭很多年的麵試官,後麵7年多作為把關麵試官,也麵試瞭很多應聘者。應聘者要想做好麵試,確實應把麵試當作一門技巧來學習,更重要的是要提高自身的能力。我遇到很多應聘者可能自身能力也不差,但因為不懂得怎樣迴答提問,不能很好地發揮。也有很多剛走齣校園的應聘者也學過數據結構和算法分析,可是在處理具體問題時不能用學過的知識來有效地解決。這些朋友讀讀海濤的這本書,會受益匪淺,在麵試中的發揮也會有很大提高。這本書也可以作為很好的教學補充資料,讓學生不僅學到書本知識,也學到解決問題的方法。
在嚮我匯報的員工中有麵試發揮很好但工作平平的,也有麵試一般但工作**的。對於追求職業發展的人來說,通過麵試隻是邁過一道門檻而不是目的,真正的較量是在入職後的成長。就像學釣魚,你可能在有經驗的垂釣者的指導下能釣到幾條魚,但如果沒有學到垂釣的真諦,離開瞭指導者,你可能就很難釣到很多魚。我希望讀這本書的朋友不要隻學一些技巧來應付麵試,而是通過學習如何解決麵試中的難題來提高自己的編程和解決問題的能力,進而提高自信心,在職場中迅速成長。
徐鵬陽(Pung Xu)
Principal Development Manager, Search Technology Center Asia
Microsoft
作者簡介
何海濤,現美國微軟總部資深軟件工程師,先後在Autodesk、思科、微軟中國等跨國企業任職。著有《劍指Offer——名企麵試官精講典型編程題》、《Coding Interviews: Questions, Analysis and Solutions》(本書英文版)等書。多年來從事軟件開發工作,對軟件設計、開發、調試等均有較深的功底,對C/C++、C#以及.NET等語言及平颱都較為熟悉,對圖形圖像、CAD、設計模式、項目管理等領域均有專業經驗。
這本《劍指Offer》確實是程序員麵試的“聖經”之一,尤其是這次更新的第二版,簡直是為我這種準備麵試的同學量身定做的。我拿到手的時候,第一感覺就是厚實,內容量肯定很足。翻開來看,裏麵的題目類型非常豐富,從基礎的數據結構和算法,到更復雜的動態規劃、字符串匹配,甚至還有一些並發和係統設計的內容,基本涵蓋瞭大多數大廠麵試會考察的知識點。而且,每個題目都有詳細的解題思路和多種解法,不僅僅是給齣答案,更重要的是它會解釋為什麼這樣解,背後的原理是什麼,以及如何優化。這對於我理解算法的精髓,而不是死記硬背,非常有幫助。我特彆喜歡它對一些經典題目的深入剖析,比如一些關於鏈錶、二叉樹的題目,書裏會講解不同情況下的時間復雜度和空間復雜度,還會給齣一些容易齣錯的點,這些都是我在自己刷題時容易忽略的,但麵試官卻會重點考察的。我覺得這比單純做題集要有用得多,它能幫助我建立起一套完整的解題框架,遇到新問題也能舉一反三。
評分我一直覺得,很多技術書籍寫得過於理論化,而這本書的風格卻非常接地氣。它沒有那些晦澀難懂的術語,而是用非常樸實易懂的語言,將復雜的編程問題解釋清楚。我買這本書主要是想提升自己的算法能力,準備找工作,這本書裏的題目我感覺非常貼閤實際的麵試場景。很多題目我都見過類似的,或者是它的變種。最讓我驚喜的是,對於每一個題目,它都提供瞭多種解法,並且對這些解法的時間復雜度和空間復雜度進行瞭詳細的分析,這對於我這種追求極緻效率的人來說,簡直是福音。它還會在講解中指齣一些常見的錯誤思路和陷阱,這讓我避免瞭很多不必要的彎路。而且,這本書的排版也很舒服,代碼清晰,注釋也很到位,讀起來一點都不費勁。感覺像是有一位經驗豐富的麵試官在旁邊手把手教你如何解題一樣,非常實在。
評分拿到這本書後,最大的感受就是它的“誠意滿滿”。“名企麵試官精講典型編程題”這個標題一點不誇張,很多題目和講解都充滿瞭實戰的經驗。書中的題目覆蓋麵很廣,從基礎的數組、字符串、鏈錶、樹、圖,到更進階的動態規劃、迴溯、分治,甚至是並發編程和一些操作係統、網絡知識,都涉及到瞭。最關鍵的是,每一道題的講解都非常詳細,不僅給齣瞭代碼實現,更重要的是對解題思路進行瞭深入的剖析,包括題目考察的知識點、解題的思路演變、各種解法的優劣勢分析,以及可能存在的陷阱。我尤其喜歡的是,它在講解一些比較復雜的算法時,會循序漸進地引導你思考,讓你自己去發現最優解,而不是直接拋齣一個結論。這種教學方式讓我學到的知識更牢固,也更能舉一反三。而且,書中新增的麵試題確實非常貼近當前的技術趨勢,讓我感覺自己準備的方嚮是對的。
評分坦白說,我在看到這本書的時候,其實對“新增大量麵試題”這個點是有疑慮的,但拿到手翻開目錄後,這份疑慮就煙消雲散瞭。這次更新的版本真的加入瞭非常多有價值的題目,特彆是關於一些新技術的應用和更深層次的算法設計,這些都是我之前在其他地方看到的,但總感覺不夠係統。這本書的內容非常係統地梳理瞭這些內容,並且每一個題目都給齣瞭非常深入的分析。我最欣賞的是,它在講解一個算法時,不會僅僅停留在“會寫”的層麵,而是會深入到“為什麼這麼寫”、“有什麼其他方法”、“這種方法有什麼優缺點”等等,這種“知其然,更知其所以然”的學習方式,讓我對算法的理解上升瞭一個颱階。而且,書中的案例都非常典型,很多題目看完後,我都有種“豁然開朗”的感覺,感覺自己之前很多模糊的思路都清晰瞭。總的來說,這是一本非常值得投資的麵試寶典。
評分不得不說,這本書的內容更新得非常及時,而且“新增大量麵試題”這一點誠不欺我。我在網上看到很多朋友都推薦這本書,特彆是準備去一些互聯網大廠工作的,幾乎人手一本。這次更新的第二版,我特意看瞭目錄,確實增加瞭很多近期比較熱門的題目,比如一些關於高並發、分布式係統設計,甚至還有一些機器學習相關的簡單算法題目,這些都是我之前看一些老版本書籍時沒有接觸到的。而且,它的解題思路非常清晰,很多題目給齣瞭不止一種解法,並且對每種解法的優劣進行瞭分析,比如時間復雜度和空間復雜度,這一點對我來說太重要瞭。我之前自己刷題的時候,有時候能寫齣個能跑通的代碼就沾沾自喜瞭,但這本書會教我如何寫齣更優、更簡潔、更符閤麵試官期望的代碼。它不僅僅是教你“怎麼做”,更是教你“為什麼這麼做”,以及“還能怎麼做得更好”。這種深入的講解,讓我感覺不是在應付麵試,而是在真正地提升自己的編程內功。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有