本篇文章只是我结合了自己两年面试 + 两年旁听的经历的一些思考与总结,中间可能有些想法并不准确,只是希望能有抛砖引玉的作用,能引发学弟学妹们的一些思考;如果你在看的过程中对任何想法有所质疑,欢迎在评论区中留言讨论👏

为了尽量对一些想法做出没有歧义的解释,部分内容的论述稍显冗余,如果你可以很容易的理解我想说的,那就下一条吧!理解万岁🎉

🎯 总的来说,我认为对于 SIPC 的面试官而言,应该做到以下几点:

  1. 明确对面试的认知,摆正心态,能动的设计流程和问题,注重问题的深度而非广度。
  2. 帮助面试者挖掘自身实力与优势,尽量屏蔽因紧张、社恐导致的发挥失常。
  3. 注重挖掘面试者的「真实水平」,不要把重心放在问题是否正确回答了,而应该注重回答的过程,以及隐藏在其下的思考问题的逻辑。
  4. 精心设计题目难度与提问方式,注重引导面试者思考问题。
  5. 因人而异的设置面试策略和评价标准,根据个人特点调整 Task 任务策略。
  6. 从技术和团队的两方面来考虑面试者,诚然有些人技术非常优秀,但可能并不太适合团队合作或 SIPC,So~

# 理念篇

# 面试认知

在所有讨论之前,我想先说下对于面试的认知,希望能给面试官一点启发,包括:

  • 面试的目的是为了深入了解面试者,而非难倒面试者。
  • 面试官其实是 “服务者”,面试的目的是帮助面试者展现他们的优势。
  • 面试并非轻松的按流程提问,而是需要消耗大量脑力去对问题进行精心设计,进而达到我们了解面试者的目的。
  • 要注重差异性,对于不同的面试者采取不同的提问策略和评价标准。
  • 科协的面试官其实是与面试者共同成长的,要在心态上摆正位置。

思想上的认识是最为重要的,因此以上几点在后面还会反复提及。

我想说的是,各位面试官能最终进入 SIPC,都是非常优秀的,本身就是一种能力的证明,我们不应该死板的套公式去面试,而应该充分解放思想,抓住我们面试的核心目的,所有流程、规范都是为「深入了解面试者」这个核心服务的,也就是说,只要能达到这个目的,采用什么样的手段其实并不重要。

# 两轮面试

在科技协会历来的传统中(至少从我开始),整体包括两轮面试,那么为什么安排两轮面试?以及每轮面试中面试官需要重点侧重于哪方面的考察?这些问题是我们应该思考的。以下我们详细谈谈。

在我个人的理解中,两轮面试的好处如下:

  1. 两轮面试侧重方面不同,帮助全方位的、可信的考察面试者。
  2. 尽量排除一次面试中可能出现的各种人为因素。
  3. 通过两轮面试中的时间差确定面试者短期学习能力和时间规划能力。

接下来我们分点来详细论述:

# 不同的侧重

我个人认为在一轮面试中需要侧重面试者画像建构,二轮面试中侧重面试者画像验证;两轮面试其实是前后相承的,二者顺序不可调换,虽然可以二合一,但是这样效果可能并不太好。

我们从两轮面试中不同的面试形式说起,在我们这一届中,一面的形式采用 面试 + 一点点的题目考查 ;二面的形式采用 无领导讨论 + 代码测试 + 面试 的形式。这两种形式中其实就体现了两轮面试侧重点的不同了。

# 面试者画像建构

为了准确建构面试者画像,在第一轮面试中我们需要做到两件事:

  1. 确定 C 语言真实水平
  2. 对综合素质进行考察与记录

C 语言的考察只是为了测试面试者是否真实的达到了他完成的 Task 的水平,所以我会注重 C 语言基础知识的考察,只要确定出 C 语言真实水平即可;在测试出真实水平的同时,也可以侧面看出面试者对于对于学习知识的态度,到底是急匆匆的学习新知识?还是稳扎稳打的前进?还是学不会一个知识点就不前进?这几者在我的观念中,这几者其实并没有显著优势的学习方案,但是我们必须了解到这点,并帮助面试者进行相应的调整。

但是,其实就算是没有 C 语言进度也是无所谓的,在一面中,我是可以接受面试者仅仅是刚刚接触 C 语言甚至是还没有进行 C 语言学习(当然,面试者必须能够说明自己态度是端正的)。刚经历了高考的折磨,在高三的暑假中好好玩一下又有什么不好呢?0 基础并不影响一个人的优秀,就像有基础也不代表一定会被录取😊,但是如果我发现了面试者试图欺骗我,那么不好意思,这个会很扣分。

