技术面试最重要的是什么?
最重要的当然是实力,然而实力之外,也有一些基本原则。
1 让面试官听懂你在做什么
牛逼的人都是能把最复杂的事情讲简单的。
如果面试官听不懂你讲的东西,他就无法判断你的水平。如果这个面试官不是你这个方向,或者是个大的的leader,那就更要用最浅显的话讲明白。
我自己也曾面过20多个校招同学,深有体会。校招简历最大的特点是背景跨度大,候选人的项目经历可能跟我们的业务方向完全不沾边,此时如果候选人不能详略得当地给我讲明白他做的东西,我是无法判断这个人的水平的,甚至如果候选人满嘴专业名词缩写,我会怀疑是不是忽悠我的。
不过,轮到我当候选人时,我还是犯了这个错误。英伟达的4面,当我发现面试官不是做自动驾驶时,脑子一热,就想着随便说点技术细节,把她糊弄过去。结果我在讲的过程中面试官打断我说不要讲细节,说她也不懂也并不关心细节。
项目介绍不要讲太久,讲太久会让面试官走神的。尽量让面试官问问题,让他问他感兴趣的点。
如果是一、二面,可以稍微详细点,三面以及以后,介绍一下框架就可以了。
我在面试中期在这方面也犯了错误。
以前我是直接讲核心方法的,但后面有一天突然脑子抽风,想调整一下项目介绍策略,分三个阶段讲,第一阶段是失败的尝试,第二阶段吸取了第一阶段的教训,第三阶段是更上一层楼,以为这样更有结构性。
但是那几场面试我明显感觉面试官的反馈并不好,有一家一面直接挂了我怀疑跟这个也有关系。
我给老婆讲了一遍,她说我的前奏铺垫太长了,听了半天都没听到我的核心方法是什么,其实半分钟后她就听不进去了。
2 让面试官觉得你牛逼
首先换位思考,你要招人的话想招什么样的人?
应该至少符合这两个条件之一:候选人有你们接下来想做的事情的经验,入职之后可以直接上手做;候选人各方面都很牛逼,加入后能带你飞。
如果候选人现在的技术还不如你们的技术,你愿意招他进来吗?你愿意和他成为同事吗?显然不愿意。
所以,要让面试官觉得你牛逼,而不是觉得你刚好到达及格线,毕竟也可能有好几个候选人在同时竞聘。
第一,要展现出自己当前工作的技术领先性,让面试官觉得在这件事情上是领先他们的。
当然在展现的过程中要保持诚实,尽量少吹牛逼,吹出的牛逼一旦被拆穿,就肯定挂了。
这点我也吃了亏,面试初期时有个项目吹的有点过了,导致自己面试时很紧张,很怕面试官刨根问底追问细节。我本人也不善于吹牛,面试官一问细节我就开始结巴,我自己都听着都假。直到某天听查理芒格,他说如果记者问他的东西他不会,他就会直接说不会,保持诚实很重要,你不可能什么都会。
这点对我启发很大,demo阶段就是demo阶段,没实际用上就是没实际用上,大方承认,提前拉低面试官的预期,总比问到了细节后对不上要好的多。我把那个项目重新梳理了一下,按照实际情况进行介绍,并在介绍完后说这还处于demo阶段,实际结果表明面试官也不会追问太多。
第二,尽可能让面试官问简历上自己准备好的项目,因为这些自己更加熟悉,回答肯定没问题。
第三,主动向面试官展示自己的其他方面的能力。
比如我觉得自己基础知识也比较扎实,恰好面试官问我C++ python了解的怎么样,我说我曾经系统地学习,看过《effective python》《effect stl》《effect c++》等。
3 coding
虽然大家都觉得八股文coding并不能体现真正的编程能力,但是coding做不出来,肯定会挂。
coding过程中不仅仅是考察了代码能力,也考察了沟通交流能力。比如,面试官说完题后,没听明白要反复确认题意,以及输入输出。我有几次面试就是题意没有完全搞明白
如果你前面聊得还可以,而面试官又出了一道完全不会没有思路的题,此时你有三个选择。
- 冥思苦想3分钟还是不会,心里想着肯定是凉了,也不跟面试官交流,假装有思路,瞎鸡儿写几句代码,等面试时间到1个小时面试结束;
- 冥思苦想3分钟想不出来,让面试官给一些提示,或者自己提几个思考方向,问问面试官是不是往这个方向思考的;
- 冥思苦想3分钟,让面试官给提示,提示完还是不会,此时也可以请求换一道题,如果面试官想让你通过,也会给你这个机会的。不过太垃圾了也不行,我在面某家公司时,自我感觉项目还可以,结果最后出题让写快速排序,我说能不能换一道,我只刷了leetcode,然后他说你写一个冒泡排序,我说能不能再换一道。。最后还是挂了。。
最后的最后,嘱咐一句,保持礼貌,尽量不要怼面试官。面试官虽然没有录用你的权力,但是是有一票否决权的。
说多了都是泪,我春节前面试有点飘,觉得面试官听不懂是他的问题,不是我的问题,遇到了两个咄咄逼人的面试官,我就也很不耐烦回怼了回去,当时觉得我真牛逼,现在觉得我真傻逼,都挂了。