平时做项目,有时客户会要求签单之前对几个候选工程师/技术顾问进行面试,然后在合同中指定这一单由哪位来做。就面试这件事而言,我谈不上身经百战,但也算有点经验。
作为工程师/技术顾问,我也希望合作方聪明能干、容易沟通、大家能在差不多的思维水平上共同理解并解决某个问题。我个人偏爱面试方问一些比较实际、具体的技术问题。自己最喜欢的一次面试经历,倒并非是争项目,而是一次求职。
那次求职,第一轮是视频面试。一位工程师先问了数据库规范化和逆规范化的一些概念,规范化的优缺点,以及我在工程中会选择哪种范式?又问了一些基本的 Linux/Unix 操作命令,诸如 “你用什么 Linux 命令测试某个 web service 是否在正常运行中?” 最后出了个题目,让我在线编程解决一个小问题。整场视频面试我都觉得有话可说,虽然直说不懂怎样配置 iptable,还是顺利通过,被送到下一轮。
第二轮面试,一天之内由四组面试官车轮考试。 其中三组是工程师,一组是主管经理。当时我实在太想获得那个职位,准备其实还算充分,但是面试前几天一直心神不宁,太多憧憬和幻想,也担心落选后的去向。
第一场编程考试的第一题是写程序测试任意一个字符串是否为回文。其实简单到编程初学者都能解决。我在家练习的时候还做过一道差不多但难度更大一些的题。一边写代码还一边跟老公聊天,十分钟之内轻轻松松写出算法效率最高的一种解法。但是面试那天莫名其妙多用了一个 index,明显的 bug,5 秒钟就该发现的问题,5 分钟还未纠正。待到幡然醒悟,自知大出洋相,心慌意乱,后面真正考验编程功力的题竟没有在规定的时间内答完。
接下来三组面试官的问题也是聚焦技术层面,多是一些没有固定答案的开放式问题,看看我能说出多少种方案。面试中,考官们常常借题发挥,就我提出的某种方案深入问一些相关的背景知识、或者我的取舍理由。
整轮面试从上午 9 点不间断无休息考到下午 1 点,基本上我的技术知识面、思考方式、实际工作经验和沟通能力都有被他们以点带面考察到。最后我落选了,但觉得很公平。毕竟人家是业界最强门派,应征者中高手如云。我不光输得心服,还觉得他们那样复杂严格且马拉松般的面试既为那间公司选拔人才提供了比较科学的依据,也为每位候选人提供了比较充分的展示能力的空间,非常可取,值得别的用人单位借鉴。我自己在那次面试得到的教训就是,得失心不可太强,平常心对待,可能发挥会好一点。那次失败经验令我以后在面试之前都比较放松。倒不是我可以控制自己的情绪,想放松就可以放松(这我估计到老都很难做到)。而是经历过业界最严格的遴选程序后,对以后的面试多了点平常心。