劍指Offer:名企面試官精講典型編程題(第2版)(博文視點(diǎn)出品)

2021-04-25 20:35 更新


劍指Offer:名企面試官精講典型編程題(第2版)(博文視點(diǎn)出品)

何海濤 著

  • 出版社: 電子工業(yè)出版社
  • ISBN:9787121310928
  • 版次:2
  • 商品編碼:12163054
  • 品牌:博文視點(diǎn)
  • 包裝:平裝
  • 開本:16開
  • 出版時(shí)間:2017-04-01
  • 用紙:膠版紙
  • 頁數(shù):348


點(diǎn)此購買


編輯推薦

第二版重磅升級(jí)!

  √以面試官視角拆解考題

  結(jié)合作者在多家名企的經(jīng)驗(yàn),從面試官視角剖析考題構(gòu)思、現(xiàn)場心理、題解優(yōu)劣與面試心得。

  √80余道精選編程面試題

  從谷歌、微軟等知名IT企業(yè)的海量面試題中精心篩選出80余道精華題目,提供多角度解題輔導(dǎo)。由于本書流傳甚廣,這些題已被大量企業(yè)真實(shí)采用,參考價(jià)值頗高。

  √高標(biāo)準(zhǔn)的系統(tǒng)解題方法

  系統(tǒng)總結(jié)如何在面試時(shí)寫出高質(zhì)量代碼,如何優(yōu)化代碼效率,以及分析、解決難題的常用思路和方法。

  √真實(shí)現(xiàn)場體驗(yàn)與生涯感悟

  Autodesk→微軟中國→思科→美國微軟總部,作者一路跳槽一路“面”,既親歷備考和被考,更做過數(shù)次考官,又常年從事一線編程工作,大量面試與實(shí)踐經(jīng)驗(yàn),是本書品質(zhì)后盾。


內(nèi)容簡介

  《劍指Offer:名企面試官精講典型編程題(第2版)》剖析了80個(gè)典型的編程面試題,系統(tǒng)整理基礎(chǔ)知識(shí)、代碼質(zhì)量、解題思路、優(yōu)化效率和綜合能力這5個(gè)面試要點(diǎn)?!秳χ窸ffer:名企面試官精講典型編程題(第2版)》共分7章,主要包括面試的流程,討論面試每一環(huán)節(jié)需要注意的問題;面試需要的基礎(chǔ)知識(shí),從編程語言、數(shù)據(jù)結(jié)構(gòu)及算法三方面總結(jié)程序員面試知識(shí)點(diǎn);高質(zhì)量的代碼,討論影響代碼質(zhì)量的3個(gè)要素(規(guī)范性、完整性和魯棒性),強(qiáng)調(diào)高質(zhì)量代碼除完成基本功能外,還能考慮特殊情況并對(duì)非法輸入進(jìn)行合理處理;解決面試題的思路,總結(jié)編程面試中解決難題的有效思考模式,如在面試中遇到復(fù)雜難題,應(yīng)聘者可利用畫圖、舉例和分解這3種方法將其化繁為簡,先形成清晰思路,再動(dòng)手編程;優(yōu)化時(shí)間和空間效率,讀者將學(xué)會(huì)優(yōu)化時(shí)間效率及用空間換時(shí)間的常用算法,從而在面試中找到至優(yōu)解;面試中的各項(xiàng)能力,總結(jié)應(yīng)聘者如何充分表現(xiàn)學(xué)習(xí)和溝通能力,并通過具體面試題討論如何培養(yǎng)知識(shí)遷移、抽象建模和發(fā)散思維能力;兩個(gè)面試案例,總結(jié)哪些面試舉動(dòng)是不良行為,而哪些表現(xiàn)又是面試官所期待的行為。第二版重磅升級(jí)。


作者簡介

  何海濤,現(xiàn)美國微軟總部資深軟件工程師,先后在Autodesk、思科、微軟中國等跨國企業(yè)任職。著有《劍指Offer——名企面試官精講典型編程題》、《Coding Interviews: Questions, Analysis and Solutions》(本書英文版)等書。多年來從事軟件開發(fā)工作,對(duì)軟件設(shè)計(jì)、開發(fā)、調(diào)試等均有較深的功底,對(duì) C/C++、C#以及.NET等語言及平臺(tái)都較為熟悉,對(duì)圖形圖像、CAD、設(shè)計(jì)模式、項(xiàng)目管理等領(lǐng)域均有專業(yè)經(jīng)驗(yàn)。


目錄

