-- 會員 / 註冊 --
 帳號:
 密碼:
  | 註冊 | 忘記密碼
站長推薦
NT售價: 290
NT售價: 180
NT定價: 320
優惠價:75240
NT售價: 445
NT定價: 650
優惠價:75488

5/27(六) ~5/30(二) 端午連假門市營業時間從下午2點到晚上8點
5/23 新書到! 5/18 新書到! 5/9 新書到! 5/3 新書到!
C.G.Next購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopIllustratorAutoCadMasterCamSolidWorksCreoUGRevit
CC++Java遊戲程式Linux嵌入式PLCFPGAMatlabNuke
駭客資料庫搜索引擎影像處理FluentSPSSANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
C#HadoopPythonStm32手機程式CortexLabviewAndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

劍指Offer:名企面試官精講典型編程題(第2版)

( 簡體 字)
作者:何海濤類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社劍指Offer:名企面試官精講典型編程題(第2版) 3dWoo書號: 46443
詢問書籍請說出此書號!

有庫存
NT售價: 325

出版日:3/1/2017
頁數:348
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121310928
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
作者序:

譯者序:

前言:

第2版序言
時間總是在不經意間流逝,我們也在人生的旅途上不斷前行,轉眼間我在微軟的美國總部工作近兩年了。生活總給我們帶來新的挑戰,同時也有新的驚喜。這兩年在陌生的國度里用著不太流利的英語和各色人種交流,體驗著世界的多元化。這兩年也加過班、熬過夜,為了進展不順的項目也焦頭爛額過。在微軟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

推薦序二
I had the privilege of working with Harry at Microsoft. His background and industry experience are a great asset in learning about the process and techniques of technical interviews. Harry shares practical information about what to expect in a technical interview that goes beyond the core engineering skills. An interview is more than a skills assessment. It is the chance for you and a prospective employer to gauge whether there is a mutual fit. Harry includes reminders about the key factors that can determine a successful interview as well as success in your new job.
Harry takes you through a set of interview questions to share his insight into the key aspects of the question. By understanding these questions, you can learn how to approach any question more effectively. The basics of languages, algorithms and data structures are discussed as well as questions that explore how to write robust solutions after breaking down problems into manageable pieces. Harry also includes examples to focus on modeling and creative problem solving.
The skills that Harry teaches for problem solving can help you with your next interview and in your next job. Understanding better the key problem solving techniques that are analyzed in an interview can help you get the first job after university or make your next career move.
Matt Gibbs
Direct of Development, Asia Research & Development
Microsoft Corporation

