根据面试的不同对象,在招聘过程中你可能需要面对 HR、技术面试官和老板。针对不同的角色,你应该准备不同的面试方式。具体分析如图1-2所示。<sup>[1]</sup>
| 面试官 | 他想要知道 | 可以向其询问 |
| --- | --- | --- |
| 人力资源 | 你是谁?你的职业兴趣是什么? | 公司的整体信息和组织结构;开放的职位 |
| 工程经理 | 你做过什么项目?具备什么技能? 对什么项目感兴趣? | 团队的职责是什么?团队目前和将来会做什么项目?团队在找什么样的人? |
| 产品经理 | 对公司产品的观点/反馈/建议。如果让你设计一款产品,你会怎么做? | 公司的下一步产品是什么?公司面临的关键性挑战是什么?公司中的工程师如何与产品经理交互? |
| 午餐面试者 | 你之前或当前公司/学校的团队怎么样?你喜欢他们吗?为什么?你怎样融入公司的文化? | 公司中的团队是怎么样的?他们有哪些团队构建活动? |
| 工程师 | 如果你能够提出合理的清晰的问题,如果你能够有效地表达你解决问题的规划,如果你最终能够解决这个问题——那么,请展示你的代码 | 一般的工作流程是怎样的?公司使用的技术栈是什么? |
| 架构师 | 你是否能够以可扩展的方式解决问题?你是否能够认清系统设计中的关键权衡? |公司使用的技术栈是什么?公司如何使用这些技术来解决现实世界的问题? |
**图1-2 面试须知**
> <sup>[1]</sup> 这个表格主要是针对美国求职而言的。中国的程序员并不一定是这种形式,这里只是希望读者可以参考一下北美的面试流程。
- 内容提要
- 作者简介
- 前言
- 我的故事,你的故事
- 现状
- 目的
- 特色
- 第1章 简历、面试和Offer
- 1.1 简历
- 1.1.1 格式
- 1.1.2 内容安排
- 1.1.3 描述技巧
- 1.2 面试
- 1.2.1 HR
- 1.2.2 技术面试官
- 1.2.3 老板
- 1.3 Offer
- 1.4 常见问题
- 1.5 工具箱
- 第2章 数组和字符串
- 2.1 知识要点
- 2.1.1 数组
- 2.1.2 哈希表
- 2.1.3 String
- 2.2 模式识别
- 2.2.1 使用哈希表
- 2.2.2 利用哈希表实现动态规划的思想
- 2.2.3 String相关问题的处理技巧
- 2.3 工具箱
- 第3章 链表
- 3.1 知识要点
- 3.2 模式识别
- 3.2.1 链表的基本操作
- 3.2.2 哑节点
- 3.2.3 Runner和Chaser
- 3.2.4 遍历并处理节点
- 3.2.5 交换节点的问题
- 3.2.6 同时操作两个链表
- 3.2.7 倒序处理
- 3.3 工具箱
- 第4章 栈和队列
- 4.1 知识要点
- 4.1.1 栈
- 4.1.2 队列
- 4.2 模式识别
- 4.2.1 通过栈实现特殊顺序的读取
- 4.2.2 “Save for later”问题
- 4.2.3 用栈解决自上而下结构的问题
- 4.3 工具箱
- 第5章 树和图
- 5.1 知识要点
- 5.1.1 树
- 5.1.2 字典树
- 5.1.3 堆与优先队列
- 5.1.4 图
- 5.1.5 图的遍历
- 5.1.6 单源最短路径问题
- 5.1.7 任意两点之间的最短距离
- 5.2 模式识别
- 5.2.1 利用分而治之(D&C)策略判断树、图的性质
- 5.2.3 树和其他数据结构的相互转换
- 5.2.4 寻找特定节点
- 5.2.5 图的访问
- 5.3 工具箱
- 第6章 位操作
- 6.1 知识要点
- 6.2 模式识别
- 6.2.1 基本的位操作
- 6.2.2 位掩码
- 6.3 工具箱
- 第7章 面向对象的设计
- 7.1 知识要点
- 7.1.1 设计题解答要领
- 7.1.2 模拟面试
- 7.1.3 抽象、面向对象和解耦(Decoupling)
- 7.1.4 继承/组合/参数化类型
- 7.1.5 设计模式
- 7.2 模式识别
- 7.3 工具箱
- 第8章 递归和动态规划
- 8.1 知识要点
- 8.1.1 构建从子问题到最终目标的方法
- 8.1.2 递归的空间与时间成本
- 8.1.3 自底向上与自顶向下
- 8.1.4 算法策略
- 8.2 模式识别
- 8.2.1 用动态规划(自底向上)解决收敛结构问题
- 8.2.2 最长子序列类型的问题
- 8.2.3 用Memorization(自顶向下)解决收敛结构问题
- 8.2.4 用回溯法(自上而下)解决发散结构问题
- 8.2.5 用D&C策略解决独立子问题
- 第9章 排序和搜索
- 9.1 知识要点
- 9.1.1 常见的内排序算法
- 9.1.2 常见的外排序算法
- 9.1.3 快速选择算法
- 9.1.4 二分查找
- 9.2 模式识别
- 9.2.1 动态数据结构的维护
- 9.2.2 对于有序/部分有序容器的搜索,用二分查找
- 9.2.3 数据范围有限、离散的排序问题
- 9.2.4 Scalability & Memory Limits 问题
- 9.3 工具箱
- 第10章 测试
- 10.1 知识要点
- 10.1.1 测试现实世界的物体、软件或函数
- 10.1.2 故障排除
- 10.2 模式识别
- 10.3 工具箱
- 第11章 网络
- 11.1 知识要点
- 11.1.1 网络分层
- 11.1.2 路由
- 11.1.3 常用网络统计指标
- 11.1.4 TCP vs. UDP
- 11.2 模式识别
- 11.3 工具箱
- 第12章 计算机底层知识
- 12.1 知识要点
- 12.1.1 进程vs.线程
- 12.1.2 上下文切换
- 12.1.3 系统调用
- 12.1.4 Semaphore/Mutex
- 12.1.5 死锁
- 12.1.6 生产者消费者
- 12.1.7 进程间通信
- 12.1.8 逻辑地址/物理地址/虚拟内存
- 12.1.9 文件系统
- 12.1.10 实时vs.分时操作系统
- 12.1.11 编译器
- 版权信息
- 看完了