面试的流程
面试官谈面试
面试官的要求普遍为:
初级程序员 | 算法和数据结构 |
高级程序员 | 专业技能和项目经验 |
- 了解公司近况、项目情况
- 对所应聘的工作抱有很大的热情
- 准备好合适的问面试官的问题
- 过硬的编码能力
面试的3种形式
面试的形式和流程
电话面试
- 尽可能把细节说清楚
- 如果没听清楚问题或者没听懂问题,一定要大胆多提问
共享桌面远程面试
- 思考清楚再开始编码
- 良好的代码命名和缩进对齐习惯
- 学会进行单元测试
- 在出现bug的时候,熟练设置断点、单步跟踪、查看内存、分析调用栈
共享桌面面试时,面试官最关心的是应聘者的编程习惯和调试能力。
现场面试
- 规划好路线并估算出行时间
- 衣着得体
- 注意面试流程,如果可能带上吃喝的东西
- 准备几个问面试官的问题
面试的3个环节
行为面试 --> 技术面试 --> 应聘者提问
行为面试环节
内容
注意应聘者的性格特点,深入了解简历中列举的项目经历。
流程
- 自我介绍(30秒到1分钟主要介绍自己的主要学习、工作经历)
- 针对某段经历或某个项目提出针对性的问题(编写简历的时候注意STAR原则)
常见问题
- 你在该项目中碰到的最大问题是什么,是怎么解决的
- 从这个项目中学到了什么
- 什么时候会和其他团队成员(开发、测试、设计、项目经理等一众人)有怎样的冲突,怎样解决冲突
建议
介绍项目经验(包括简历上介绍和面试口头介绍)时,突出介绍自己完成的工作及取得的成绩。
“了解” “熟悉” “精通” 的区分
- 了解:对某项技术只是上过课或看过书,没有做过实际的项目。在写简历的时候,根据投递的岗位,了解的技术可以不写。如果技术和岗位有一定相关性那么可以写。
- 熟悉:在实际项目中使用某项技术已经有很长时间,通过查阅相关文档可以独立解决大部分问题。毕业设计中用到的技能,或在项目开发过程中用到的技能,视为“熟悉”。
- 精通:对某项技术得心应手,当其他人问起这方面的问题时能够有信心解决。一般情况下不要常常使用“精通”。会翻车。
回答为何跳槽
尽量避免以下原因:
- 老板苛刻
- 同事难相处
- 加班太频繁
- 工资太低
通常回答:
- 现在的工作做了一段时间,已经没有太多激情了,希望寻找一份更有挑战的工作。
- 然后具体论述为啥厌倦现在的位置,以及面试的职位为啥感兴趣。
技术面试环节
考察应聘者的素质
扎实的基础知识
基本功在编程面试环节体现在三个方面:
- 编程语言
- 数据结构
- 算法
- 编程语言:至少掌握一两门编程语言。注意是掌握。
- 数据结构:熟练掌握链表、树、栈、队列、哈希表等数据结构及其操作。链表和二叉树相关的问题最常问。链表的插入和删除节点、二叉树各种遍历(循环和递归写法)
- 算法:查找、排序。重点掌握二分查找、归并排序、快速排序,谷歌或百度会考察动态规划和贪婪算法。
高质量的代码
别看题简单,越是简单的题,也需要考虑边界条件、错误处理、空指针等各个方面。
清晰的思路
写代码前,1. 举几个具体例子。2. 用图形表示抽象的数据结构。3. 把复杂的问题分解为若干简单的子问题。
优化效率的能力
- 学会分析效率。
- 熟悉各种数据结构的优缺点。
- 熟练掌握常用算法——查找和排序。
优秀的综合能力
面试过程中,观点明确、逻辑清晰、态度诚恳。
应聘者提问
- 不要问和自己职位没有关系的问题
- 不要问薪水
- 不要立刻打听面试结果
- 推荐问与应聘职位或项目相关的问题