前 言
自2011年9月以來,我的面試題博客(http://zhedahht.blog.163.com/)點擊率上升很快,累計點擊量超過70萬次,并且平均每天還會增加約3000次點擊。每年隨著秋季新學期的開始,新一輪招聘高峰也即將來到。這不禁讓我想起幾年前自己找工作的情形。那個時候的我,也是在網絡的各個角落搜索面試經驗,盡可能多地搜集各家公司的面試題。
當時網上的面試經驗還很零散,應聘者如果想系統地搜集面試題,則需要付出很大的努力。于是我萌生了一個念頭,在博客上系統地搜集、整理有代表性的面試題,這樣可以極大地方便后來人。經過一段時間的準備,我于2007年2月在網易博客上發表了第一篇關于編程面試題的博文。
在之后的日子里,我陸續發表了60余篇關于面試題的博文。隨著博文數目的增加,我也逐漸意識到一篇篇博文仍然是零散的。一篇博文只是單純地分析一道面試題,但對解題思路缺乏系統性的梳理。于是,2010年10月,我有了把博文整理成一本書的想法。經過努力,這本書終于和讀者見面了。
本書內容
全書分為7章,各章的主要內容如下:
第1章介紹面試的流程。通常整個面試過程可以分為電話面試、共享桌面遠程面試和現場面試3個階段,每輪面試又可以分為行為面試、技術面試和應聘者提問3個環節。本章詳細討論了面試中每個環節需要注意的問題。其中,1.3.2節深入討論了技術面試中的5個要素,是全書的大綱,接下來的第2∼6章將逐一討論每個要點。
第2章梳理應聘者在接受技術面試時需要用到的基礎知識。本章從編程語言、數據結構及算法3個方面總結了程序員面試的知識點。
第3章討論應聘者在面試時寫出高質量代碼的3個要點。通常面試官除了期待應聘者寫出的代碼能夠完成基本的功能,還能應對特殊情況并對非法輸入進行合理的處理。讀完這一章,讀者將學會如何從規范性、完整性和魯棒性3個方面提高代碼的質量。
第4章總結在編程面試中解決難題的常用思路。如果在面試過程中遇到復雜的難題,那么應聘者最好在寫代碼之前形成清晰的思路。讀者在讀完這一章之后,將學會如何用畫圖、舉例和分解這3種思路來解決問題。
第5章介紹如何優化代碼的時間效率和空間效率。如果一個問題有多種解法,那么面試官總是期待應聘者能找到最優的解法。讀完這一章,讀者將學會優化時間效率及用空間換時間的常用算法。
第6章總結面試中的各項能力。在面試過程中,面試官會一直關注應聘者的學習能力和溝通能力。除此之外,有些面試官還喜歡考查應聘者的知識遷移能力、抽象建模能力和發散思維能力。讀完這一章,讀者將學會如何培養和運用這些能力。
第7章是兩個面試案例。在這兩個案例中,讀者將看到應聘者在面試過程中的哪些舉動是不好的行為,而哪些表現又是面試官所期待的行為。衷心地希望應聘者能在面試時少犯甚至不犯錯誤,完美地表現出自己的綜合素質,最終拿到心儀的Offer。
本書特色
正如前面提到的那樣,本書的原型是我多年來陸陸續續發表的幾十篇博文,但這本書也不僅僅是這些博文的總和,它在博文的基礎上添加了如下內容:
本書試圖以面試官的視角來剖析面試題。本書前6章的第一節都是“面試官談面試”,收錄了分布在不同IT企業(或者IT部門)的面試官對代碼質量、應聘者如何形成及表達解題思路等方面的理解。在本書中穿插著幾十條“面試小提示”,是我作為面試官給應聘者在面試方法、技巧方面的建議。在第7章的案例中,“面試官心理”揭示了面試官在聽到應聘者不同回答時的心理活動。應聘者如果能了解面試官的心理活動,則無疑能在面試時更好地表現自己。
本書總結了解決面試難題的常用方法,而不僅僅是解決一道道零散的題目。在仔細分析、解決了幾十道典型的面試題之后,我發現,其實是有一些通用的方法可以在面試的時候幫助我們解題的。舉個例子,如果面試的時候遇到的題目很難,那么我們可以試著把一個大的、復雜的問題分解成若干個小的、簡單的子問題,然后遞歸地去解決這些子問題。再比如,我們可以用數組實現一個簡單的哈希表解決一系列與字符串相關的面試題。在詳細分析了一道面試題之后,很多章節都會在“相關題目”中列舉同類型的面試題,并在“舉一反三”中總結解決這一類型題目的方法和要點。
本書收集的面試題都是各大公司的編程面試題,極具實戰意義。包括Google、微軟在內的知名IT企業在招聘的時候都非常重視應聘者的編程能力,編程技術面試也是整個面試流程中最為重要的環節。本書選取的題目都是被各大公司面試官反復采用的編程題。如果讀者一開始覺得書中的有些題目比較難,那也正常,沒有必要感到氣餒,因為像Google、微軟、阿里巴巴、騰訊這樣的大企業的面試本身就不簡單。讀者逐步掌握了書中總結的解題方法之后,編程能力和分析復雜問題的能力將會得到很大的提升,再去大公司面試將會輕松很多。
本書附帶提供了80道編程題的完整的源代碼,其中包含每道題的測試用例。很多面試官在應聘者寫完程序之后,都會要求應聘者自己想一些測試用例來測試自己的代碼,一些沒有實際項目開發經驗的應聘者不知道如何進行單元測試。相信讀者在讀完本書后就會知道如何從基本功能測試、邊界值測試、性能測試等方面去設計測試用例,從而提高編寫高質量代碼的能力。
本書體例
在本書的正文中間或者章節的末尾穿插了不少特殊體例。這些體例或用來給應聘者提出建議,或用來總結解題方法,希望能夠引起讀者的注意。

面試小提示:
本條目是從面試官的角度給應聘者提出的建議,或者希望應聘者能夠注意到的細節。
源代碼:
讀者將在本條目看到一個指向GitHub的鏈接,可以到對應的網頁上瀏覽代碼。同時,讀者也可以把代碼下載到本地,用Visual Studio打開CodingInterviewChinese2.sln文件閱讀或者調試代碼。
測試用例:
本條目列舉應聘者在面試時可以用來測試代碼是否完整、魯棒的單元測試用例。通常本書從基本功能、邊界值、無效的輸入等方面測試代碼的完整性和魯棒性,針對在時間效率或者空間效率方面有要求的面試題還包含性能測試的測試用例。
本題考點:
本條目總結面試官采用一道面試題的考查要點。
相關題目:
本條目列舉一些和詳細分析的面試題相關或者類似的面試題。
舉一反三:
本條目從解決面試例題中提煉出常用的解題方法。這些解題方法能夠應用到解決其他同類型的問題中去,達到舉一反三的目的。
面試官心理:
在第7章的面試案例中,本條目用來模擬面試官聽到應聘者的回答之后的心理活動。
關于遺漏的問題
由于時間倉促,再加上筆者的能力有限,書中難免會有一些遺漏。今后一旦發現遺漏的問題,我將第一時間在博客(http://zhedahht.blog.163. com/)上公布勘誤信息。讀者如果發現任何問題或者有任何建議,那么也請在博客上留言、評論,或者通過電子郵件(zhedahht@hotmail.com)和我聯系。
致謝
在寫博客及把博文整理成書的過程中,我得到了很多人的幫助。沒有他們,也就沒有這本書。因此,我想在這里對他們誠摯地說一聲:謝謝!
首先我要謝謝個人博客上的讀者。網友的鼓勵讓我在博客上的寫作從2007年2月開始堅持到了現在。也正是由于網友的鼓勵,我最終下定決心把博文整理成一本書。
在本書的寫作過程中,我得到了很多同學、同事的幫忙,包括Autodesk的馬凌洲、劉景勇、王海波、藍誠,支付寶的殷焰,百度的張珺、張曉禹,英特爾的尹彥,交通銀行的朱麟,淘寶的堯敏,微軟的陳黎明、田超,英偉達的吳斌,SAP的何幸杰和華為的韓偉東(在書稿寫作階段他還在盛大工作)。感謝他們和大家分享了對編程面試的理解和思考。同時還要感謝GlaxoSmithKline Investment的Recruitment & HRIS Manager蔡詠來(也是2008年把我招進微軟的HR)和大家分享了微軟所推崇的STAR簡歷模型。還要感謝在微軟期間我的兩個老板徐鵬陽和Matt Gibbs,他們都是在微軟有十幾年面試經驗的資深面試官,對面試有著深刻的理解。感謝二位在百忙之中抽時間為本書寫序,為本書增色不少。
我同樣要感謝現在思科的老板Min Lu及TQSG上海團隊的同事王劦、趙斌和朱波對我的理解。他們在我寫作期間替我分擔了大量的工作,讓我能夠集中更多的精力來寫書。
感謝電子工業出版社的工作人員,尤其是張春雨和趙樹剛的幫助。兩位編輯大到全書的構架,小到文字的推敲,都給予了我極大的幫助,從而使本書的質量有了極大的提升。
本書還得到了很多朋友的支持和幫助,限于篇幅,雖然不能在此一一說出他們的名字,但我一樣對他們心存感激。
最后,我要衷心地感謝我的愛人劉素云。感謝她在過去一年中對我的理解和支持,為我營造了一個溫馨而又浪漫的家,讓我能夠心無旁騖地寫書。我無以為謝,謹以此書獻給她及我們的孩子。
何海濤
2011年9月8日清晨于上海三涇南宅
內容簡介:

本書剖析了80個典型的編程面試題,系統整理基礎知識、代碼質量、解題思路、優化效率和綜合能力這5個面試要點。全書共分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
序: