浅谈后端面试指南
面试是一次双向的沟通过程,对求职者而言是找到心仪的东家,对公司而言是招揽合适的人才。面试官的目的是考察求职者能力,评估和岗位的匹配程度,绝非用稀奇古怪的题目面倒求职者。
本人近两年面试大几十位求职者,深感作为一个面试者不易,做好一个面试官更难,如何在极其有限的时间内准确的考察出求职的技术能力,对面试官的考验很大。本文关注服务端技术能力的考察,包括考察的范围、方式和注意事项。性格、合作能力、抗压能力等的考察不在本文讨论范围内。
态度指南
古有周公吐哺、三顾茅庐的佳话,优秀的人才从来不乏东家,所以请尊重求职者,纵然无缘招揽优秀的人才,也要赢得面试者的好评和名声:
- 求职者慕名而来至少出门迎接、给瓶解渴水吧
- 营造宽松良好的面试氛围,让求职者正常发挥
- 控制好时间,不予太长,亦不宜太短
- 面试的过程请保持耐心,认真听取,切勿打断求职者,切勿过分争论和反驳
- 面试结束后尽快给予求职者反馈
技术考察
技术考察主要覆盖基础知识、专业知识和逻辑思维三方面。首先了解求职者经历的项目以及在该项目中承担的角色和工作内容,再以项目为切入点,由浅入深的提出和基础知识以及专业知识相关的问题,要特别注意这些问题的连贯性,从而考察面试者的功底、逻辑性和解决问题的思路。为了缓和氛围,还可以提一些开放的问题,那些钟情于技术的 geek 们,在这类问题往往能回答的深入和透彻。
- 基础知识
- 熟练掌握一门语言
- 熟悉基本的数据结构和算法
- 熟练使用 Linux(Windows),对操作系统原理的理解
- Optional: 数据库、Web Server 和 TCP/IP 等
- 专业 & 经验
- 专业知识的考察因业务而异,求职者应该需要了解整个项目的功能,明白自己模块承担的角色,熟悉模块的业务流程以及针对该业务使用到的技术框架,某些特殊的业务可能会用到算法。
- 开放问题
- 你使用过哪些语言,对比它们的异同,谈谈你的感受?
- 你喜欢哪些技术书籍(博客)?
- 哪些软件你觉得很棒,为什么?
- 你通过什么渠道学习新技术知识?
- 你解决过哪些令你难忘的 bug,并说说解决的过程?
- 谈谈个人计算机(互联网网络)的发展历史?
- 谈谈你敬佩的工程师?
- 谈谈测试的重要性?
一点感受
- 不推荐纯粹的数学题、智力题等考察题目
- 不推荐压力面试,群面等面试方式
- 不推荐做题、现场写代码(时间成本太高,伪代码除外),不推荐询问杂而无连贯的问题
- 能给出 github 的求职者往往具有更强的竞争力
面试的方式和考察重点因人而异,本人认为这种方式的面试效率较高,既适合现场面试、又适合电话面试,非常注重基础功底,基础功底扎实的工程师编程能力、学习能力和调试能力都比较强悍,因为外部各异的技术归根结底总是有诸多相通之处。