咱们从是什么、为什么、怎么做来分析这个问题。
手撕代码是什么手撕代码其实是广大求职者的一种略带戏谑的叫法,指的是在技术面试过程中,面试官给候选人出一道题目(大部分情况下是算法题,少数情况会出SQL题),让候选人在规定的时间内将题目完成。
之所以叫做手撕,大概是因为在口罩事件之前,一些线下面试会让候选人在一张白纸上直接写出代码/伪代码,而不会直接在电脑上运行程序。
由于目前大部分的技术面试都在线上进行,手撕代码的形式也就变成了在IDE或者在线编译网站中完成代码。
为什么要考察手撕代码很多同学对手撕代码叫苦不迭,工作又不是做题,为什么偏偏要在面试中考察这样一个看似和未来业务关联不大的内容呢?
如果你吐槽数据结构与算法在未来用不上,那难道项目、八股就用得上吗?难道面试官会不清楚这一点吗?
实际上,相比起笔试可以代考、项目可以编造、八股可以硬背,面试的手撕代码部分反而是最公平、最能考察候选人水平的方式。
考察候选人的coding能力。假设候选人笔试分数很高,但是面试的手撕写得磕磕绊绊,连一些最基础的语法都写不好,那显然前面的笔试就很有可能是作假的,自然也就不能通过面试。
考察候选人在短时间、高压下解决问题的能力。面试通常是非常紧张的,但如果在这种高压状态下也可以很好地完成任务,说明候选人能够胜任具有挑战性的、紧急性的工作。
考察候选人抽象的逻辑思维能力。算法题通常而言都比较抽象,能够较好地解决算法题的候选人,通常具有较好的逻辑思维。
考察候选人的阅读理解、提炼信息能力。除了LeetCode上常规的经典题以外,现在也慢慢出现了一些题干较长、描述较复杂的题目,这需要候选人沉下心提炼关键信息,把已有信息转化为简单问题,再转换为代码语言。
考察候选人的沟通交流、语言表达能力。这一点其实很多人会忽视。在做完手撕代码后,一般都需要向面试官讲解你的思路和代码,如果能把一个相对复杂的算法(比如dp)讲清楚,那么说明候选人语言表达能力是过关的,在未来也能够胜任团队协作的工作。
考察候选人是否具有持之以恒、坚持不懈的学习决心。算法学习非一日之功,一般来说都需要经过1-2个月的系统学习和刷题。能够把常见算法学好的同学,说明都是有毅力有决心之人。
另外,从用人单位降本增效的角度来看,与其让