Akagi201
9/7/2014 - 1:43 PM

剑指offer.md

简历部分

  1. 项目经验 STAR模型 Stituation: 简短的项目背景. 规模, 功能, 目标用户. Task: 完成的任务. 区分"参与"与"负责" Action: 为完成任务做了哪些工作, 怎么做的. 系统架构,开发工具, 平台, 技术. Result: 自己的贡献. 数字说明取得哪些效果.

  2. 应聘者掌握的技能 区分"了解", "熟悉" 和 "精通" ?? 看英文版本书去查看对应的英文. 了解: 无实际项目, 职位需要才列出来. 熟悉: 工作中项目开发中的技能. 精通: 轻松答出该领域的绝大多数问题.

行为面试

  1. 为什么跳槽
  • 对技术感兴趣, 对底层和网络更感兴趣.
  • 公司比较保守, 技术相对落后.
  • 对公司发展前景不看好, 工作效率, 福利, 年会, 传统公司与互联网公司差别.

技术面试

  1. 扎实的基础知识 编程面试环节: 编程语言, 数据结构 和算法. 数据结构: 链表, 二叉树, 树, 栈, 队列, 哈希表, 算法: 查找, 排序, 二分查找, 归并排序, 快速排序, 动态规划, 贪婪算法

  2. 高质量代码 鲁棒稳定 边界条件 特殊输入 问题越简单, 期望越高.

  3. 清晰的思路 画图 举例 分解

  4. 优化效率的能力 熟知各种数据结构的优缺点, 能选择合适的数据结构. 熟悉掌握常用的算法: 查找, 排序.

  5. 优秀的综合能力

单元测试用例

  1. 功能测试
  2. 边界测试(循环和递归, 结束循环的边界条件和终止递归的边界值是否正确)
  3. 负面测试

3种错误处理方法

返回值, 全局变量和异常三种错误处理方式的优缺点比较

错误处理方式优点缺点
返回值和系统API一致不能方便地使用计算结果
全局变量能够方便地使用计算结果用户可能会忘记检测全局变量
异常可以为不同的出错原因定义不同异常类型, 逻辑清晰明了有些语言不支持异常, 抛出异常时对性能有负面影响

TODO

  1. akcv -> 用好branch和release, 公司_职位, 如alibaba_bsp

欠缺

调试技巧