关于面试的那些事儿

Posted 简单的老王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于面试的那些事儿相关的知识,希望对你有一定的参考价值。

老王这周很开心,在公众号(simplemain)里发了《有问有答》,收到了很多盆友的提问(还收到很多盆友的打赏,老王在此谢谢大家~)。大家问的比较多的,除了技术的,就是关于面试的。整好老王计划着六月中下旬给大家聊聊个人对于面试的一些经历和想法,借着这次问答就一起来聊吧。

 

老王到目前为止,参加过的稍微正式一点的面试次数应该不超过3次。因为老王不太喜欢跳槽,对于换工作的事情还是非常非常非常慎重,觉得挑一家好公司并且在里面能持续的发展比连续的跳更重要(这是老王自己的想法,不一定对哈)。所以,从面试者的角度来讲,老王是一个基本没有面试经验的人。

 

不过老王当面试官有几年的历史了,从基础技术面,到高级技术面,再到经理面,大体都做过。总的面过的人估摸着应该有好几百个了吧(没有详细核算)。所以今天聊的内容可能跟很多聊面试的角度不一样,会从面试官的角度谈谈关于面试的那些事儿。

 

提前声明:接下来聊的是老王自己的见闻和思考,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期。如果觉得老王有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽(因为如果老王这篇文章让你生气了,老王会觉得很对不住大家)。如果对你有一些帮助,老王就很开心了~

 

准备好了嘛,开始吧~

 

这个话题大体的脉络,老王准备这样来组织:

1、面试背后考察的逻辑是怎么样的;

2、面试知识点的拆分;

3、面试的流程、风格和技巧;

4、那些年我们做过的一些经典面试题。

 

第一个话题,其实是我这次想聊的最核心的东西,他是面试的大纲。面试者为了找到一份好的工作,会不遗余力的准备好面试;同时,面试官为了给企业选到最适合的人才(注意,这里是最适合,不一定是最好),也会想方设法的探寻每个面试者的能力上限。那如何来考察面试者呢,就需要一个大纲性的东西,让面试官来不断试探面试者(类似于,给了一张地图,面试官用bfs或者dfs算法来搜寻这张地图的边界)。

 

第二个话题,是顺着第一个话题,将大纲拆分成不同的评估点来评估,组织不同的内容,用来判定面试者的知识水平。

 

第三个话题,则是第一、二个话题的具体表现。有了大纲和内容,接下来就是怎么问。不同的面试官风格不一样,面试的难度不一样,那作为面试者,我们该怎么样去应对?

 

第四个话题,就是顺着第一、二个话题,去看看我们当年的那些面试题都是考察的哪些点。同时,也一起来温故一下当年的那些经典。

 

=== function1:面试背后考察的逻辑 ===


老王现在还能想起第一次做面试官的场景:那会儿我的mentor带着我去做面试,他主面,我旁听。听完的结果就是:如果让我再参加一次面试,我说不定会挂掉……后来,逐步经历了更多的面试,老王也有了更多体会。最近,又对之前的面试做了一些总结,于是乎画了两个图。



这张图描述的是为什么会出现面试这个东西。那到底为什么呢?

 

我们把企业和个人看成两个类(class),他们其实有不同的属性。对于企业来讲,需要关注当前业务的发展和未来人才的储备。没有业务,对于企业来讲一切都是扯淡(假如没有钱挣,百度会给你提供免费搜索服务?)。所以很多企业就把业务的发展看的很重要。而有一些企业,发展到了更大的规模,就需要为未来储备更好的人才,以备发展之用(其实还是为了业务的发展)。

 

而对于个人来讲,有人会更关注能力的成长,有人会更关注物质(吃饭、买房都是需要钱的,而且一般码农聚集地房价都很高),还有人可能会更关注企业未来的发展或者是自己所在部门给自己留的上升空间等等。

 

因此,这两个类之间,就会产生一个需求的配对,你看重我什么,而我又看重你什么。于是乎,产生了相互之间的评判和选择。大家听到最多的:BAT不错、xx公司不行等等,就是我们个人这个类对企业这个类的评判。而面试,则是企业对个人的评判和选择。

 

有了这个东东以后,老王就画了下面这个图。


那既然企业对业务发展和未来人才储备,会在不同的阶段有不同的需求。因此,就会在面试的时候有区分。老王总结了一下,大体会考察两个维度、四个象限的内容:

 

1、技能层面:包括硬技能和软技能。

 

A、硬技能:就是大家经常说的面试,基本上就是考察大家计算机的相关知识,包括编程语言、算法和数据结构、计算机网络等基础知识;也包括项目经历、实际遇到过的问题等等;还包括对没见过的问题的解决能力等。如果硬技能比较强,有可能会是业务领域的专家(通俗的讲,就是我们膜拜的大牛)。他们能攻克一个或多个方向上的难点,带着公司往前飞~

 

B、软技能:这个是大家比较少提起,但是确实会考到的一些东西,比如:忠诚度、沟通表达能力、团队合作能力、逻辑思维能力等等与团队合作、人员管理相关的一些非技术技能。如果这个方面比较强,那可能更适合做业务的组织者或者管理者,将各种资源(包括人、钱等等)组织起来,一起完成比较大的目标。不过,老王觉得,如果想做好组织和管理,最好也能是技术上的专家(或者至少在技术上不差),否则很容易做出错误的判断(我们经常说的:这个人不懂技术还瞎指挥)。

 

