电话面试
- 保证简历投出后2周左右,手机保持畅通并电量充足;
- 考查沟通能力,注重对算法、数据结构的描述(如:二叉树的结点);
- 弄清面试官意图再回答,尤其是英文面试,听不懂多提问。
电脑桌面远程面试
- 考查编程习惯和调试能力;
- 思考清楚再写代码,写时注意命名和代码对齐,写完单元测试(设置断点、单步跟踪、查看内存、分析调用栈),注重debug的能力。
现场面试
- 行为面试:
(1) 自我介绍
30s到1min左右,简要介绍学习、工作经历即可。
(2) 项目经历:
建议使用STAR模型来介绍,模型如下图所示。需客观陈述自己的贡献(尤其注意区分Task中的“负责”和“参与”,前者是管理者的角色)。
作者例:
面试官可能的追问:
(3) 技能描述
注意用词(了解、熟悉和精通),客观描述;提及与公司、岗位业务相关技能。
(4) 跳槽原因/求职原因
展现对该岗位的兴趣、工作热情和积极情绪,避免谈薪资等原因。
- 技能面试:
(1) 扎实的基础:
语法、算法、数据结构。
(2) 高质量的代码:
程序的鲁棒性很重要,在写代码前想好特殊的测试用例(边界条件、特殊输入),写完自己在脑子里模拟运行这些测试,再提交。
(3) 清晰的思路:
有清晰思路再写代码;遇到难题可通过举例、分析、画图来找到思路,且面试时难题可能一小时内并不要求写出;
(4) 优化效率的能力:
面试中如一题存在多解,那么面试官期待最优解;面试中最常用的算法是查找和排序。
(5) 优秀的总和能力:
合作能力;
学习新知能力(通过提问最近看的书、从中学习的新技术来考察,抑或提出新概念看是否能够理解);
知识迁移能力(给出熟悉题目解题,再加入背景看能否学会应用);
抽象建模能力和发散思维能力(要求以非常规方法解题)。 - 应聘者提问环节:
(1) 不谈:薪水、与岗位无关的问题(如:应聘程序员却问公司发展战略)、面试结果;
(2) 提倡:应聘职位相关的问题、项目。作者给出的例子如下: