一位前Facebook Tech Lead曾经说过:面试就好像是在第一次约会的时候,就决定是不是要跟对方结婚。
这虽然是个无奈的笑话,但也真实地反映了技术面试中的一个难题:面试官需要在相当有限的时间里,准确地判断候选人的技术水平。
因此,很多技术面试官都会在面试流程中加入一个编程测试的环节,来确认候选人是否真的具备了岗位所需的技术能力。但是,想要进行一次高质量的编程测试,却不是一件简单的事情。
那么,哪些因素会给编程面试的结果带来负面影响,又应该如何规避呢?
01 4个原因,让编程测试的考核效果大打折扣
在硅谷,编程测试往往是技术面试流程中的第一步。然而,在Reddit、LeetCode等平台上,很多工程师甚至会拒绝某些公司的编程测试。同样的声音,在国内的技术论坛中也并不鲜见。失败的编程测试,往往会让应聘者对公司留下糟糕的印象。
我们在研究中发现,如果编程测试的效果不理想,通常可以归结为下面的一个或几个原因:
原因1:平台使用不便
如果写代码的平台常常有故障,或者缺乏一些必备的功能,候选人就必须先花大量的时间弄清楚如何参加考核,而不是把注意力放在如何解决问题上。这时,候选人的答题体验势必不会太好,自然也就难以发挥出自己的正常水平。
原因2:题目质量不佳
题目的质量是编程测试的灵魂。在设计考核题目时,技术面试官容易踩到这样的坑:
• 题目本身理解难度太高,需要太多的上下文进行解释,候选人很难在短时间内读懂题目;
• 用理论和算法题来考核候选人,然而这类题目与岗位所需的技能关联性不足,解法在实际工作时基本用不上或者不常用,这类题目很容易淘汰一些编程能力强、但却不擅长刷题的工程师。
原因3:互动性不足
编程测试不是大学里的闭卷考试,假如只有候选人一个人“埋头苦写”,面试官很容易只关注最终的结果,而忽视了候选人的编码思路是否清晰、细节考虑是否全面、遇到Bug的调试方法是否合理,这种单向的编程测试很容易让面试官得出片面的结论。
相反,编程测试最好能像打乒乓球一样,双方需要有来有回地“交锋”,面试官才可以更细致地评判候选人的技术思考力、架构能力和工程化能力。
原因4:面试复盘靠记忆
在发出一个Offer之前,技术面试官往往会面试多个候选人。面试过程中,面试官的关注点基本集中在倾听和思考候选人的回答上。面试结束后,多数面试官只能依靠记忆力或者一些简单的面试记录,来评定谁的代码质量更好。一旦面试人数增多或者面试流程拉长,面试官的记忆很有可能出现偏差,给用人决策带来风险。
针对这些原因,面试官应该如何应对,才能让编程测试发挥原本应有的作用呢?《论语》中的一句话给了我们一点提示——工欲善其事,必先利其器。
02 基于1024PaaS上的轻协同IDE环境,让编程测试更流畅高效
寻找“利器”,看似是工匠提升手艺的捷径,但在技术面试中借助工具的力量也不失为一个好办法ShowMeBug就是技术面试官的“利器”。
早在3年前,ShowMeBug构建了一个全新的基础设施研发团队(团队名为1024PaaS),对云协同IDE进行了重构式的设计与研发,让它拥有了轻量简洁的编程界面、自动化的环境配置与流畅的跨平台协作体验,能够深度考核技术人员的实战能力。
那它具备哪些特性呢?
第一,开箱即用的云上编程环境,不仅支持38种编程语言,更支持Spring、Django、Rails、Vue、React 等11种实战工作主流的开发框架。
第二,用户体验友好,支持答题区TODO、答题区FIXME、文件树锁定隐藏搜索等功能,让双方更针对具体问题进行讨论,最大程度降低题目理解成本。
第三,互动性强,文件树、编码区、Shell和Console组件都可以实时同步状态,在面试环节,支持多人协作,实时看到对方的动作。
拥有了这个工具之后,我们又应该如何将它应用到编程测试中去呢?ShowMeBug给你支招,接着往下看。
03 使用ShowMeBug,将编程测试升级为实战考核
基于 1024PaaS 上的轻协同IDE,技术招聘不再束手束脚,技术面试官可以轻松在这个IDE上,使用以下功能,将“平台使用不便、题目质量不佳、互动性不足、复盘困难”这4个问题逐一击破。
▶ 项目级真实环境,候选人轻松上手
首先,基于1024PaaS上的轻协同IDE为候选人打造了一个项目级真实编程环境。
这个编程环境与本地开发环境非常相似:有源代码编辑器(支持代码补全、代码高亮、代码注释、语法检测与错误提醒、代码跳转等一系列本地IDE功能)、有可以看到代码实时渲染效果的内置浏览器、有控制台(Console)、终端(Shell)与文件树。
基于1024PaaS上的轻协同IDE界面展示
在这个易于使用又强大有力的开发环境下编程,候选人基本没有学习成本,有助于他们更充分地发挥自身的技术能力。
▶ 多种编程框架+海量实战题,面试随取随用
前文我们说到,题目的理解难度与质量会在相当程度上影响编程测试的结果。有了基于1024PaaS 上的轻协同IDE,面试官不仅可以快速自定义题目,还可以直接调用岗位题库。
如果面试官想要自定义题目,可以一键调用所需的编程语言或框架,几乎每个框架和语言都有详细的使用说明,还可以提前设置好测试用例,在几分钟内完成出题。
前端框架Vue3的使用说明
当编程题目中有多个答题点需要候选人补充代码时,面试官可以给题目设置答题区、答题引导与评分引导。设置完成后,答题区就会在候选人的答题界面中被高亮标注,方便候选人快速定位、高效答题,进一步降低题目的理解成本。
候选人视角下已被高亮标注的答题区
当然,面试官也可以直接使用ShowMeBug的岗位题库。这个题库支持选择、填空等10种题型,其中最具特色的是实战工程题型,这类题目在考察候选人的代码能力上有着独特的优势。
ShowMeBug岗位题库
为什么这么说呢?我们来看一个例子:当一位面试官想了解前端工程师对 Vue3 样式绑定与列表渲染的掌握程度,可以选用下图的这道题,让候选人直接写出相应代码,实现题目中的功能需求。这类题目的答案无法通过“刷题”获得,候选人到底有没有真实力,只要拿出类似的实战编程题一测便知。
ShowMeBug前端框架题实例
为了保证题库的质量,ShowMeBug成立了一支技术评估小组,专门优化与打磨这些编程题,并外聘了行业专家顾问,保证题库的时效性与专业性,有效降低了测评的误差。
截止目前,ShowMeBug的题库中心已累计了4000多道题目,并正在以每月400道题目的更新速度高频扩充,面试官可以随时调用题库中的任意题目,不用再担心编程题目不实用、不够用的问题。
▶ 实时协同Coding,提升面试互动感
面试的互动性不仅关乎候选人的体验,更有助于技术面试官观察候选人的编码思路,增加技术考核的深度。
基于 1024PaaS 上的轻协同IDE环境,让编程测试的互动感有了巨大的飞跃。它保证了代码编写过程中的组件同步、鼠标同步与视角同步,而且还做到了0% 代码冲突率,延迟 50ms 以下,无论是线下还是远程面试,代码交流都能畅通无阻。
ShowMeBug协同Coding功能展示
此外,ShowMeBug还有一个特色功能——在线Debug。在给代码打上断点并点击Debug按钮后,候选人就可以对代码逐行调试,并在调试完成后,点击运行用例查看调试结果。技术面试官可以借此考核候选人定位、调试、修复Bug的能力。
ShowMeBug在线Debug功能
▶ 字节级回放技术,降低人才决策风险
当面试人数越来越多时,技术面试官需要将多个候选人的表现进行综合比较。这时候,ShowMeBug的字节级回放技术就能派上用场。
ShowMeBug会将候选人在技术测评与在线面试中的每一个操作完整记录下来,并自动将其储存在云端服务器上。其中,切屏、代码复制、Debug、运行用例等特殊操作,还会在时间轴上被特别标注,方便面试官直接跳转查看。
ShowMeBug 回放功能
在回看过程中,面试官还可以倍速播放或拖拽进度条,既能节省时间,也不错过任何细节,更好更快地完成面试复盘,降低人才决策的风险。
总的来说,只有当编程测试在一个上手简单、使用体验好、互动感强的环境下进行时,候选人才可以毫无保留地展示自己的编程技能,ShowMeBug所倾力打造的就是这样一个环境。
更重要的是,1024PaaS引擎是一个高效、可靠、易用的技术测评工具,这个工具不仅支持多种编程语言和框架,还具有友好的用户界面和强大的互动性,可以让面试更加高效、聚焦。
技术官面试官不必靠感觉、凭经验去判定一个候选人能否胜任岗位,而是可以通过科学的考核方法与系统性的面试复盘,更高效、更准确地完成技术招聘。
彩蛋时间
这个轻协同IDE背后,我们还有一个小小的故事… >>> 《一次查找分子级Bug的经历,过程太酸爽了》