但但是,其实 C 语言的分数占比挺小的(欺骗除外),大概会占 20%-30% 左右。我会更加侧重于对面试者的性格、目标、时间规划、逻辑能力等综合素质进行考察。其实就是是聊天啦,一方面可以一定程度上消除面试者的紧张感,另外一方面这种开放式的问题非常考察综合素质;这一点我发现学弟学妹们也会有相应的题库,但是对于回答到底应该 听什么怎么听 以及 怎么追问 上还是欠缺思考,这点我在后面章节会详细讨论。

总的来说,一轮面试中面试官做的更多的是信息的搜集工作,在这个过程中我们可以通过对一些问题的回答来进行交叉对比和逻辑推演,进而识别一些掩饰或谎言;但我们在这个阶段更重要的工作是尽可能详细的建构面试者的真实画像并记录下来,以方便在二面中进行针对性的提问和验证。这并不是说在一轮面试中不会刷掉任何人,某些态度不端、品行不端、理念不合的人趁早刷掉就好。

# 面试者画像验证

了解到现在的二面中已经没有了无领导讨论环节,那么对于一面中建构的综合素质画像就无法很好的验证,但这一点其实也还好,可以通过采用初期培训过程中学长学姐与小组配对的形式,通过学长学姐对小组的观察进行判断;另外,素质考察并不是二面的侧重点,在二面中就需要侧重对技术能力的考察(当然,我们本质其实看的是学习能力),毕竟我们是一个以技术能力作为核心竞争力的组织。

所以,在二面 C 语言考察中,就可以稍微涉及一些相对比较偏的知识点了,但这里我要强调,我们出题的目的不是为了得到正确的答案,而是听面试者思考的过程,所以我们不能只是在听到面试者回答出正确 / 错误答案后,一句:” 不错 / 下去再了解下吧 “就完事了,对于正确答案,我们要进一步追问:

  • 为什么是这样?
  • 答案的依据是什么?
  • 那如果变一下还成立吗?

对于回答不出来或错误答案的情况,我们需要引导面试者:

  • 你仔细想想 xxx(前置知识)是怎么样的?
  • 没关系,说说你的思路吧!
  • 如果我告诉你 xx(可能的疑难点或记忆点)是这样的,那么你有思路吗?

注意这里我用了相对两字,如果是太偏的知识点其实是没有意义的,哪怕面试者说不出来又能怎样呢?我们也无法判断他到底是否优秀,所以,作为面试官,一定要精心的设计题目的难度和知识点范围,可以通过组合知识点来增加难度,而不要去追着一些偏门的知识进行询问,这样才能得到有意义的回答。

在验证面试者技术能力的时候一定要与一面中构建的画像进行比对,进而构建二面的问题。例如,对于一个基础不牢的面试者,我们在一面中留的任务是好好复习一下已经学过的内容,那么我们就需要在二面中对于基础知识进行重点考察,观察面试者能否在我们的指导下克服自己的劣势面,这不仅是学习能力的证明,同样也是有无成长可能的证明。通过对每个人的问题的精心设计,我们也可以去验证该面试者在一面中对于自己的评价是否可信,只有通过了交叉对比,我们才算是完成了面试者画像的构建与验证,如果无法通过,我们就要及时修正我们的画像,再去考量该面试者是否通过。

# 排除人为因素

要尽可能客观公正的评价每一位面试者,摒除面试中人为因素的影响;同时要记住,面试官是与面试者一同成长的关系!

在面试中,影响面试结果的人为因素来源于两方面:

  • 面试官的个人因素
  • 面试者的个人因素

对于面试官来说,第一点是:人都会对与自己经历相似的人有天然的好感、容易沉溺于夸赞,同样也会对某些人有天然的厌恶。人是一种极其主观的生物,对于事物的评价受主观因素影响很大,为了避免这种情况,通过较为轻松的标准 + 两次面试可以一定程度上的规避因强烈的个人情感导致的不公平现象,当然,一组面试官中有多个人的原因也是如此。

