看完offer这本书,总觉得看完还不够,今天打算花点时间来整理一下思路。首先回顾一下面试的部分。
面试大体分成三部分:行为面试,技术面试,提问环节。
一、行为面试
行为面试通常为面试开始的15-20分钟。重点考察项目经历。如果有自我介绍的话,那么用30秒到1分钟的时间介绍自己的主要学习、工作经历即可。接下来面试官可能会照着简历去详细了解他感兴趣的项目。我们准备简历时最好遵循所谓的STAR(star)原则,去描述每个项目经历。
Situation: 简单的项目背景,比如项目的规模,软件的功能、目标用户。
Task: 自己完成的任务,这个要详细写,要让别人对自己的工作一目了然。在用词上注意区分“参与”与“负责”。
Action: 为了完成任务做了哪些工作,是怎么做的。
Result: 这方面的信息可以写具体些,最好能用数字说明。
除此之外,面试过程中我们还应该提前准备一些常见的问题:
1. 你在该项目中碰到的最大的问题是什么,怎么解决得
2. 从这个项目中你学到了什么
3. 会和其他团队成员相处有冲突吗?怎么解决的?
二、技术面试
技术面试会占据40-50分钟,是面试的重头戏,对面试结果取决定性作用。总体来说考察应聘者5个方面的素质。
1.扎实的基础知识。主要有三个方面体现:编程语言、数据结构和算法。语言就不多少了。数据结构要求对链表的插入删除,二叉树的各种遍历方法的循环和递归算法烂熟于心,此外还有熟练掌握数组、堆、队列、哈希表等数据结构。算法的话,熟悉的二分查找、排序算法。比较高级的要求还要求掌握贪心和动态规划算法。
2. 高质量代码。边界条件、特殊输入的考察。最好在写代码之前想好各种测试用例。
3. 清晰的思路。作者一再强调,“没有清晰的思路,写出来的代码也是漏洞百出”。帮助我们形成清晰思路有几个方法:画图(链表、树等复杂数据结构)、举例和将复杂问题分解成若干简单的小问题,再一一解决(动态规划)
4. 优化效率的能力。我的感觉是充分利用各个数据结构之间的优缺点。
5. 优秀的综合能力。知识迁移能力,也就是所谓的学习能力,思维发散能力、建模能力等。
三、提问环节
这里只说不适合提问的问题。比如和自己职位不相关的问题、薪水问题、面试结果等。那么推荐的问题是,与职位相关、项目相关的问题。