|
-- 會員 / 註冊 --
|
|
|
|
進軍硅谷 –程序員面試揭秘 ( 簡體 字) |
作者:陳東鋒 | 類別:1. -> 程式設計 -> 面試指南 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 37953 詢問書籍請說出此書號!【缺書】 NT售價: 275 元 |
出版日:3/1/2014 |
頁數:320 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121225666 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:隨著越來越多IT 工程師尋找國外工作機會,介紹和總結國外熱門IT 公司面試過程 及面試內容的需求尤為迫切。美國最新移民改革CIR 方案更傾向于技術移民,這將使得 今后會有更多國內程序員去美國工作。筆者親身參與了國內和美國一些熱門IT 公司的 面試,同時也作為面試官面試過不少人,熟知海內外IT 公司招聘流程和面試方式。通 常來說,去美國IT 公司工作有三種途徑。 直接申請美國公司職位,拿H1B 簽證工作。不少熱門IT 公司直接在國內招人, 比如Facebook、Twitter、Microsoft、Google 等。越來越多的程序員選擇這條路, 一方面是因為美國簽證放寬了,另一方面是硅谷公司面試并沒有比國內公司難多 少。 在國內的跨國公司工作一年后,內部轉組到美國的分部,使用L1 簽證。例如, 從微軟中國轉至微軟西雅圖總部工作。 申請攻讀美國學校的計算機科學碩士或博士學位,畢業后再找工作,即由F1 簽 證轉為H1B 簽證。 這三種途徑都需要成功通過公司技術面試。熱門IT 企業的面試方式大致相同:1∼ 2 輪電話面試,通過之后,又有4∼5 輪的現場面談。其中80%的面試是技術面試,每 前言 V 輪技術面試大約45 分鐘,扣除雙方自我介紹和提問時間,花在技術面試的時間大約為 30 分鐘。由于技術面試時間的限制,面試的題目一般不會太難,比大學生編程比賽 (ACM)的題目簡單很多,但是,面試者需要一些編程面試技巧,以及對算法、數據結 構熟練掌握才能在限定時間內完成。這對要求在白板上寫程序和無Bug(Bug free)的 公司來說尤其重要,比如Facebook。 在編程面試過程中,光有解法卻寫不出來代碼是行不通的,這只會讓面試官覺得你 只會夸夸其談,不會編程而已。在編程面試里,切記“讓代碼說話”這條準則。在本書 面試題相關的章節中,筆者貼出了面試題的全部代碼,是為了更多時候讓代碼來說話。 針對每道面試題,我們通常會有如下步驟。 復述/提問:用自己的話復述面試官的題目,以免偏題。面試官給出的面試題并 非一開始就很明確,需要多次問答來確定題意、邊界條件、時間和數據結構限制 等。 舉例:可以與提問同步進行,主要用來確認輸入和輸出結果。 觀察:通過舉例來總結規律,思考可能使用到的結構和算法,然后設計一種你認 為最優的算法。 編碼:和面試官溝通你的算法之后,開始在白板編碼。 測試:使用個別例子,把你的代碼測試一遍。 在以上5 個步驟里,看時間是否充裕,有些步驟可以省略。比如,如果面試官已經 把問題說得很清楚了,那么復述可以省略。在本書當中,筆者也會按照這5 個步驟的解 題技巧來闡述面試題的解題方案。 筆者根據自身作為面試官的多年經歷,并收集了網上眾多的熱門IT 公司面試題目, 精選了150 道題來代表當前熱門和高頻的面試題。本書內容覆蓋了基礎的數據結構:數 組、鏈表、樹、堆棧、字符串等,以及高頻率出現的算法,如動態規劃、倆指針、排列 組合、優先遍歷等。本書的內容分為以下四個部分。 進軍硅谷 程序員面試揭秘 VI 硅谷求職和面試:硅谷公司文化、技術移民、簡歷、面試和錄用談判。 常見數據結構:數組、鏈表、樹和圖、堆棧、字符串。 算法:動態規劃、倆指針、優先遍歷、哈希、排列組合。 雜項:系統設計、海量數據分析、面向對象設計、數學和位操作。 此外,附錄還提供了數據結構和算法總結以及海量數據分析,以供讀者快速查閱。 本書含有以下幾個特點。 本書是市面上第一本介紹硅谷求職和技術移民美國的書。 精選出的面試題是硅谷各家熱門公司的高頻題,極其具有代表性。 總結了常見數據結構的對應算法,提煉出一套解題規律。對于類似題目,有著強 烈的借鑒意義。 本書提供了完整的可運行的源代碼。 對于每道題,本書盡可能給出多種解法,對我們在日常工作中遇到問題時有一定 啟發性。 雖然本書大部分的代碼是用Java 編寫,但很容易轉化為C++/.NET 代碼,因此,本 書也適合C++/.NET 程序員閱讀。 由于本人水平有限,書中的題目并不能完全代表當前熱門公司的編程面試的各個方 面,雖然經過多輪審核,不少解法依然可能有漏洞或者錯誤,希望廣大讀者能給予指正。 我已經搭建了一個關于程序員出國工作的網站“i 碼工”(http://www.imagong.com)和讀 者交流。 在本書的寫作過程中,我得到了很多朋友、同事的幫忙,包括汪純子、周澤勇、俞 明輝、吳盛萱、楊超、尹杭鋒和于東東等。感謝他們幫忙校對文字、審核代碼。同時, 感謝電子工業出版社的工作人員,尤其是符隆美的幫助。感謝她從大到全書的架構,小 到文字的推敲,都給予了我極大的幫助,從而使本書的質量有了極大的提升。最后,我要衷心地感謝我的妻子徐淼。感謝她在過去幾年中對我的理解和支持,為 我營造了一個溫馨而浪漫的家,讓我能夠心無旁騖地寫書。謹以此書獻給她以及我們的 女兒Ella。 陳東鋒 2013 年10 月于上海張江 |
內容簡介:本書介紹了如何在硅谷求職,以及剖析了具有代表性的150道熱門硅谷公司的面試題,從面試技巧、基礎知識、解題思路和效率優化等方面總結面試和解題規律。全書分為四部分共19章,包含出國工作途徑、IT求職準備等,以及常見數據結構、算法、大數據、系統設計和面向對象語言等方面的題目和解題思路,并提煉出解題的5個步驟:復述/提問、舉例、觀察、編碼和測試。本書精選出的面試題是硅谷熱門公司的高頻題,可以用來做面試前的練習。對于每道題,本書盡可能給出多種解法,對日常工作中遇到問題時有一定啟發性。 |
目錄:第一部分 硅谷求職 第1 章 硅谷公司3 1.1 硅谷簡介3 1.2 傳奇旗幟 7 1.2.1 微軟 8 1.2.2 谷歌9 1.2.3 亞馬遜 10 1.2.4 Twitter 12 1.2.5 Epic12 1.3 技術移民 13 1.3.1 簽證和綠卡 14 1.3.2 稅率和生活 16 第2 章 求職準備 19 2.1 職位選擇 21 目錄 IX 2.2 公司選擇 22 2.3 人際關系 24 2.4 求職渠道 27 第3 章 簡歷 29 3.1 簡歷特點30 3.2 簡歷結構 33 3.3 簡歷優化 35 第4 章 面試 39 4.1 面試流程 40 4.2 編程面試 42 4.3 注意事項 43 第5 章 聘書與職業發展47 5.1 聘書 48 5.1.1 聘書要素 48 5.1.2 決策因子 49 5.1.3 薪酬談判 52 5.1.4 接受、延期或婉拒54 5.2 職業發展 55 第二部分 數據結構 第6 章 數組 59 面試題1:兩數之和I ☆☆ 59 面試題2:兩數之和II ☆☆☆61 進軍硅谷 程序員面試揭秘 X 面試題3:兩數之和III ☆☆☆☆ 62 面試題4:數組旋轉 ☆☆☆ 64 面試題5:最大下標距離 ☆☆☆☆ 65 面試題6:重疊區間個數 ☆☆ 67 面試題7:插入區間 ☆☆☆ 69 面試題8:合并區間 ☆☆☆☆71 面試題9:數組配對 ☆☆☆ 72 面試題10:數位重組 ☆☆☆73 面試題11:產生隨機數 ☆☆ 75 面試題12:Top K I ☆☆☆ 76 面試題13:Top K II ☆☆☆☆79 面試題14:兩數組第k 個值 ☆☆☆☆☆ 80 面試題15:兩數組中值 ☆☆☆☆☆ 82 面試題16:旋轉數組最小值 ☆☆☆ 84 面試題17:旋轉數組搜索 ☆☆☆85 面試題18:首個正數 ☆☆☆☆86 面試題19:合并有序數組 ☆☆88 面試題20:三角形 ☆☆ 89 面試題21:二維數組搜索 ☆☆☆90 面試題22:區間搜索 ☆☆☆☆92 面試題23:插入位置 ☆☆ 94 面試題24:矩陣清零 ☆☆☆ 95 面試題25:螺旋矩陣 ☆☆☆☆ 98 第7 章 鏈表101 面試題26:合并鏈表 ☆☆ 102 目錄 XI 面試題27:環的長度 ☆☆☆ 103 面試題28:反轉鏈表 ☆☆105 面試題29:分組反轉鏈表 ☆☆☆☆ 109 面試題30:兩數相加 ☆☆☆110 面試題31:鏈表分區 ☆☆☆ 112 面試題32:鏈表去重 ☆ 114 第8 章 樹117 面試題33:二叉搜索樹轉為雙向鏈表 ☆☆☆☆118 面試題34:最小公共祖先I ☆☆ 120 面試題35:最小公共祖先II ☆☆☆121 面試題36:最小公共祖先III ☆☆☆☆124 面試題37:最小公共祖先IV ☆☆☆☆ 125 面試題38:路徑和I ☆☆128 面試題39:路徑和II ☆☆☆☆ 129 面試題40:平衡二叉樹 ☆☆☆☆ 131 面試題41:樹的鏡像 ☆☆ 132 面試題42:中序下個節點 ☆☆☆ 134 面試題43:二叉搜索樹近值 ☆☆☆ 135 面試題44:二叉搜索樹KNN ☆☆☆☆136 面試題45:實現二叉搜索樹迭代器 ☆☆☆☆ 138 面試題46:充實橫向指針 ☆☆☆ 140 面試題47:恢復二叉搜索樹 ☆☆☆☆ 142 面試題48:按層遍歷二叉樹 ☆☆☆ 144 面試題49:二叉樹最大路徑和 ☆☆☆☆ 145 進軍硅谷 程序員面試揭秘 XII 第9 章 字符串 148 面試題50:字符判重 ☆☆☆ 148 面試題51:產生括號 ☆☆☆☆ 150 面試題52:提取單詞I ☆☆☆☆ 151 面試題53:提取單詞II ☆☆☆☆ 153 面試題54:字符交替 ☆☆☆ 154 面試題55:字符串相乘 ☆☆☆☆ 155 面試題56:數字驗證 ☆☆☆ 157 面試題57:字符串轉為十進制數 ☆☆ 160 面試題58:提取IP 地址 ☆☆☆ 161 面試題59:正則匹配 ☆☆☆☆☆ 163 第三部分 算法 第10 章 倆指針 167 面試題60:有序數組去重 ☆ 167 面試題61:三數之和 ☆☆☆ 169 面試題62:股票買賣 ☆☆ 171 面試題63:三色排序 ☆☆☆☆ 172 面試題64:蛙跳 ☆☆☆ 174 面試題65:容器盛水I ☆☆☆ 176 面試題66:容器盛水II ☆☆☆☆ 177 面試題67:數組分水嶺 ☆☆☆ 179 第11 章 動態規劃 181 面試題68:最長遞增子序列 ☆☆☆☆ 182 目錄 XIII 面試題69:最小化數組乘積 ☆☆☆☆ 183 面試題70:股票買賣II ☆☆☆☆ 185 面試題71:數組最大和 ☆☆☆ 186 面試題72:二維數組最小路徑和 ☆☆☆ 187 面試題73:三角形最小路徑 ☆☆☆ 188 面試題74:爬樓梯 ☆☆ 189 面試題75:迷宮路徑數 ☆☆ 190 面試題76:刷房子 ☆☆☆ 192 面試題77:數字解碼 ☆☆☆ 193 面試題78:子串個數 ☆☆☆☆ 194 面試題79:編輯距離 ☆☆☆☆ 196 面試題80:交替字符串 ☆☆☆☆☆ 197 面試題81:最長回文子串 ☆☆☆☆☆ 198 面試題82:回文分割 ☆☆☆☆ 199 面試題83:最大公共子串 ☆☆☆☆ 201 面試題84:字符串洗牌 ☆☆☆☆☆ 202 第12 章 優先遍歷 205 面試題85:填充圖像 ☆☆☆☆ 205 面試題86:封閉區間個數 ☆☆☆☆ 206 面試題87:填充封閉區間 ☆☆☆☆☆ 208 面試題88:單詞查找 ☆☆☆ 210 面試題89:單詞變換 ☆☆☆☆ 211 面試題90:單詞替換規則 ☆☆☆☆ 213 面試題91:有向圖遍歷 ☆☆☆☆ 215 進軍硅谷 程序員面試揭秘 XIV 第13 章 哈希 217 面試題92:最長連續序列 ☆☆☆☆ 217 面試題93:變位詞 ☆☆☆ 218 面試題94:最長不同字符的子串 ☆☆☆☆ 220 面試題95:最小字符窗口 ☆☆☆☆ 221 面試題96:單詞拼接 ☆☆☆☆☆ 223 面試題97:常數時間插入刪除查找 ☆☆☆ 224 面試題98:對數時間范圍查詢 ☆☆☆☆ 225 面試題99:實現LRU 緩存 ☆☆☆☆ 226 面試題100:經過最多點的直線 ☆☆☆ 229 第14 章 堆棧 232 面試題101:局部最大值 ☆☆☆ 232 面試題102:數據流最大值 ☆☆☆☆ 234 面試題103:最大四方形 ☆☆☆☆☆ 235 面試題104:合并多個有序鏈表 ☆☆☆☆ 239 面試題105:產生逆波蘭式 ☆☆☆ 240 面試題106:逆波蘭式計算 ☆☆☆ 241 面試題107:簡化文件路徑 ☆☆☆ 243 面試題108:括號驗證 ☆☆ 244 面試題109:最長有效括號 ☆☆☆ 245 面試題110:設計Min 棧 ☆☆☆☆ 247 面試題111:中序遍歷 ☆☆☆ 248 面試題112:打印路徑 ☆☆☆☆ 249 面試題113:二叉搜索樹兩點之和 ☆☆☆☆ 251 面試題114:矩陣Top K ☆☆☆☆ 253 目錄 XV 第15 章 排列組合 256 面試題115:翻譯手機號碼 ☆☆☆ 256 面試題116:數組簽名 ☆☆☆☆ 258 面試題117:組合和 ☆☆☆ 259 面試題118:子集合 ☆☆☆ 262 面試題119:全排列 ☆☆☆ 264 面試題120:下一個排列 ☆☆☆☆☆ 266 面試題121:N 皇后 ☆☆☆☆ 268 第四部分 綜合面試題 第16 章 數學 273 面試題122:Fibonacci 數 ☆ 273 面試題123:求冪 ☆☆☆ 274 面試題124:求開方 ☆☆☆☆ 275 面試題125:隨機數產生器 ☆☆☆☆☆ 276 面試題126:找出明星 ☆☆☆ 277 面試題127:聚合數 ☆☆☆ 278 面試題128:根據概率分布產生隨機數 ☆☆☆☆ 279 面試題129:隨機采樣 ☆☆☆ 280 面試題130:數組元素乘積 ☆☆☆ 281 面試題131:訪問計數 ☆☆☆ 282 第17 章 位操作 283 面試題132:isPowerOf2() ☆☆ 283 面試題133:isPowerOf4() ☆☆☆☆ 284 進軍硅谷 程序員面試揭秘 XVI 面試題134:兩數相除 ☆☆☆☆ 284 面試題135:不用加減乘除做加法 ☆☆☆ 285 面試題136:實現BitSet 類 ☆☆☆ 286 面試題137:爬樓梯II ☆☆☆ 287 面試題138:只出現一次的數字 ☆☆ 288 第18 章 面向對象 289 面試題139:實現迭代器peek() ☆☆☆ 289 面試題140:實現復雜的迭代器 ☆☆☆☆ 290 面試題141:實現BlockingQueue ☆☆☆ 292 面試題142:Java 字節碼編入 ☆☆ 293 面試題143:依賴注入 ☆☆ 294 第19 章 雜項 295 面試題144:垃圾回收機制 ☆☆☆ 295 面試題145:程序崩潰 ☆☆☆☆ 296 面試題146:實現任意讀 ☆☆☆☆ 297 面試題147:實現讀一行 ☆☆☆ 298 面試題148:統計電話號碼個數 ☆☆☆ 299 面試題149:海量數據高頻詞 ☆☆☆ 300 面試題150:多臺機器的中值 ☆☆☆☆ 300 |
序: |
|