第1章 面試的流程 1
1.1 面試官談面試 1
1.2 面試的3種形式 2
1.2.1 電話面試 2
1.2.2 共享桌面遠(yuǎn)程面試 3
1.2.3 現(xiàn)場面試 4
1.3 面試的3個(gè)環(huán)節(jié) 5
1.3.1 行為面試環(huán)節(jié) 5
1.3.2 技術(shù)面試環(huán)節(jié) 10
1.3.3 應(yīng)聘者提問環(huán)節(jié) 17
1.4 本章小結(jié) 18
第2章 面試需要的基礎(chǔ)知識(shí) 20
2.1 面試官談基礎(chǔ)知識(shí) 20
2.2 編程語言 21
2.2.1 C++ 22
2.2.2 C# 27
2.3 數(shù)據(jù)結(jié)構(gòu) 36
2.3.1 數(shù)組 36
2.3.2 字符串 47
2.3.3 鏈表 55
2.3.4 樹 59
2.3.5 棧和隊(duì)列 67
2.4 算法和數(shù)據(jù)操作 71
2.4.1 遞歸和循環(huán) 72
2.4.2 查找和排序 78
2.4.3 回溯法 87
2.4.4 動(dòng)態(tài)規(guī)劃與貪婪算法 93
2.4.5 位運(yùn)算 98
2.5 本章小結(jié) 103
第3章 高質(zhì)量的代碼 104
3.1 面試官談代碼質(zhì)量 104
3.2 代碼的規(guī)范性 105
3.3 代碼的完整性 106
3.4 代碼的魯棒性 132
3.5 本章小結(jié) 151
第4章 解決面試題的思路 153
4.1 面試官談面試思路 153
4.2 畫圖讓抽象問題形象化 154
4.3 舉例讓抽象問題具體化 163
4.4 分解讓復(fù)雜問題簡單化 184
4.5 本章小結(jié) 199
第5章 優(yōu)化時(shí)間和空間效率 201
5.1 面試官談效率 201
5.2 時(shí)間效率 202
5.3 時(shí)間效率與空間效率的平衡 237
5.4 本章小結(jié) 254
第6章 面試中的各項(xiàng)能力 256
6.1 面試官談能力 256
6.2 溝通能力和學(xué)習(xí)能力 257
6.3 知識(shí)遷移能力 260
6.4 抽象建模能力 293
6.5 發(fā)散思維能力 305
6.6 本章小結(jié) 313
第7章 兩個(gè)面試案例 315
7.1 案例一:(面試題67)把字符串轉(zhuǎn)換成整數(shù) 316
7.2 案例二:(面試題68)樹中兩個(gè)節(jié)點(diǎn)的最低公共祖先 324

精彩書摘

  海濤2008年在我的團(tuán)隊(duì)做過軟件開發(fā)工程師。他是一名很細(xì)心的員工,對(duì)面試這個(gè)話題很感興趣,經(jīng)常和我及其他員工討論,積累了很多面試方面的技巧和經(jīng)驗(yàn)。他曾跟我提過想要寫本有關(guān)面試的書,如今他把書寫出來了!他是一個(gè)有目標(biāo)、有耐心和持久力的人。

  我在微軟做了很多年的面試官,后面7年多作為把關(guān)面試官,也面試了很多應(yīng)聘者。應(yīng)聘者要想做好面試,確實(shí)應(yīng)把面試當(dāng)作一門技巧來學(xué)習(xí),更重要的是要提高自身的能力。我遇到很多應(yīng)聘者可能自身能力也不差,但因?yàn)椴欢迷鯓踊卮鹛釂枺荒芎芎玫匕l(fā)揮。也有很多剛走出校園的應(yīng)聘者也學(xué)過數(shù)據(jù)結(jié)構(gòu)和算法分析,可是在處理具體問題時(shí)不能用學(xué)過的知識(shí)來有效地解決。這些朋友讀讀海濤的這本書,會(huì)受益匪淺,在面試中的發(fā)揮也會(huì)有很大提高。這本書也可以作為很好的教學(xué)補(bǔ)充資料,讓學(xué)生不僅學(xué)到書本知識(shí),也學(xué)到解決問題的方法。

  在向我匯報(bào)的員工中有面試發(fā)揮很好但工作平平的,也有面試一般但工作優(yōu)秀的。對(duì)于追求職業(yè)發(fā)展的人來說,通過面試只是邁過一道門檻而不是目的,真正的較量是在入職后的成長。就像學(xué)釣魚,你可能在有經(jīng)驗(yàn)的垂釣者的指導(dǎo)下能釣到幾條魚,但如果沒有學(xué)到垂釣的真諦,離開了指導(dǎo)者,你可能就很難釣到很多魚。我希望讀這本書的朋友不要只學(xué)一些技巧來應(yīng)付面試,而是通過學(xué)習(xí)如何解決面試中的難題來提高自己的編程和解決問題的能力,進(jìn)而提高自信心,在職場中迅速成長。

  徐鵬陽(Pung Xu)

  Principal Development Manager, Search Technology Center Asia

  Microsoft

  ……