第二点是:有些面试官可能在面试过程中非常的严肃,或者由于面试官自身的表达原因无法准确的描述问题,都会对面试产生影响,从这一点上来说对于面试者也是有些不公平的。就我们自己而言,我们是需要在每一场面试中不断去反思自己的:提的问题是否有更准确的表达?态度能否更和善?...... 其实对于 SIPC 的面试官而言,要记得感谢面试者,因为我们其实是在这个面试的过程中共同成长,而非只是单纯的面试筛选,面试官其实本身也不够成熟,面试者会触发我们对于技术的思考总结,我们自己对未来的规划沟通表达能力的提升以及对于 “显而易见问题” 的重新思考

而对于面试者而言,在一次面试中可能会因为各种意外情况导致发挥失常,有些意外并非自己能够控制的,所以进行两次面试也可以最大程度上帮助面试者调整状态,熟悉面试感觉,展现出最好的自己。

为了尽可能消除面试官的个人影响,我建议在面试中采用如下顺序进行问题询问:

  1. C 语言技术问题
  2. 综合素质问题
  3. 对 SIPC 认知问题

将可能对于个人倾向有影响的问题放在最后去问,使得我们更容易认真倾听并冷静分析面试者说的话。

# 判断学习与规划能力

对于大学生来说,时间规划能力与学习能力其实直接相关,由于本科有大量的课必须要上,能否在紧张的课业中合理安排时间进行技术学习是非常重要的;同时要注意,特殊个体特殊对待,有时我们要有足够的耐心。

这一点我觉得应该不用进行太深的讨论,大家应该都明白,要关注一面到二面之间的成长,而不要做绝对学习进度的对比。但这里我想强调另外一点:要结合个人的经历、性格去评判成长的大小。举个例子,对于从小接触计算机编程的面试者,他们学习 C 语言的速度就会快一些,而如果是有些同学从小从来没有接触过计算机,那么学习 C 语言肯定会慢一些,所以要动态的衡量学习的快慢而非制定绝对标准。

在过往的面试中,我们经常遇见一种情况:面试者在过去除了计算机课就没碰过电脑,再加上自身性格比较内向,有时候说话可能都听不清,看起来整体分数并不高。但是事实证明了只要给这样的同学一点时间,他们反倒会比大多数人要优秀。所以我们在面试过程中,要对于这样的面试者给予额外的耐心,多给他们一些时间,再去看看他们的反馈,你可以就会大吃一惊。

当然,对不同的人采用不同的评价标准对于每个人而言并不绝对公平,所以这句话只是针对进入科协的两轮面试而言,而对于后面的科协大考核,必须是制定统一的评价标准的。

# 问题篇

问问题的目的是通过差异化的问题帮助面试者正常甚至超常发挥,来确定不同面试者的真实水平,既不是完成面试流程中的任务、也不是非难倒所有面试者来证明我们优秀。

为什么要先写理念篇,就是因为我们在面试时一定是在理念的指引下灵活的面试。在设计面试问题的时候一定要能动的去思考我们面试的目的,要想明白我们组织一面、二面是为了什么,去思考我们问的问题能不能达到我们的目的

在多次的旁听中发现了学弟学妹们,尤其是大二的学弟学妹们做主面的时候,对于问题的提问和设计有所欠缺,这个问题非常的普遍,而且又比较具体,我会按照重要程度依次来罗列需要注意的点。

# 问的深而非问的广

先来说说问的广而不是问的深的问题:

  • 问不出面试者的真实水平
  • 很难了解面试者的综合素质
  • 面试者很难呈现自己的优势
  • 很难获得有价值的反馈
  • 面试官很难判断信息的真伪

在旁听的过程中,问问题流于表面、广而不深的问题非常的严重,绝大多数学弟学妹们在面试过程中太过于死板的按照流程询问:一道 C 语言、一道技术栈、一道规划...... 面试者有很多有价值继续追问的问题都被忽略了。我极其讨厌这种按照现成的规章制度、不在实际情况的基础上做出修改就照搬照抄的做法,在我看来,这就是 " ",而且,是头脑的 “”。诚然,规范的流程可以提醒我们还有哪些东西没有问到,但是按照流程均匀的分配时间给每一个流程的问题根本就是不动脑子。

一定要抓住一条主线:我们是为了深入的了解面试者而提问,而不是为了流程而提问

我们的困境在于:如何在一个极短的时间内,深入的了解面试者。时间短这件事其实本身就意味着想要全面的了解面试者是一种奢望,与其将时间分配在流程上那些无关痛痒的问题上,为什么不把时间全部用来了解你想要了解的东西呢?规范的流程只是参考,而非一定,不要让思想懒惰,找到你感兴趣的点不断追问,这个过程反倒会帮助你更深入的了解面试者。