2、时间层面:包括现状和未来的潜力。

 

A、现状:即当前拥有的能力。比如你现在是一个技术大牛,那可能你现有的能力就是无敌红线,不论在语言还是架构,都是非常牛逼的。很多公司(特别是创业公司)就非常喜欢这样的人才,因为可以凭借他们现有的能力,立马就能解决实际项目中的问题。这样的人才,会在业务发展上更适合公司的需求。也有可能会是公司的储备对象。

 

B、潜力:有很多同学刚大学毕业(或者正准备毕业),就会比较担心自己如何去跟那些有多年工作经验的老鸟竞争。如果谈项目经验,有可能确实相差很远,不过,如果你有很大的潜质,其实也是你的优势。很多大型的公司(或者重长期技术发展的公司)就会比较喜欢这样的人才,他们可能现在缺乏一些经验,但是有非常大的潜质(比如:一个acm获奖者,有可能没有任何项目经验,但说不定只要出来工作半年左右,立马就会能量爆棚),后期提升会非常明显。跟买股票一样,这些就是潜力股,哈哈哈~这些人才,有可能就是公司未来准备储备的。

 

所以,在面试的设计中,老王一般会将面试题按照这四个象限来设计和考察。看看当前的硬技能如何,再测测以后硬技能的潜质。测试觉得不错以后,就会聊聊软技能,看看当前水平,同时也会关注未来是否有从事管理方面的能力。

 

因而,笔试题、面试题才会有不同的难度,不同的类型。其实背后设计的逻辑,是用来判断面试者在这几个象限分别有多少的得分,根据不同的得分,来判定这个面试者是否符合当前公司的用人预期。

 

打比方说:如果有一个面试者,在当前有非常强的硬技能(具体比如说网络知识很强),那如果这个时候,公司在做网络相关的项目,就需要这样一位技术专家,很明显,他就是非常适合这个位置。不过如果他沟通表达不是特别好,同时公司这个时候需要的是一位能够协调沟通各个职位的管理角色,有可能他就不是特别适合。

 

另外一个例子,如果一个面试者刚刚从学校毕业,项目经验基本没有,不过学校学的知识很扎实:算法、网络、操作系统都学的不错,同时沟通表达、协调事务的能力都很强,他可能不适合马上就有产出的职位,但是他可能经过1-2年的历练,成为一个能独挡一面甚至把控全局的核心人物。

 

以上的这些,就是面试官在面试中要去发现的东东。所以,有些时候,遇到面试官问一些古怪的问题的时候,嫑吃惊,说不定他正在考察你某一方面的能力呢~

 

那具体怎么面呢?我们这周先简单的聊聊。

 

比如对于当前硬技能,一般就会让大家写个算法,最经典的:二分查找、快速排序等等。写基本算法的目的,就是看大家对语言的掌握、能不能写码、以及代码质量如何(毕竟公司找你来,你连基本的代码都写不出来,怎么给公司挣钱嘛,对不对)。接着,一般就会考考基本的数据结构和算法,比如:数组和链表操作的时间复杂度分析、BFSDFS的对比等等,这个其实是在实际工作中用的到的(JavaArrayListLinkedList至少要知道有什么不一样吧)。另外,同时也会问关于操作系统、网络等的基础知识。如果有实际工作经验,还会问一些关于数据库、框架等的知识。那这些问完,基本上能确定面试者的现有硬技能如何。

 

接下来,会问一些潜力方面的问题。问这个的目的,就是看你能不能在未来有很高的空间。常见的问法,就是把你已有的知识往深了问,或者是利用你以后的知识去解决一个综合性的问题。比如:搜索算法,除了BFSDFS,还有哪些?各自的优缺点是什么,时间复杂度如何?TCP三次握手是在哪个函数调用中完成的?如果一个城市很拥堵,有什么样的算法能比较好的去缓解?等等。如果你能运用现有知识去比较深入的解决问题,那么基本上能判定未来给你一个全新领域知识的时候,你会比较好的解决。

 

那关于软技能,老王一般喜欢聊一些逻辑性比较强的话题。可以看看面试者逻辑思维是否有条理性。写程序、做管理其实都需要比较强的逻辑思维能力。能比较清晰的推演逻辑的发展。比如,会问一个硬币连续扔十次,只出现一次正面朝上的概率是多少(这可以是一道概率题,也可以是一道逻辑推演题)。除了逻辑推理,还会着重考察基本的沟通表达、团队合作的问题。

 

对于软技能比较强的面试者,一般还问些管理相关的问题。比如:如何带人?如何看待业务发展和团队建设的问题等等。

 

好了,上面大体上列举了一些面试的问题以及背后的逻辑,不知道大家是否有所收获。那具体怎么样拆分面试的知识点,怎么样出题,老王准备下次详细的给大家聊聊(后面就是具体干货)。

 

有兴趣的朋友就继续在周日下午关注老王的公众号(simplemain)吧。

 

要不了多久,就要开始新一轮的校招了,如果觉得老王的文章对周围的朋友有帮助,就请毫不犹豫的转给他们吧,哈哈哈~ 

以上是关于关于面试的那些事儿的主要内容,如果未能解决你的问题,请参考以下文章

关于编码的那些事儿

负载均衡的那些算法们

Swift基础之关于键盘的那些事儿

关于定位那些事儿

Day1 敏捷入门关于敏捷和Scrum你必须知道的那些事儿

关于跨域那些事儿