前言/序言

  自2011年9月以來,我的面試題博客點(diǎn)擊率上升很快,累計(jì)點(diǎn)擊量超過70萬次,并且平均每天還會(huì)增加約3000次點(diǎn)擊。每年隨著秋季新學(xué)期的開始,新一輪招聘高峰也即將來到。這不禁讓我想起幾年前自己找工作的情形。那個(gè)時(shí)候的我,也是在網(wǎng)絡(luò)的各個(gè)角落搜索面試經(jīng)驗(yàn),盡可能多地搜集各家公司的面試題。

  當(dāng)時(shí)網(wǎng)上的面試經(jīng)驗(yàn)還很零散,應(yīng)聘者如果想系統(tǒng)地搜集面試題,則需要付出很大的努力。于是我萌生了一個(gè)念頭,在博客上系統(tǒng)地搜集、整理有代表性的面試題,這樣可以極大地方便后來人。經(jīng)過一段時(shí)間的準(zhǔn)備,我于2007年2月在網(wǎng)易博客上發(fā)表了第一篇關(guān)于編程面試題的博文。

  在之后的日子里,我陸續(xù)發(fā)表了60余篇關(guān)于面試題的博文。隨著博文數(shù)目的增加,我也逐漸意識(shí)到一篇篇博文仍然是零散的。一篇博文只是單純地分析一道面試題,但對(duì)解題思路缺乏系統(tǒng)性的梳理。于是,2010年10月,我有了把博文整理成一本書的想法。經(jīng)過努力,這本書終于和讀者見面了。

  本書內(nèi)容

  全書分為7章,各章的主要內(nèi)容如下:

  第1章介紹面試的流程。通常整個(gè)面試過程可以分為電話面試、共享桌面遠(yuǎn)程面試和現(xiàn)場面試3個(gè)階段,每輪面試又可以分為行為面試、技術(shù)面試和應(yīng)聘者提問3個(gè)環(huán)節(jié)。本章詳細(xì)討論了面試中每個(gè)環(huán)節(jié)需要注意的問題。其中,1.3.2節(jié)深入討論了技術(shù)面試中的5個(gè)要素,是全書的大綱,接下來的第2~6章將逐一討論每個(gè)要點(diǎn)。

  第2章梳理應(yīng)聘者在接受技術(shù)面試時(shí)需要用到的基礎(chǔ)知識(shí)。本章從編程語言、數(shù)據(jù)結(jié)構(gòu)及算法3個(gè)方面總結(jié)了程序員面試的知識(shí)點(diǎn)。

  第3章討論應(yīng)聘者在面試時(shí)寫出高質(zhì)量代碼的3個(gè)要點(diǎn)。通常面試官除了期待應(yīng)聘者寫出的代碼能夠完成基本的功能,還能應(yīng)對(duì)特殊情況并對(duì)非法輸入進(jìn)行合理的處理。讀完這一章,讀者將學(xué)會(huì)如何從規(guī)范性、完整性和魯棒性3個(gè)方面提高代碼的質(zhì)量。

  第4章總結(jié)在編程面試中解決難題的常用思路。如果在面試過程中遇到復(fù)雜的難題,那么應(yīng)聘者最好在寫代碼之前形成清晰的思路。讀者在讀完這一章之后,將學(xué)會(huì)如何用畫圖、舉例和分解這3種思路來解決問題。

  第5章介紹如何優(yōu)化代碼的時(shí)間效率和空間效率。如果一個(gè)問題有多種解法,那么面試官總是期待應(yīng)聘者能找到最優(yōu)的解法。讀完這一章,讀者將學(xué)會(huì)優(yōu)化時(shí)間效率及用空間換時(shí)間的常用算法。

  第6章總結(jié)面試中的各項(xiàng)能力。在面試過程中,面試官會(huì)一直關(guān)注應(yīng)聘者的學(xué)習(xí)能力和溝通能力。除此之外,有些面試官還喜歡考查應(yīng)聘者的知識(shí)遷移能力、抽象建模能力和發(fā)散思維能力。讀完這一章,讀者將學(xué)會(huì)如何培養(yǎng)和運(yùn)用這些能力。

  第7章是兩個(gè)面試案例。在這兩個(gè)案例中,讀者將看到應(yīng)聘者在面試過程中的哪些舉動(dòng)是不好的行為,而哪些表現(xiàn)又是面試官所期待的行為。衷心地希望應(yīng)聘者能在面試時(shí)少犯甚至不犯錯(cuò)誤,完美地表現(xiàn)出自己的綜合素質(zhì),最終拿到心儀的Offer。

  本書特色

  正如前面提到的那樣,本書的原型是我多年來陸陸續(xù)續(xù)發(fā)表的幾十篇博文,但這本書也不僅僅是這些博文的總和,它在博文的基礎(chǔ)上添加了如下內(nèi)容:

  本書試圖以面試官的視角來剖析面試題。本書前6章的第一節(jié)都是“面試官談面試”,收錄了分布在不同IT企業(yè)(或者IT部門)的面試官對(duì)代碼質(zhì)量、應(yīng)聘者如何形成及表達(dá)解題思路等方面的理解。在本書中穿插著幾十條“面試小提示”,是我作為面試官給應(yīng)聘者在面試方法、技巧方面的建議。在第7章的案例中,“面試官心理”揭示了面試官在聽到應(yīng)聘者不同回答時(shí)的心理活動(dòng)。應(yīng)聘者如果能了解面試官的心理活動(dòng),則無疑能在面試時(shí)更好地表現(xiàn)自己。

  本書總結(jié)了解決面試難題的常用方法,而不僅僅是解決一道道零散的題目。在仔細(xì)分析、解決了幾十道典型的面試題之后,我發(fā)現(xiàn),其實(shí)是有一些通用的方法可以在面試的時(shí)候幫助我們解題的。舉個(gè)例子,如果面試的時(shí)候遇到的題目很難,那么我們可以試著把一個(gè)大的、復(fù)雜的問題分解成若干個(gè)小的、簡單的子問題,然后遞歸地去解決這些子問題。再比如,我們可以用數(shù)組實(shí)現(xiàn)一個(gè)簡單的哈希表解決一系列與字符串相關(guān)的面試題。在詳細(xì)分析了一道面試題之后,很多章節(jié)都會(huì)在“相關(guān)題目”中列舉同類型的面試題,并在“舉一反三”中總結(jié)解決這一類型題目的方法和要點(diǎn)。

  本書收集的面試題都是各大公司的編程面試題,極具實(shí)戰(zhàn)意義。包括Google、微軟在內(nèi)的知名IT企業(yè)在招聘的時(shí)候都非常重視應(yīng)聘者的編程能力,編程技術(shù)面試也是整個(gè)面試流程中最為重要的環(huán)節(jié)。本書選取的題目都是被各大公司面試官反復(fù)采用的編程題。如果讀者一開始覺得書中的有些題目比較難,那也正常,沒有必要感到氣餒,因?yàn)橄馟oogle、微軟、阿里巴巴、騰訊這樣的大企業(yè)的面試本身就不簡單。讀者逐步掌握了書中總結(jié)的解題方法之后,編程能力和分析復(fù)雜問題的能力將會(huì)得到很大的提升,再去大公司面試將會(huì)輕松很多。

  本書附帶提供了80道編程題的完整的源代碼,其中包含每道題的測試用例。很多面試官在應(yīng)聘者寫完程序之后,都會(huì)要求應(yīng)聘者自己想一些測試用例來測試自己的代碼,一些沒有實(shí)際項(xiàng)目開發(fā)經(jīng)驗(yàn)的應(yīng)聘者不知道如何進(jìn)行單元測試。相信讀者在讀完本書后就會(huì)知道如何從基本功能測試、邊界值測試、性能測試等方面去設(shè)計(jì)測試用例,從而提高編寫高質(zhì)量代碼的能力。

  本書體例

  在本書的正文中間或者章節(jié)的末尾穿插了不少特殊體例。這些體例或用來給應(yīng)聘者提出建議,或用來總結(jié)解題方法,希望能夠引起讀者的注意。

  面試小提示:

  本條目是從面試官的角度給應(yīng)聘者提出的建議,或者希望應(yīng)聘者能夠注意到的細(xì)節(jié)。

  源代碼:

  讀者將在本條目看到一個(gè)指向GitHub的鏈接,可以到對(duì)應(yīng)的網(wǎng)頁上瀏覽代碼。同時(shí),讀者也可以把代碼下載到本地,用Visual Studio打開CodingInterviewChinese2.sln文件閱讀或者調(diào)試代碼。

  測試用例:

  本條目列舉應(yīng)聘者在面試時(shí)可以用來測試代碼是否完整、魯棒的單元測試用例。通常本書從基本功能、邊界值、無效的輸入等方面測試代碼的完整性和魯棒性,針對(duì)在時(shí)間效率或者空間效率方面有要求的面試題還包含性能測試的測試用例。

  本題考點(diǎn):

  本條目總結(jié)面試官采用一道面試題的考查要點(diǎn)。

  相關(guān)題目:

  本條目列舉一些和詳細(xì)分析的面試題相關(guān)或者類似的面試題。

  舉一反三:

  本條目從解決面試?yán)}中提煉出常用的解題方法。這些解題方法能夠應(yīng)用到解決其他同類型的問題中去,達(dá)到舉一反三的目的。

  面試官心理:

  在第7章的面試案例中,本條目用來模擬面試官聽到應(yīng)聘者的回答之后的心理活動(dòng)。

  關(guān)于遺漏的問題

  由于時(shí)間倉促,再加上筆者的能力有限,書中難免會(huì)有一些遺漏。今后一旦發(fā)現(xiàn)遺漏的問題,我將第一時(shí)間在博客(http://zhedahht.blog.163. com/)上公布勘誤信息。讀者如果發(fā)現(xiàn)任何問題或者有任何建議,那么也請(qǐng)?jiān)诓┛蜕狭粞浴⒃u(píng)論,或者通過電子郵件(zhedahht@hotmail.com)和我聯(lián)系。

  致謝

  在寫博客及把博文整理成書的過程中,我得到了很多人的幫助。沒有他們,也就沒有這本書。因此,我想在這里對(duì)他們誠摯地說一聲:謝謝!

  首先我要謝謝個(gè)人博客上的讀者。網(wǎng)友的鼓勵(lì)讓我在博客上的寫作從2007年2月開始堅(jiān)持到了現(xiàn)在。也正是由于網(wǎng)友的鼓勵(lì),我最終下定決心把博文整理成一本書。

  在本書的寫作過程中,我得到了很多同學(xué)、同事的幫忙,包括Autodesk的馬凌洲、劉景勇、王海波、藍(lán)誠,支付寶的殷焰,百度的張珺、張曉禹,英特爾的尹彥,交通銀行的朱麟,淘寶的堯敏,微軟的陳黎明、田超,英偉達(dá)的吳斌,SAP的何幸杰和華為的韓偉東(在書稿寫作階段他還在盛大工作)。感謝他們和大家分享了對(duì)編程面試的理解和思考。同時(shí)還要感謝GlaxoSmithKline Investment的Recruitment & HRIS Manager蔡詠來(也是2008年把我招進(jìn)微軟的HR)和大家分享了微軟所推崇的STAR簡歷模型。還要感謝在微軟期間我的兩個(gè)老板徐鵬陽和Matt Gibbs,他們都是在微軟有十幾年面試經(jīng)驗(yàn)的資深面試官,對(duì)面試有著深刻的理解。感謝二位在百忙之中抽時(shí)間為本書寫序,為本書增色不少。

  我同樣要感謝現(xiàn)在思科的老板Min Lu及TQSG上海團(tuán)隊(duì)的同事王劦、趙斌和朱波對(duì)我的理解。他們?cè)谖覍懽髌陂g替我分擔(dān)了大量的工作,讓我能夠集中更多的精力來寫書。

  感謝電子工業(yè)出版社的工作人員,尤其是張春雨和趙樹剛的幫助。兩位編輯大到全書的構(gòu)架,小到文字的推敲,都給予了我極大的幫助,從而使本書的質(zhì)量有了極大的提升。

  本書還得到了很多朋友的支持和幫助,限于篇幅,雖然不能在此一一說出他們的名字,但我一樣對(duì)他們心存感激。

  最后,我要衷心地感謝我的愛人劉素云。感謝她在過去一年中對(duì)我的理解和支持,為我營造了一個(gè)溫馨而又浪漫的家,讓我能夠心無旁騖地寫書。我無以為謝,謹(jǐn)以此書獻(xiàn)給她及我們的孩子。

  何海濤

  2011年9月8日清晨于上海三涇南宅


點(diǎn)此購買


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)