手撕算法回答模版

前面的回答模版,大部分是在说八股文,本次我们来说一说,遇到需要在线写算法题时,我们应该如何去回答。

回答指导

拿到一道算法题之后,一般我们要分两个步骤去回答,一是和面试官沟通好题目本身的一些条件;二是可以先给面试官讲解一下自己的大致思路,再开始写代码。

1、确定好一些条件

面试不是考试,所以我们千万不能拿到一道算法题,就马上写代码,第一时间应该是要和面试官沟通,确定好一些边界问题,以防面试官给你留陷阱,比如确定好数据的规模大小,是否会存在一些特殊的情况,结果是需要自己打印出来还是直接 return 返回等等。

一般来说,我们拿到的算法题有两类,一类是来自于 LeetCode 等刷题平台,这种题目本身就已经把各种条件描述的 比较清楚了,所以陷阱会少一些,一般不怎么需要咨询面试官边界条件,比如下面这场面试截图

image-20241031112647197

可以看到,关于 sz,n 的大小等,都已经给出来了,那么我们就不需要去咨询面试官了,如果没有给出来,通常我们要向面试官确定好这些变量的数值范围。

还有一类是面试官自己口头说或者自己基于经验出的题,当然,也不是原创题了,而是自己把以前看过的题目,简单描述出来,或者自己修改一些条件。对于这种的话,我们就需要向面试官确定好一些边界条件了,比如对于上面这道题,如果没有下面的提示,那么我们就需要咨询面试官,sz 是否有可能为 0,n 是否有可能会大于 sz,等等。

其次我们还可以向面试官确认,这道题是需要我们自己来构造 main 函数,还是直接给出一个核心函数,模仿 LeetCode 那样,直接实现核心函数的功能返回即可。

通过向面试官确定这些条件,不仅可以让我们很好避坑以及减少一些不必要的判断逻辑,还能给面试官一个良好的印象。

2、写代码前先讲思路

确定好了上面的一些条件之后,我们也别马上写代码,可以先把我们的思路告诉面试官,证明你是懂这道题的,然后再开始写代码。

又或者说,这道题有多种解法,你一看到题就马上想到了其中的一种解法,但这种解法不是最优解,不过呢,你觉得你自己知道还有更好的解法,也觉得自己能够想出来,只是需要时间。

那你这个时候,就可以先和面试官说,这道题大概知道怎么做,可以采用 XX 的方法,不过呢,你觉得这个方法并非最好的方法,应该还有其他的方法,让面试官给你时间想一想。

这样的话,可以给面试官一个预期,比如你是懂的还是不懂的,不然遇到一道不懂的题,你想大半天,面试官等你大半天;又或者你明明是懂的,思路是正确的,但是写出代码需要一定的时间,如果你和面试官讲解了思路,面试官觉得你是懂的,或许他会更加愿意给你时间写代码。

当然,有时候也会遇到一些比较忙的面试官,他抛给你几道算法题,自己就去干别的了,把你晾在那里。如果遇到这种,那就没办法了,可以自己写好好写代码,然后有什么疑问可以记录下来,等面试官过来了,再问他。

总结

当然,能不能在算法题这一关拿到分数,最重要的还是,你知道这道题怎么做,然后配合上面的回答技巧,我们则可以少犯错误,给面试官留下一个比较好的印象。

如果你遇到自己确实不懂的算法题,连思路也不懂,那你也不要马上说不懂,也要先思考几分钟,试图让面试官给你一些提醒。

如果给了提醒,觉得自己确实无能为力,那就直接和面试官说这道题不懂就好了。

发表评论

后才能评论