《进军硅谷》陈东锋 | PDF下载|ePub下载
类别: 计算机
内容简介 · · · · · ·
《进军硅谷——程序员面试揭秘》介绍了如何在硅谷求职,以及剖析了具有代表性的150道热门硅谷公司的面试题,从面试技巧、基础知识、解题思路和效率优化等方面总结面试和解题规律。《进军硅谷——程序员面试揭秘》分为四部分共19章,包含出国工作途径、IT求职准备等,以及常见数据结构、算法、大数据、系统设计和面向对象语言等方面的题目和解题思路,并提炼出解题的5个步骤:复述/提问、举例、观察、编码和测试。《进军硅谷——程序员面试揭秘》精选出的面试题是硅谷热门公司的高频题,可以用来作为面试前的练习。对于每道题,《进军硅谷——程序员面试揭秘》尽可能给出多种解法,对日常工作中遇到的问题也有一定启发性。
《进军硅谷——程序员面试揭秘》适合正在应聘程序员相关职位的就业人员阅读和参考,特别是打算寻求美国IT公司职位并想通过技术移民实现美国梦的程序员。
作者简介 · · · · · ·
陈东锋,博士毕业于北卡罗来纳州立大学,就职于IBM总部、微软总部和百度,创办过一家互联网公司。
作为面试官,面试了中美两地不下百个候选者。
目录 · · · · · ·
第一部分 硅谷求职
第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 Epic 12
1.3 技术移民 13
1.3.1 签证和绿卡 14
1.3.2 税率和生活 16
第2章 求职准备 19
2.1 职位选择 21
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
面试题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
面试题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
第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
面试题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
第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
第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
面试题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
附录A 数据结构与算法 302
附录B 海量数据结构 303
· · · · · ·
第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 Epic 12
1.3 技术移民 13
1.3.1 签证和绿卡 14
1.3.2 税率和生活 16
第2章 求职准备 19
2.1 职位选择 21
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
面试题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
面试题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
第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
面试题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
第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
第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
面试题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
附录A 数据结构与算法 302
附录B 海量数据结构 303
· · · · · ·
发表回复
要发表评论,您必须先登录。