一次经历
我之前面试过很多人,比如问到最小栈的题的时候,有些人直接能够给出用索引的方法,但是我问他为什么要存索引而不直接存最小值,他答不出来。
这种人很难过我的面试,他虽然能给出答案,但是并不知道为什么,我认为他没有深入思考过,只是记住了这个答案。
我倒是更希望找到那种从零开始一点点分析,一点点优化,每次优化都是有理有据的人。能够有清晰的思考过程。这种人无论是交流起来还是今后共事,都会感觉非常棒。
为什么面试现场如此强调算法效率?
有人说面试现场总是优化优化再优化,优化得这么好有用吗?现在硬件这么发达,搞一个o(n2)的算法又有什么关系呢?
这里要注意几点,面试现场不是工作现场,面试是你和其他候选人在竞争。如果别人给出的算法效率更高,也能解释清楚,毫无疑问我会选别人。
所谓面试造火箭,工作拧螺丝。给你一道造火箭的面试题,不是真要你造火箭,而是要看当你接受到这个任务的时候,你能完成多少,能想到多少方法,能有多少思路。至于火箭最后有没有飞起来,并不是我最关心的。
总结
说到这里大家应该明白了吧?面试官真正想看到的是完整的思维过程,灵活运用数据结构和算法的能力,以及多种思路。
面试官想要有思考力的人,而非只有记忆力的人。
面试官想要思维过程,而非一个最终结果。
面试官想要多种解法并对比优劣,而非一个所谓标准的最好解法。
我在面试别人的时候经常问的三个问题:
为什么要这样做?
这样做的时间和空间是多少?
还有没有别的方法?
如果你在做题的时候能经常问自己这三个问题,到面试的时候一定不会慌。
最后,希望大家看面试现场能够看得开心,学得快乐。再次感谢大家支持。
给出到目前为止面试现场所有文章,内容较多,请少食多餐: