出版時(shí)間:2012-1 出版社:電子工業(yè)出版社 作者:何海濤 頁(yè)數(shù):260
Tag標(biāo)簽:無(wú)
內(nèi)容概要
本書剖析了50個(gè)典型的程序員面試題,從基礎(chǔ)知識(shí)、代碼質(zhì)量、解題思路、優(yōu)化效率和綜合能力五個(gè)方面系統(tǒng)整理了影響面試的5個(gè)要點(diǎn)。全書分為7章,主要包括面試的流程,討論面試流程中每一環(huán)節(jié)需要注意的問題;面試需要的基礎(chǔ)知識(shí),從編程語(yǔ)言、數(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)聘者可以利用畫圖、舉例和分解復(fù)雜問題3種方法化繁為簡(jiǎn),先形成清晰的思路再動(dòng)手編程;優(yōu)化時(shí)間和空間效率,介紹如何優(yōu)化代碼的時(shí)間效率和空間效率,讀完這一章讀者將學(xué)會(huì)常用的優(yōu)化時(shí)間效率及空間換時(shí)間的常用算法,從而在面試中找到最優(yōu)的解法;面試中的各種能力,本章總結(jié)應(yīng)聘者在面試過程中如何表現(xiàn)學(xué)習(xí)能力和溝通能力,并通過具體的面試題討論如何培養(yǎng)知識(shí)遷移能力、抽象建模能力和發(fā)散思維能力;兩個(gè)面試案例,這兩個(gè)案例總結(jié)了應(yīng)聘者在面試過程中哪些舉動(dòng)是不好的行為,而哪些表現(xiàn)又是面試官所期待的行為。
本書適合即將走向工作崗位的大學(xué)生閱讀,也適合作為正在應(yīng)聘軟件行業(yè)的相關(guān)就業(yè)人員和計(jì)算機(jī)愛好者的參考書。
作者簡(jiǎn)介
何海濤,現(xiàn)思科高級(jí)軟件工程師,曾先后就職于Autodesk和微軟。分別于2003年和2006年于浙江大學(xué)獲得計(jì)算機(jī)專業(yè)學(xué)士和碩士學(xué)位。主要關(guān)注程序員求職應(yīng)聘領(lǐng)域、以及軟件設(shè)計(jì)、開發(fā)和調(diào)試技術(shù)。著有《劍指Offer——名企面試官精講典型編程題》一書。
書籍目錄
第1章 面試的流程
1.1 面試官談面試
1.2 面試的三種形式
1.2.1 電話面試
1.2.2 共享桌面遠(yuǎn)程面試
1.2.3 現(xiàn)場(chǎng)面試
1.3 面試的三個(gè)環(huán)節(jié)
1.3.1 行為面試環(huán)節(jié)
應(yīng)聘者的項(xiàng)目經(jīng)驗(yàn)
應(yīng)聘者掌握的技能
回答“為什么跳槽”
1.3.2 技術(shù)面試環(huán)節(jié)
扎實(shí)的基礎(chǔ)知識(shí)
高質(zhì)量的代碼
清晰的思路
優(yōu)化效率的能力
優(yōu)秀的綜合能力
1.3.3 應(yīng)聘者提問環(huán)節(jié)
1.4 本章小結(jié)
第2章 面試需要的基礎(chǔ)知識(shí)
2.1 面試官談基礎(chǔ)知識(shí)
2.2 編程語(yǔ)言
2.2.1 C++ 面試題1:賦值運(yùn)算符函數(shù)
經(jīng)典的解法,適用于初級(jí)程序員
考慮異常安全性的解法,高級(jí)程序員必備
2.2.2 C#
面試題2:實(shí)現(xiàn)Singleton模式
不好的解法一:只適用于單線程
不好的解法二:可用于多線程但效率不高
可行的解法:同步鎖前后兩次判斷
推薦的解法一:利用靜態(tài)構(gòu)造函數(shù)
推薦的解法二:按需創(chuàng)建實(shí)例
解法比較
2.3 數(shù)據(jù)結(jié)構(gòu)
2.3.1 數(shù)組
面試題3:二維數(shù)組中的查找
2.3.2 字符串
面試題4:替換空格 O(n2)的解法,不足以拿到Offer
(n)的解法,搞定Offer就靠它
2.3.3 鏈表
面試題5:從尾到頭打印鏈表
2.3.4 樹
面試題6:重建二叉樹
2.3.5 棧和隊(duì)列
面試題7:用兩個(gè)棧實(shí)現(xiàn)隊(duì)列
2.4 算法和數(shù)據(jù)操作
2.4.1 查找和排序
面試題8:旋轉(zhuǎn)數(shù)組的最小數(shù)字
2.4.2 遞歸和循環(huán)
面試題9:斐波那契數(shù)列
效率很低的解法,面試官不會(huì)喜歡
面試官期待的實(shí)用解法O(logn)但不夠?qū)嵱玫慕夥?br /> 解法比較
2.4.3 位運(yùn)算
面試題10:二進(jìn)制中1的個(gè)數(shù)
可能引起死循環(huán)的解法
常規(guī)解法
能給面試官帶來(lái)驚喜的解法
2.5 本章小結(jié)
第3章 高質(zhì)量的代碼
3.1 面試官談代碼質(zhì)量
3.2 代碼的規(guī)范性
3.3 代碼的完整性
從3方面確保代碼的完整性
3種錯(cuò)誤處理的方法
面試題11:數(shù)值的整數(shù)次方
自以為題目簡(jiǎn)單的解法
全面但不夠高效的解法,離Offer已經(jīng)很近了
全面又高效的解法,確保能拿到Offer
面試題12:打印1到最大的n位數(shù)
跳進(jìn)面試官陷阱
在字符串上模擬數(shù)字加法
把問題轉(zhuǎn)換成數(shù)字排列
面試題13:在O(1)時(shí)間刪除鏈表結(jié)點(diǎn)
面試題14:調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面
只完成基本功能的解法,僅適用于初級(jí)程序員
考慮可擴(kuò)展性的解法,能秒殺Offer
3.4 代碼的魯棒性
面試題15:鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)
面試題16:反轉(zhuǎn)鏈表
面試題17:合并兩個(gè)排序的鏈表
面試題18:樹的子結(jié)構(gòu)
3.5 本章小結(jié)
第4章 解決面試題的思路
面試題19:二叉樹的鏡像
面試題20:順時(shí)針打印矩陣
面試題21:包含min函數(shù)的棧
面試題22:棧的壓入、彈出序列
面試題23:從上往下打印二叉樹
面試題24:二叉搜索樹的后序遍歷序列
面試題25:二叉樹中和為某一值的路徑
面試題26:復(fù)雜鏈表的復(fù)制
面試題27:二叉搜索樹與雙向鏈表
面試題28:字符串的排列
第5章 優(yōu)化時(shí)間空間效率
面試題29:數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字
基于Partition函數(shù)的O(n)算法
利用數(shù)組特點(diǎn)的O(n)算法
解法比較
面試題30:最小的k個(gè)數(shù)O(n)的算法,只當(dāng)可以修改輸入數(shù)組時(shí)可用
O(nlogk)的算法,適合處理海量數(shù)據(jù)
解法比較
面試題31:連續(xù)子數(shù)組的最大和
舉例分析數(shù)組的規(guī)律
應(yīng)用動(dòng)態(tài)規(guī)劃法
面試題32:從1到n整數(shù)中1出現(xiàn)的次數(shù)
不考慮效率的解法,想拿Offer有點(diǎn)難
明顯提高效率的解法,讓面試官耳目一新
面試題33:把數(shù)組排成最小的數(shù)
面試題34:丑數(shù)
逐個(gè)判斷整數(shù)是不是丑數(shù)的解法
創(chuàng)建數(shù)組保存已經(jīng)找到的丑數(shù)的解法
面試題35:第一個(gè)只出現(xiàn)一次的字符
面試題36:數(shù)組中的逆序?qū)?br /> 面試題37:兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)
第6章 面試中的各項(xiàng)能力
6.1 面試官談能力
6.2 溝通能力和學(xué)習(xí)能力
溝通能力
學(xué)習(xí)能力
善于學(xué)習(xí)、溝通的人也善于提問
6.3 知識(shí)遷移能力
面試題38:數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)
面試題39:二叉樹的深度
重復(fù)遍歷結(jié)點(diǎn)的解法,不足以打動(dòng)面試官
只遍歷結(jié)點(diǎn)一次的解法,正是面試官喜歡的
面試題40:數(shù)組中只出現(xiàn)一次的數(shù)字
面試題41:和為s的兩個(gè)數(shù)字VS和為s的連續(xù)正數(shù)序列
面試題42:翻轉(zhuǎn)單詞順序 VS左旋轉(zhuǎn)字符串
6.4 抽象建模能力
面試題43:n個(gè)骰子的點(diǎn)數(shù)
基于遞歸求骰子點(diǎn)數(shù),時(shí)間效率不夠高
基于循環(huán)求骰子點(diǎn)數(shù),時(shí)間性能好
面試題44:撲克牌的順子
面試題45:圓圈中最后剩下的數(shù)字
經(jīng)典的解法,用循環(huán)鏈表模擬圓圈
創(chuàng)新的解法,拿到Offer不在話下
6.5 發(fā)散思維能力
面試題46:求1+2+…+n
利用構(gòu)造函數(shù)求解
利用虛函數(shù)求解
利用函數(shù)指針求解
利用模板類型求解
面試題47:不用加減乘除做加法
面試題48:不能被繼承的類
常規(guī)的解法:把構(gòu)造函數(shù)設(shè)為私有函數(shù)
新奇的解法:利用虛擬繼承
6.6 本章小結(jié)
第7章 兩個(gè)面試案例
7.1 案例一:(面試題49)把字符串轉(zhuǎn)換成整數(shù)
7.2 案例二:(面試題50)樹中兩個(gè)結(jié)點(diǎn)的最低公共祖先
章節(jié)摘錄
版權(quán)頁(yè):插圖:所謂學(xué)習(xí)能力,很重要的一點(diǎn)就是根據(jù)已經(jīng)掌握的知識(shí)、技術(shù),能夠迅速學(xué)習(xí)、理解新的技術(shù)并能運(yùn)用到實(shí)際工作中去。大部分新的技術(shù)都不是憑空產(chǎn)生的,而是在已有技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的。這就要求我們能夠把對(duì)已有技術(shù)的理解遷移到學(xué)習(xí)新技術(shù)的過程中去,也就是要具備很強(qiáng)的知識(shí)遷移能力。以學(xué)習(xí)編程語(yǔ)言為例,如果全面理解了C++的面向?qū)ο蟮乃枷?,那么學(xué)習(xí)下一門面向?qū)ο蟮恼Z(yǔ)言JaVa就不會(huì)很難。在深刻理解了JaVa的垃圾回收機(jī)制之后,再去學(xué)習(xí)另外一門托管語(yǔ)言比如C群,也會(huì)很容易。面試官考查知識(shí)遷移能力的一個(gè)方法是把經(jīng)典的問題稍作變換。這個(gè)時(shí)候面試官期待應(yīng)聘者能夠找到和經(jīng)典問題的聯(lián)系,并從中受到啟發(fā)把解決經(jīng)典問題的思路遷移過來(lái)解決新的問題。比如如果遇到面試題38“數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)”,我們看到“排序數(shù)組”就可以想到二分查找算法。通常二分查找算法用來(lái)在一個(gè)排序數(shù)組中查找一個(gè)數(shù)字。我們可以把二分查找的思想遷移過來(lái)稍作變換,用二分查找算法在排序數(shù)組中查找重復(fù)數(shù)字的第一個(gè)和最后一個(gè),從而得到數(shù)字在數(shù)組中出現(xiàn)的次數(shù)。面試官考查知識(shí)遷移能力的另一個(gè)方法就是先問一個(gè)簡(jiǎn)單的問題,在應(yīng)聘者解答完這個(gè)簡(jiǎn)單的問題之后再追問一個(gè)相關(guān)的同時(shí)難度也更大的問題。這個(gè)時(shí)候面試官希望應(yīng)聘者能夠總結(jié)前面解決簡(jiǎn)單問題的經(jīng)驗(yàn),把前面的思路、方法遷移過來(lái)。比如在面試題40“數(shù)組中只出現(xiàn)一次的數(shù)字”中,面試官先問一個(gè)簡(jiǎn)單的問題即數(shù)組中只有一個(gè)數(shù)字只出現(xiàn)一次的情況。在應(yīng)聘者想出用異或的辦法找到這個(gè)只出現(xiàn)一次的數(shù)字之后,他再追問如果數(shù)組中有兩個(gè)數(shù)字只出現(xiàn)一次,該怎么找出這兩個(gè)數(shù)字?這個(gè)時(shí)候應(yīng)聘者要從前面的思路中得到啟發(fā):既然有辦法找到數(shù)組中只出現(xiàn)一次的一個(gè)數(shù)字,那當(dāng)數(shù)組中有兩個(gè)數(shù)字只出現(xiàn)一次的時(shí)候,我們可以把整個(gè)數(shù)組一分為二,每個(gè)子數(shù)組中包含一個(gè)只出現(xiàn)一次的數(shù)字,這樣我們就能在兩個(gè)子數(shù)組中分別找到那兩個(gè)只出現(xiàn)一次的數(shù)字。接下來(lái)我們就可以集中精力去想辦法把數(shù)組一分為二,這樣就能找到解決問題的竅門,整個(gè)題目的難度系數(shù)就降低了不少。
編輯推薦
《劍指Offer:名企面試官精講典型編程題》:面試官的視角從面試官視角剖析考題構(gòu)思、現(xiàn)場(chǎng)心理、題解優(yōu)劣與面試心得,尚屬首例。50余道編程題《劍指Offer:名企面試官精講典型編程題》精選谷歌、微軟等知名IT企業(yè)的50余道典型面試題,提供多角度的解題輔導(dǎo)。這些題目現(xiàn)今仍被大量面試官反復(fù)采用,實(shí)戰(zhàn)參考價(jià)值頗高。系統(tǒng)的解題方法《劍指Offer:名企面試官精講典型編程題》系統(tǒng)地總結(jié)了如何在面試時(shí)寫出高質(zhì)量代碼,如何優(yōu)化代碼效率,以及分析、解決難題的常用方法。超寫實(shí)體驗(yàn)與感悟Autodesk一微軟一思科,作者一路跳槽-路“面”,既親歷被考,也做過考官,更是資深程序員.大量的一線面試與編程經(jīng)驗(yàn),足當(dāng)確保《劍指Offer:名企面試官精講典型編程題》品質(zhì)。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載