这里举一个例子:在曾经的面试中,面试者自我介绍时提到了爱好英雄联盟,这个说法大家应该很常见吧,一般情况下我也不会追着这点问,但是情况的特殊在于该面试者除了打游戏外没有别的爱好,C 语言也只是刚刚入门,没有太多可以问的,那么,这个人就 PASS 了吗?并没有,我接着开始问他:

  1. 平时喜欢打哪个位置? — 打野
  2. 记得野怪的刷新时间吗?— 180S
  3. 怎么平衡刷野和抓人?— 看兵线 xxxxxxx

这是一个比较极端也很有趣的例子,其实我们可以从回答中看到该面试者对于自己喜欢的东西是会去研究的,那我就觉得这是一种非常好的品质,甚至相比于那些说自己有某某基础,但其实只是看看教程,不求甚解的人,我觉得可能会更优秀一点,哪怕他现在 C 语言只是刚刚开始看我同样让他过了面试,虽然不记得这位同学后来怎么样了,但我相信如果他能对计算机感兴趣,也会发展的很好。这个例子并不是要大家听到面试者爱打游戏就猛猛追问,只是给大家一个参考,我们要仔细聆听面试者的介绍,抓住他们感兴趣的点一直追问到自己想听的答案,而非按部就班的提问,会让我们收获更多。

# 不要被面试者唬住

在面试中还发现一种情况,大概是因为技术栈不交叉的原因,面试者在说自己曾经的技术栈时大概率就是介绍一下就过了,我觉得这是非常可惜的,有技术栈的面试者会比没有技术栈的面试者更好面一些,这里我来说说我面的思路。

首先,我需要确定面试者的这些技术栈到底是跟着教程按部就班的获取的,还是有一些自己的思考 / 研究在。举个例子,在某次面试中,某面试者介绍自己曾有过游戏破解的经历,于是我详细的问了他:

  1. 是什么游戏
  2. 破解的过程是什么
  3. 怎么学习破解的
  4. 中间有没有遇见什么困难,是怎么解决的

事实上我只问到了第二个问题就结束了,因为面试者的回答是风灵月影,那么就没必要接着往下问了,而且这个经历也就是一般而已,没有太大的加分。

「其实,有关游戏破解的知识我也了解的不多,这个时候可以多听面试者讲的东西,我们只需对于逻辑有问题或者讲的不清楚的地方发问就可以了,换个角度看,如果面试者能很清楚的跟面试官讲清楚技术原理,那么其本身就是一个很优秀的面试者了,不是吗?所以,千万不要被面试者唬住」

总结一下,我们在面试有技术背景的面试者时,需要通过更加具体的问题在分清楚该面试者对于该技术,到底是简单的跟着教程走,还是自己有所思考 / 研究,然后在回答中去甄别这个人到底是一个有自驱有思考的优秀者,还是只是一个就还好的普通面试者。

另外,其实我个人是很喜欢这种问问题的模式的,我在面试中就会经常以这样的方式去询问面试者,个人觉得这是一种很好的问问题的思路,既可以让面试者在熟悉的领域回答问题,还很容易看出面试者的综合素质,也推荐给大家。

# 问题应是引导而非否定

在旁听中,面试官问问题后,如果面试者没有非常快的准确回答,往往会被面试官打断,然后以 “下去再了解了解吧” 结束。我个人觉得这样的问题是无效问题,白白浪费时间。我们一定要明确,我们问问题的过程应该是引导的过程,而非挑刺的过程。通过引导来让面试者回答出问题,或者至少能暴露面试者的思考过程,这道题才是有意义的。如果一味否定,不仅会让面试者紧张以至难以发挥,而且根本难以获取对于面试者的有效评价。

这一点是有学弟做的比较好的,例如在问字母大小写转换的题目时,会提示 ASCII 码表。可能有些人会觉得前置知识太简单无需引导,其实不是这样的,引导的过程也是我们梳理自己的知识体系的过程,一个知识体系不清楚的人是无法做出有效引导的。在引导的过程中,我们强迫自己梳理所学的知识,将「基础」、「结果」通过清晰的逻辑串联起来,你才能做出准确的引导,所以,何不测试测试自己到底有没有梳理好自己的知识体系呢?

# C 语言知识点应注重基础

