就说二叉树。我大二学数据结构,大作业的一部分是自己实现一个平衡二叉树,没有任何问题。要是那个时候别人来问我各种细节,毫无压力。
然后我现在研二,自那次大作业以后再也没有实现过平衡二叉树。需要使用各种索引的时候都是无论是自己实现还是直接调用库,都不是平衡二叉树。然后现在要是来问我关于平衡二叉树的各种细节,当然我还记得左旋右旋左右旋右左旋,但你要我把所有的指针赋值都准确回答出来,我一定办不到。包括其他很多经典算法,思想我都有印象,细节我只能抱歉。
这类知识性的东西不经过长时间多次反复是不会形成长期记忆的。所以才会有临时查的情况产生。而且就算形成了长期记忆,这跟骑自行车这种技能还不一样。只要时间够长,总会忘掉的。
我觉得面试者反对的不是问算法,而是单纯地考察这些跟他工作无关的知识。换句话说你就算不问算法,而是问一个写前端的Sql查询怎么优化或者问一个挖数据的怎么做编译器,人家一样会受不了。因为他需要花时间去特地准备。而这准备又跟他的工作无关(面试之前的工作)。
如果面试官问的算法与面试者的工作相关,他却答不上来,确实可以判断他之前的工作有问题,进而他的能力也许有问题。如果无关,这就成了单纯的应试。我们都知道应试教育在人们心目中是什么样的存在。讨厌什么的就可以理解了吧。
现阶段,面试者也许认为算法是基础,人人都该懂,所以才问算法。万一过两年,面试者认为体系结构是基础,人人都该懂,这个题目就会改成问体系结构的了。那么计算机科学或者工作所需的编程实践里到底什么是基础?什么人人都该懂?我也不知道,反正我不觉得算法是。
当然,面试也和应试教育一样。问的问题也许并不好,但是足够公平就行。现阶段也没有别的更好的问题可以问。毕竟不能指望面试官先了解应试者的背景再有针对性地提问。再加上现在大家争着找工作的市场情况。所以作为应试者,还是安心准备为上。再说,不管有用没用,知识多了总没有坏处。
注:本答案只表达了对面试问算法的部分反对,并未提出任何面试提问的建议方案。
— 完 —
本文作者:
知乎用户(登录查看详情)
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有
65 个回答,查看全部。
延伸阅读:
面试官怎么看待应聘者在校成绩?
为什么HR通常会在下午通知应聘者面试?