You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
11 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 开篇词 | 世事洞明皆学问,人情练达即文章:小面试,大道理
你好,我是软件工程师熊燚,网上大家都叫我四火,很高兴在这个专栏和你见面。
我曾经是华为、Amazon的软件工程师现在我在Oracle工作我之前在极客时间写过一个技术专栏[《全栈工程师修炼指南》](https://time.geekbang.org/column/intro/100035501),自己也有一个很长时间的独立技术博客[《四火的唠叨》](https://www.raychase.net/)。
工作的这十多年来,我以工程师的身份经历过不少团队,面试过许多软件工程师候选人,指导过一些经验尚浅的面试官,也目睹过许许多多不同风格的面试,更了解过这些面试的候选人在入职后截然不同的职业发展轨迹。
现在我在云计算的某个团队工作除了是一个几十人团队的Team Lead也担任公司招聘环节的Bartender角色。过去这一年多来我面试了将近100位候选人主导或参与了他们每个人的面试结果决策会debrief。也就是说平均下来基本上每周我都会参与面试而他们中的大部分人都是软件工程师。
面试这件事听起来似乎挺简单,做起来却非常困难。从我的长期经验来看,这里存在的问题和误区实在太多了,不妨听听来自面试官的真实“吐槽”吧:
* “是不是拿算法题让候选人做就好了?可如果他做过这个题目怎么办?”
* “候选人都是工作好多年的老司机了,怎么有面试官问那种简单粗暴的算法题!”
* “‘面试造火箭,工作拧螺丝。’工作内容普普通通,为什么面试要问那么难的问题!”
* “新入职的同事,上来就给我们的系统埋雷,还不服批评,这种性格脾气面试是怎么过的?”
* “招怎样的人好,是能立马干活的,还是有潜力的?有潜力的培养起来跑掉了怎么办?”
有没有觉得“似曾相识”或者“一见如故”呢?
这样的问题还有很多,我就不一一例举了,但有一点,我想你是非常清楚的,面试就是打造团队的第一道门槛,它可能短暂、直接地影响你一个项目的进度,也可能长期、潜在地左右你整个团队的战斗力。
既然如此,那我们不妨重新来系统地审视一下,负责技术面试这件事儿,对你、对团队来说,到底意味着什么?
### 晋升第一课,招募人才
**首先,去负责技术面试,帮助公司和团队招募人才,就是一个职业上升通道的必攻克项。**
这里你不妨想想,你们公司的面试官都是什么样的人?技术骨干,管理骨干,具备软件工程师背景?对于绝大多数团队来说,的确是这样的,因为经验等综合能力可以帮助他们做出中肯评价与合理评估。
所以,当你开始关注这些,或者已经为公司和团队把关人才的时候,恭喜你,你的视野、看问题的方式、沟通和筹划事情的技巧,还有做出合理判断的能力,已经有了质的提升,或者说得到了团队的认可。这对你的职业生涯来说,无疑是**一个助推器**。
但我也要实话实说,做好这点,挑战可不小!在后面的课程中,你将会深刻体会到这点,但我还是非常鼓励在阅读学习的同时,不断去尝试。
因为,**面试还是一个预期和限制都很明确的快速学习机会,并且,是一个双向的学习机会。**预期,指的是我们针对软件工程师这个特定岗位对于候选人的期待;而限制,则明确了双方需要在每轮短短几十分钟的时间内进行交流与合作,完成话题的讨论,或是问题的解决。面试官可以从中得到不同的观点,获知各异的思路,拓宽自己的视野。而这些东西,课本上没有,老师不会教给你,项目组内也学不到,这就更显得颇为珍贵了。
所以在专栏中我会讲到一些经典的面试问题其中一些我已经在面试中问过不下几十次了。比较有意思的是有的问题我见过10种以上的解题思路其中超过一半都是我从候选人身上学来的。
**从这点出发,你还能深度体验换位思考,让自己和市场保持同步。**显然,你不会永远是面试官,没有人会。当你准备往更高处发展,去接受新的挑战时,这之前的每一天就都成了准备。
流畅地表现和表达自己,具备出色的沟通能力,都会是你当下以及未来的加分项,这也恰恰体现了面试官这个角色为技术人职业发展所带来的价值。
除了个人,在团队里,这**对于你个人影响力的打造也是很有帮助的**。这就不局限于工作中做一个项目、解一个bug了还有同事间相处、合作、互助等等。无疑参与面试是一个加深了解的好机会。
正所谓“世事洞明皆学问,人情练达即文章”,小小的面试,隐藏了大大的道理。在通过反复实践来磨练以后,能够承担面试官重任的人,最终一定会同时具备优秀的技术功底与良好的沟通技巧,以及相应的理性思维与决策能力。
### 打造优秀团队,严把人才关
当你了解了面试对于个人发展的意义之后,我想从公司和团队层面再给你一点建议。在其位、谋其政,高度更高,视野要更广。
你有没有听过这样一句话“招聘是研发团队日常活动的第一要务”。Facebook是有比较多的类似观点在宣扬而在我刚加入Amazon的第一天我的老板也和我讲过类似的话。
可能你觉得夸张了,人不对换了就是了,工作还得继续,给招聘戴上高帽未免危言耸听。
先说说工作这么多年后我对这句话的体会对于招聘的重要性我是认同的。举个最简单的例子就说软件工程吧如果开发环节马马虎虎那么测试环节就需要加倍投入去覆盖核心功能与非功能点如果测试草草了事那么运维就要开足马力修bug、打补丁。总之从需求、设计、开发、测试到运维**你总归要有一个环节把质量严格地把控好,否则就要让某个下游环节买单,下游环节不买单,那就要留给用户买单了。**
同理研发团队不同岗位之间的协作也是如此。如果软件工程师们具备优秀的沟通与合作技巧脾气秉性能够兼容那么团队经理的负担就会轻很多如果他们具备一定的项目和任务管理能力那么PM的介入就不用那么激进如果他们能够具备优良的编程习惯严格把控好质量那么许多产品我们并不需要专职的测试团队……
你看,从研发团队的核心来看这件事,面试严把关,可以省掉不少管理工程师的成本,以及给其它环节买单的成本,甚至是“少招人”;反之,一个“不合适”的工程师加入,不但研发团队无法高效运转,还要其它环节和角色陪跑,此时付出的代价就太大了。
于公司、于团队、于面试官来说,管理成本和团队建设都是逃不开的两个关键词。**而面试,就是在有限的时间内,评估候选人是否“合适”的最佳方式。**
### 候选人成长空间
最后,还有一点我觉得值得讨论一下。如果你此时还只是一位候选人,你会关心面试官的目的和套路吗?
金融市场上,有投资和投机两种行为,前者更看重长期的回报,而后者更关注短期的收益。我认为,了解面试行为本身,恰恰是二者都注重的表现。在面试这个过程中,长期看,你可以了解到哪些知识和能力是值得长期投入的;短期看,你可以了解对方的初衷和心态是怎样的。
面试通过了,皆大欢喜,我们还可以从中评估和强化自己的认识;面试没通过,你也不至于说挂得不明不白。
但更重要的一点是,不要觉得你只有候选人的身份,其实,**候选人也是面试官。**因为面试是双向的,面试官在面试你的时候,你也在面试他。如果对方考察候选人的方式折射出欠缺思考的视角、糟糕的判断,甚至对候选人缺乏尊重,那么十有八九,这样的公司和团队,你也是忌惮加入的,对吗?
### 你的收获
到这,我再来说说你能从这个专栏中具体学到什么吧。
从范围上讲,**这个专栏不是讲完整招聘的,而是专注于技术面试本身,并且,更多例子和技巧是针对软件工程师这个职位的。**当然,我们也会讨论通用型的招聘技巧,和面试前后的林林总总。
具体分为以下三部分:
面试前:我将介绍为什么要对软件工程师进行技术面试,应当覆盖哪些面试角度,以及我们该怎样去设计面试题。
面试中:专栏的重中之重,我将结合实例探讨怎样主导技术面试。包括怎样把控流程,怎样进行算法和数据结构的考察,系统设计的考察,面向对象和测试能力的考察,基础知识的考察,以及行为面试的操作方法等等。
面试后:我将针对候选人的评估讨论会如何开展来介绍。包括怎样收集事实、提炼数据,怎样引导争辩、达成共识,以及最终怎样给出客观中肯的评估。
![](https://static001.geekbang.org/resource/image/91/92/91ba3553517ec8da12c8838c56cd4a92.jpg)
从交付形式上看,你会一直处于面试场景中,熟悉的问题会带你步步深入,我希望能通过先破典型、后立观点的方式,打破你对于面试的固有认知,收获不一样的学习体验。另外,你在课程中还会看到很多的技能卡片和总结性脑图,来帮助你记忆与回顾。
再者,我想说,**市面上系统、完整讲解如何主导软件工程师技术面试的材料非常少**这个专栏融汇了我10多年来在国内外大厂的面试经验与思考总结相信能带给你富有启发性的设计思路以及实战检验过的全新观点。对于面试来说“问题是多变的套路是永恒的”如果你能消化和吸收隐藏在它背后的原则和思路这趟旅程定不虚此行。
最后,我深知技术面试和一般的技术内容相比,观点繁杂、方法多样,落到个体实践更是差异巨大,但就像我们期待一场相谈甚欢的面试一样,这个专栏除了交付体系化的方法心得,我也希望给你提供一个畅所欲言的窗口,一把打开更多技术面试相关话题的钥匙。
因此,对于更多问题,欢迎你在评论区留言,我将尽力一一回复。此外,我还特别策划了若干期专题答疑,尽可能把你的疑惑都覆盖到。
我是四火,我们下节课见。