-
内容大纲
本书是一本全面的Python技术及面试指南,旨在帮助读者深入理解Python编程语言的核心概念,并掌握在技术面试中取得成功的关键技巧。全书分为4个部分。
第一部分面试流程。这一部分详细介绍了硅谷公司的面试流程,包括非技术电话面试、技术电话面试(包括闲谈、技术沟通和提问环节)以及现场面试的准备和策略,既为读者提供了面试前的全面准备指导,也帮助读者在面试中展现出良好状态。
第二部分数据结构。从基础的列表、堆栈、队列、优先队列、字典和集合,到更复杂的链表、二叉树、其他树结构(如前缀树、线段树、二叉索引树)和图的表示与应用,每一章都通过丰富的实例来展示如何巧妙应用这些数据结构。
第三部分算法。这一部分覆盖了二分搜索、双指针法、动态规划、深度优先搜索、回溯、广度优先搜索、并查集等核心算法。结合面试真题,通过逐步分析,引导读者掌握每种算法的思想及其在解决实际问题中的应用。
第四部分系统设计。理论知识部分,从设计需求分析到高层构建,然后到具体组件设计,再到扩展设计,帮助读者理解如何构建可扩展、高效的系统架构。 -
作者介绍
-
目录
前言
第一部分 面试流程
第1章 硅谷公司面试流程
1.1 非技术电话面试
1.2 技术电话面试
1.2.1 闲谈环节
1.2.2 技术沟通环节
1.2.3 提问环节
1.3 现场面试
1.3.1 准备好闲谈素材
1.3.2 保持积极沟通
第二部分 数据结构
第2章 列表
2.1 列表的基础知识
2.1.1 创建列表
2.1.2 向列表中添加元素
2.1.3 删除列表中的元素
2.2 实例1:最长连续1的个数
2.3 实例2:二进制相加
2.4 实例3:查询范围和
2.4.1 利用一维数组求解
2.4.2 利用二维数组求解
2.5 实例4:随机索引
2.6 实例5:下一个更大排列
2.7 实例6:验证有效数字
2.8 实例7:递归小数
第3章 堆栈
3.1 堆栈的基础知识
3.1.1 堆栈操作及时间复杂度
3.1.2 3种实现方式
3.1.3 堆栈的应用
3.2 实例1:通过最小移除操作得到有效的括号
3.3 实例2:函数的专用时间
第4章 队列
4.1 队列的3种实现方式
4.2 实例1:设计循环队列
4.3 实例2:求和大于K的最短非空连续子数组的长度
第5章 优先队列
5.1 优先队列的3种实现方式
5.2 实例1:雇用K个工人的最低成本
5.3 实例2:判断数组是否可以拆分为连续的子序列
第6章 字典
6.1 字典的基础知识
6.1.1 创建字典
6.1.2 向字典中添加元素
6.1.3 访问字典中的元素
6.1.4 从字典中删除元素
6.2 实例1:和等于K的连续子数组的总数
6.3 实例2:标签中的最大值
6.4 实例3:以平均时间复杂度O(1)实现插入、删除和获取随机值
6.5 实例4:最近最少使用缓存
第7章 集合
7.1 集合的基础知识
7.2 集合的基本操作
7.2.1 添加元素
7.2.2 删除元素
7.2.3 并集
7.2.4 交集
第8章 链表
8.1 双指针技术
8.2 实例1:判断链表是否有循环
8.3 实例2:两个链表的交集
8.4 实例3:克隆随机链表
8.5 实例4:反转链表
第9章 二叉树
9.1 层次顺序遍历
9.1.1 前序遍历
9.1.2 中序遍历
9.1.3 后序遍历
9.1.4 层序遍历
9.2 递归方法用于树的遍历
9.2.1 自上而下的解决方案
9.2.2 自下而上的解决方案
9.3 实例1:二叉树的最低共同祖先
9.4 实例2:序列化和反序列化二叉树
9.5 实例3:求二叉树的最大路径和
9.6 实例4:将二叉树转换为双链表
第10章 其他树结构
10.1 前缀树
10.1.1 前缀树节点的数据结构
10.1.2 在前缀树中插入单词
10.1.3 在前缀树中搜索单词
10.2 线段树
10.3 二叉索引树
10.3.1 二叉索引树的表示
10.3.2 getSum操作
10.3.3 update操作
10.3.4 二叉索引树的工作原理
10.4 实例1:范围和的个数
10.4.1 利用线段树求解
10.4.2 利用二叉索引树求解
10.4.3 利用二分搜索求解
10.5 实例2:计算后面较小数字的个数
10.5.1 二叉索引树解法
10.5.2 二分搜索解法
10.5.3 线段树解法
第11章 图
11.1 图的表示
11.1.1 邻接矩阵
11.1.2 邻接表
11.2 实例1:克隆图
11.3 实例2:图验证树
11.3.1 深度优先搜索解法
11.3.2 广度优先搜索解法
11.3.3 并查集解法
第三部分 算法
第12章 二分搜索
12.1 实例1:求平方根
12.2 实例2:在旋转排序数组中搜索
12.3 案例3:会议室预订问题
12.3.1 问题1:如何优化
12.3.2 问题2:如何预订多个房间
第13章 双指针法
13.1 实例1:稀疏向量的点积
13.2 实例2:最小窗口子字符串
13.3 实例3:间隔列表相交
13.4 实例4:最长连续1的个数
13.5 实例5:查找字符串中的所有字母
第14章 动态规划
14.1 动态规划的基础知识
14.2 实例1:买卖股票的最佳时间
14.3 实例2:硬币找零
14.4 实例3:计算解码方式总数
第15章 深度优先搜索
15.1 深度优先搜索的应用
15.2 实例1:太平洋和大西洋的水流问题
15.3 实例2:预测获胜者
15.4 实例3:表达式加运算符
第16章 回溯
16.1 实例1:数独求解
16.2 实例2:扫地机器人
第17章 广度优先搜索
17.1 广度优先搜索的应用
17.2 实例1:墙和门
17.3 实例2:课程表
17.4 实例3:公交路线
17.5 实例4:判断二分图
17.6 实例5:单词阶梯
第18章 并查集
18.1 并查集的基础知识
18.2 实例:朋友圈
18.2.1 广度优先搜索解法
18.2.2 深度优先搜索解法
18.2.3 并查集解法
第19章 数据结构与算法面试真题实战
19.1 实例1:文件系统
19.1.1 关于数据结构的探讨
19.1.2 面试题考查点
19.1.3 完整代码
19.2 实例2:最长有效词
19.2.1 找到更快的解决方案
19.2.2 基于存储/缓存的解决方案
19.2.3 面试题考查点
19.3 实例3:圆圈组
19.3.1 圆圈组的个数
19.3.2 最大的k个圆圈组
第四部分 系统设计
第20章 系统设计理论
20.1 设计步骤
20.1.1 描述使用场景、约束和假设
20.1.2 构建高层设计
20.1.3 设计核心组件
20.1.4 扩展设计
20.2 域名系统
20.3 负载均衡器
20.4 分布式缓存系统
20.5 哈希一致性
第21章 系统设计实战
21.1 设计分布式缓存系统
21.1.1 缓存无效
21.1.2 缓存逐出策略
21.1.3 设计分布式键值缓存系统
21.2 设计网络爬虫系统
21.2.1 架构设计
21.2.2 爬虫服务
21.2.3 处理重复链接
21.2.4 更新爬网结果
21.2.5 可扩展性设计
21.3 TinyURL的加密与解密
21.3.1 系统的要求和目标
21.3.2 容量估算和约束
21.3.3 系统API
21.3.4 核心算法设计
21.3.5 数据库设计
21.3.6 数据分区和复制
21.3.7 缓存
21.3.8 负载均衡器
21.4 设计自动补全功能
21.4.1 基本系统设计与算法
21.4.2 主数据结构
21.4.3 优化设计
21.5 设计新闻动态功能
21.6 设计X(Twitter)应用
21.7 设计Uber/Lyft应用
第22章 多线程编程
22.1 多线程面试问题
22.2 实例1:形成水分子
22.3 实例2:打印零、偶数、奇数
第23章 设计机器学习系统
23.1 机器学习的基础知识
23.1.1 什么是机器学习
23.1.2 为什么使用机器学习
23.1.3 监督学习和无监督学习
23.1.4 分类模型和回归模型
23.1.5 转换问题
23.1.6 关键数据
23.1.7 机器学习工作流程
23.1.8 欠拟合和过拟合
23.1.9 偏差和方差
23.2 机器学习的进阶知识
23.2.1 处理不平衡的二进制分类
23.2.2 高斯混合模型和K均值的比较
23.2.3 梯度提升
23.2.4 决策树的约束
23.2.5 加权更新
23.2.6 随机梯度提升
23.2.7 惩罚性学习
23.3 机器学习面试
23.3.1 机器学习面试考查点
23.3.2 机器学习面试的思路
23.4 实例1:搜索排名系统
23.4.1 题目解读
23.4.2 指标分析
23.4.3 架构
23.4.4 结果选择
23.4.5 训练数据生成
23.4.6 排名
23.4.7 筛选结果
23.5 实例2:Netflix电影推荐系统
23.5.1 题目解读
23.5.2 指标分析
23.5.3 架构
23.5.4 特征工程
23.5.5 候选电影的产生
23.5.6 训练数据生成
23.5.7 排名
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...