之前写的关于面试的文章都是站在求职者的角度,今天这一篇是站在招聘者的角度。工作一些年之后,总是会偶尔参与到公司的招聘流程中。在做面试官之后,应该如何来考察一个开发者的工作能力呢?
作为程序员,我个人非常讨厌那种面试造火箭,工作拧螺丝的考察,说起来好像都有道理,但对实际的工作完全没有帮助。
更别提网上流传的那些大厂题,不明所以,好像是考验智商和临场反应的,还有一些是考察个人三观和做事态度的那种。大多数公司,都是小企业,应该直截了当,上来就谈我们车间需要的技能,能干就干,不能干拉倒。
整体思路和流程
重中之重:了解招聘岗位。
- 工作内容是什么,在团队中扮演什么角色。
- 怎样的人能符合这些要求。
如果可以参与简历的筛选就更好了,很多时候人事转过来的简历一看就发现匹配度非常低,然后这时再被迫按照 HR 和面试者定好的时间来组织面试,其实对双方都是时间和经历的浪费。
- 事先仔细阅读简历,对有疑问的点画个圈,大概准备 5 分钟即可
- 面试过程尽量控制在 30 分钟内
毕竟忙完之后,我自己还要去搬砖呢 - 上来可以先闲聊两句,缓解一下气氛,然后介绍一下公司和岗位,两三分钟
- 先就简历上提到的过往工作经历进行沟通,大概 10 分钟以内
可以让面试者先自我介绍一下,主要是看看表达能力,
如果已经感觉比较能说会道的,就跳过这一步 - 准备几道面试题,每一题都可以拓展深入
- 绝对不要问点头和摇头就可以回答的问题
- 要限定在工作相关技能
- 不要耽搁太久,如果发现面试者没有明显思路,提示一下
还是不行就跳过
其他:
- 如果是电话面试,就谈简历内容算了。
- 简历上可能写了 30 项精通,或者熟练掌握,一般来说,其中大部分都只是简单了解了一下(比如精通 git,结果只会 clone,pull,push)。
首先应该划出和岗位工作有关联的部分,然后看看这些掌握程度。
如果不是那么重要的项,发现其实没有掌握,后面就不用聊这个方向浪费时间。 - 事先看一些常见面试题,做个聊天时展开的参考
今后自己找工作的时候也能用上嘛
方向
主要是两个方向,编码能力,设计能力(解决问题的能力)。编码能力好了解一些,设计能力需要结合之前的项目来谈。
具体到细节的话,在面试过程中主要留意的方向:
- 基础技能:Linux + Git
- 基础知识:网络,数据库
- 常用服务:MySQL,Redis,RabbitMQ
- 【Redis】
- 为什么之前的项目用到(或没有用) Redis, 关于应用场景
- 项目中 Redis 数据如何组织 (类型相关)
- Redis 淘汰策略 (过期策略)
- Redis 的单线程与多线程
- 常用的 Redis 命令是什么
- 【MySQL】
- 数据类型,引擎,Join,索引
- varchar 和 text 的区别
- 时间相关类型
- 怎么存储 IP
- limit 分页的优化思路
- 【RabbitMQ】
- 为什么用到消息队列
- 为什么选 RabbitMQ / Kafka
- Exchange,Queue,BindingKey 的概念
- Exchange 类型:广播(fanout),点对点(direct),通配符(topic),头字段(header)
- 不指定 Exchange 怎么把消息投递到 Queue (Default Exchange)
- 【Redis】
- 架构能力:就这之前的项目经历来展开,看他对过往项目的了解程度
- 编码规范
- 编程语言
- 开发常识:比如:
- 怎么部署服务
- 怎么打日志,日志如何管理的
- 有没有遇到过字符编码问题
- OOM
- 比较难忘的 BUG
- 沟通能力
参考问题列表
- 擅长的技能
- 项目的收获
- 看技术资讯吗?怎么获得信息
- 个人博客 & 个人项目
- 之前的公司如何管理(OA、考核、项目流程:需求,设计,实现,测试)
- 喜欢有什么编程,优缺点,如果可以参与设计,怎么改进体验(增减功能)
- 平时会编程解决生活中常见的问题吗?举例。