写在前面

从去年开始,作为一面面试官,陆续面试了30+候选人,在这里分享一下感悟。

面试流程与考察方面

面试流程

以我经历的面试为例,基本的流程如下:

  • 候选人自我介绍:基本情况与项目
  • 针对项目提问
  • 编程题
  • 基础:语言基础、框架、中间件
  • 候选人向面试官提问沟通

一面的定位

候选人进入一面,说明已经通过了HR与leader的简历筛选,我认为一面的定位是: 筛选技术能力与工程能力良好、沟通顺畅的候选人。这么定义有些宽泛,下面我会详细讨论。

项目经历

不同公司的业务差异很大,即使是同一公司同一小组,每个人做的事情也各不相同。考察的要点是:

  • 项目背景
  • 候选人的工作:主要参与了哪些部分
  • 候选人对上下游的了解
    • 上游如何生产数据,下游如何消费数据,即整个的数据链路
    • 对系统的整体架构的了解
  • 收益的评估:项目对团队/公司带来的技术/业务贡献

这里详细说下对项目收益的评估,做项目的目的是解决问题,既然通过了需求评审+技术评审,就需要评估项目上线后的收益,不做无用功。根据不同的项目分类,我提供几点思路:

  • 技术基建类:技术团队使用
    • 稳定性:比如搭建微服务监控体系,线上问题发现缩短xxx,事故减少xxx
    • 开发效率:比如开发了xxx插件,自动生成xxxx
    • 安全性:比如统一记录xxxx日志,每一个操作可追溯到人
  • 业务平台:产品运营使用,配置广告/活动等等等
    • 效率:比如广告投放平台,广告投放效率提高xxxx
    • 成本:比如更精细的广告投放
    • 用户增长:此类平台的最终目标,通过配置不同的策略,拉新/激励老用户参与
  • 直接面向B/C端用户的功能
    • 盈利情况:使用人数提高xxx,付费人数xxxx
    • 用户体验:比如提高了用户点击率,促进创作者发布等等

项目收益这里,主要考察候选人对项目的认可度,希望候选人认为做这些事情是有意义的。如果一些收益指标无法估计,作为研发,至少应该了解相应的QPS、数据量等。

编程题

程序员面试考编程题是无法避免的,写代码是程序员的基本能力,编程题考察的就是理解问题、分析问题、将解决方案转化为代码的能力。这里只聊一下我个人的喜好:

  • 我个人偏爱的题目
    • 题目简单易懂
    • 代码量较少,重分析的题目:比如二叉树/链表/递归等
    • 容易实现暴力解法,需要加以分析找出优化点
  • 这些题目没必要出
    • 偏题、超难题:比如题目超长或者难度hard的题目
    • 大家都会刷的题:例如有次考察合并2个有序链表,感觉候选人直接默写了出来,提问边界条件为什么要这样写,完全不知道
    • 奇技淫巧:比如什么脑筋急转弯,分析了半天,最终答案就一行代码
    • 面试官都hold不住的问题

这一部分主要是考察候选人的逻辑思维与代码能力,我个人的评分是逻辑清晰&写出优化解>提示下出优化解>能想到优化思路但无法写出代码>逻辑混乱。这一环节,如果候选人在提示下能想到优化思路,代码逻辑结构正确,即使边界有些瑕疵,也已经达到了我的及格线。

工程能力

对工程能力的考察包含在各个环节中,这里单独列出来,是因为我见过不少刷题溜的飞起,工程能力一塌糊涂的候选人。

  • 服务稳定性
    • 候选人是否对微服务监控体系有所了解,如何快速标识出问题的请求
    • 很多人简历中都会提到写过技术方案,那么新旧接口如何兼容、回滚方案、出问题如何快速恢复(这类问题回答的好,也能侧面印证候选人对项目上下游比较了解)、是否有灾备方案
    • 业务监控
  • 问题排查与解决,如果候选人简历中提到该类问题,可以细问
    • SQL慢查询
    • 并发优化相关
    • JVM问题

如何面试比自己更牛的程序员

作为一面面试官,我经常会面试到一些更资深的程序员。这些候选人比我年长、经验更丰富,那么该怎样面试这些候选人呢?

  • 正视候选人
    • 尊重:尊重这些前辈,聚焦于技术本身,不问一些烂大街问题刁难候选人
    • 不卑不亢
  • 面试偏向
    • 求同存异:如果业务差异较大、编程语言也不同,可以考察数据库、并发、工程能力等
    • 编程:侧重逻辑思维与编码,识别候选人是否脱离一线开发很久了
    • 项目:更多看候选人对整个系统是否有全貌认知,项目难点在哪里

最近行情不太好,也面试了一些被裁员的兄弟,我本人也有被裁员后焦急找工作的经历。同样是工作经验3年的程序员,技术水平的差距可能非常大,程序员还是要多多磨练技术。

最后

最后想说,面试是候选人的舞台,面试官只是引导。祝愿广大程序员朋友都能找到心仪的工作,也希望我能成长为我心目中的资深程序员。


关注关注,主页更多的java课程学习路线,笔记,面试等架构资料

 

更多推荐

作为一面面试官,如何考察候选人