先谈谈文化适应性问题。关注应聘者的性格特点是不是能和Facebook的文化兼容。不求完全共鸣,但不能存在极大差异。这些讨论,基本上基于对应聘者以往项目的讨论。下面是我主导的文化适应性面试的典型过程。
1分钟:我大致描述下本次面试。
4分钟:我先花1分钟介绍自己,什么时候加入Facebook,做过哪些东西,目前在Facebook哪个部门,负责什么。然后给应聘者3分钟进行自我介绍。
3~5分钟:让他回答“为什么对Facebook感兴趣”的问题。我们最不想听到的就是强调潜在的财务回报,虽然大家都知道这肯定是一个因素。但在如此宝贵的时间里去强调这一点,而不是其他更有意思的方面,会让面试人员产生反感。如果Facebook的财务表现在短期内不符合他们的想象,这些人会很快走掉。
10~15分钟:让应聘者谈谈之前最让他感觉骄傲的一个项目。然后我会深入追问很多跟这个项目相关的问题。比如“这个项目最大的挑战是什么”“几个人完成的,你在里面的角色和贡献”“有没有出现你的想法和其他人不同的情况,你是如何应对的”“这个项目让你学习了什么东西,或者锻炼了哪些地方”,我们还会挑一些相关的技术细节提问,等等。
20分钟:文化相关性问题只占一半时间。所以这里我们还是会集中在一个具体的技术问题上。
5分钟:留给应聘者来提问,针对Facebook或者针对我在Facebook所做的事情。我们希望应聘者较为关心的是公司文化、产品或技术,而非财务上的。
说到文化性问题,可能有人会有疑问,认为这样招聘来的都是一种风格的人,会不会限制了公司内部文化的多元化,反而不利于创新?其实,Facebook追求的只是在核心价值上想法一致,如果这方面有冲突,这样的人招过来可能会麻烦不断。Facebook的核心价值,比如把事情完成比完美更重要,这是最关键的,又比如,要做整体上对公司最有影响的事情,而不是做那些可有可无的事情;愿意进行团队合作,而不是习惯于单枪匹马;不要永远只会听你老板的话,要做一些你自己的决定和判断……至于说你喜欢用某种调试工具,他喜欢某种程序编辑器,这都不会造成什么影响,完全依据你个人的喜好。
整个面试流程里最多的要数技术性、编程性相关的问题,比如说很简单的Atoi(ASCII整数Integer的转换),用一段程序将英文字母换算成对应的数字,或者是反过来实现。很多典型的编程问题在网上都能查得到。但需要注意的是,不是所有人都能适应在白板上或纸上写程序,跟你直接在电脑上写并不太一样,最好事先练习一下,研究几十道类似的题目。这样不至于在白板上或者纸上写程序的时候手生。编程问题不仅仅是考察解决问题的能力,还有很重要的一点是沟通能力。我一般希望应聘者和我先谈谈他的思路,如果这个思路靠谱的话再去写程序。最不想看到的就是一上来就写,然后遇到困难就愣在那里。在谈论思路的时候碰上思维的断点不要紧张,可以把困扰说出来,把面试当作一个探讨的机会,而不是考试。在这个探讨的过程中,我们会慢慢地推向正确的解法。如果探讨在某点上僵住的话,我会直接给明显的提示,如果这个提示没有办法被应聘者接受的话,这个面试对他来说就失败了。在有了解决的思路后,接下来最重要的就是把程序写出来。不要求百分之百无漏洞,但基本上要没有大问题。通常我会要求他在写完之后自己再检查一遍,然后向我解释每一行程序要做的事情。往往在这时,他们自己会发现程序中的漏洞并修正。如果这样还有大问题的话,通常这个面试也是失败的。总而言之,在技术讨论中,我是把应聘者当作同事,如果讨论之后留给我的感觉是我不想和他共事,那我就不会给他积极的评价。