对于面试官而言,要对题目有如下三点反思:

  1. 题目本身是否有非预期解,这道题自己到底搞清楚了吗?
  2. 题目是否为基础问题,是否为面试者常规学习中自然掌握的问题(故意的偏 / 难题除外)?
  3. 自己是否准备了充分的引导?

有一种极其不应该的情况但是历史上发生过, i++++i 的问题应该是我们面试的高频问题了,但是曾经出过一道题目,由于没有考虑到不同平台编译器的优化问题,导致其实是有非预期解的,幸好面试的时候我在场,没有闹笑话。虽然不要求面试官在出题时对于 C 语言、编译器优化、操作系统有充分的了解,但是至少应该保证代码是能跑通的,且答案与实际执行结果是一致的。

如果题目本身就非面试者自然掌握的范围,那么问题本身的价值就不是很大,如果是故意为之,那么该有的引导到位了吗?我们要明确一点:偏题如果有充分的引导,可以考察到面试者的逻辑思维能力;但如果没有引导,那就是废题。

# 问题应清晰明确且不带明显的对错倾向

这里我直接给出一些问题实例对比,请大家仔细体会其中的差别:

原始问题不好的点变换问题
如果你室友在你做题时拉你去打游戏,你会怎么做?对错倾向太过明显请问你怎么均衡技术时间、娱乐时间和社交时间?
介绍一下数组吧问题范围太大请你介绍下数组怎么初始化 / 与字符串的区别 /......
你对科协有什么看法?没问题开放类问题是可以这样问的

我们在问问题之前要先在脑中斟酌一下,这一点并不难做到,同样的问题,变换一下问法,就可能能问出你想要的答案了。

# 不要随便问方向内问题

如果面试者没有表现出明显的对于某方面的兴趣,或是过往技术背景中没有明显的方向的背景,请不要突然就问某一个细分方向(前端 / 后端 / 产品 / 安全...),真的很奇怪诶!

# 任务篇

这一章表达的思想其实前面都有体现,这里单独拿出来再说一下也是因为非常重要,希望每一位面试官认真对待。

  • 留 Task 的依据

    正如上面说的,要根据不同的面试者来制定不同的面试策略和评价标准,同理,对于不同的面试者留 Task 的多少也应该有所不同,例如:对于基础不牢的同学我们甚至可以不留更多 Task,让他把已经做过的 Task 好好复习也是可以的。对于每一类型的面试者,面试官都需要认真思考留 Task 的策略。

    在二面中,对于没有完成既定 Task 目标的面试者我们也要保持耐心,认真的听他们说原因,同时也需要反思我们留的 Task 的任务是否是合理的,其实对于大家目前的能力来说,偏离才是常态,如果绝大部分人都按要求完成了 Task 任务,那么这时就要警惕是否可能是一些我们不希望看到的事情发生了,要进行更加认真的验证。

  • 留任务应具体

    我们的面试官在面试过程中经常会说 “下去了解下” 这样的话,这一点本身没什么问题,但是如果不提示面试者下去应该了解 “什么” 知识,那就有可能导致问题了。

    例如我们问:如果创建一个超级大的数组可能产生什么问题?那么我们留任务的时候就要说:下去可以了解下栈溢出的知识。我们需要帮助面试者具体出需要了解的知识而不是只是一句 “下去了解下” 就完了。

不过以上两点在我晚上做了简单的面试复盘后,面试官已经有了很好的改变,特别棒!

# 制度篇

本章就是一些简单的面试制度上的建议了,经验性的东西就写的比较简略

  • 时间把控

    建议以 30 分钟为区间通知面试者等候面试,大概每一桌等待的人数保持在 2-3 人是比较合适的,既不会太耽误面试者时间,也可以应对一些面试者晚到等意外情况,更高效的利用时间。

  • 题目控制

    如果是多天 / 多场面试,建议准备多套题目,防止因泄题导致的技术面失真。

# 愿景与使命

鲁迅先生曾说

愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光。就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。此后如竟没有炬火:我便是唯一的光。

科技协会的愿景是帮助每一个热爱计算机、热爱技术的同学在技术的大海中遨游;SIPC 作为一个学生组织,使命是帮助整个学院乃至学校的同学们提升技术水平。所以,面试不必过于严苛,培训不用过于保密,如若能让每一位热爱技术的同学有所收获,那便是我们最大的成就。


更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Gality 微信支付

微信支付

Gality 支付宝

支付宝