首页 存档 技术 查看内容

为什么我反对纯算法面试题

2018-3-30 13:00 |来自: 互联网 443 0

摘要: 文末一起讨论下,你遇到的那些xx面试官和面试题 来自:酷 壳 - CoolShell.cn 作者:陈皓 链接:http://coolshell.cn/articles/8138.html 算法面试可能是微软搞出来的面试方法,现在很多公司都在效仿,而且我们的 ...

文末一起讨论下,你遇到的那些xx面试官和面试题


来自:酷 壳 - CoolShell.cn

作者:陈皓

链接:http://coolshell.cn/articles/8138.html


算法面试可能是微软搞出来的面试方法,现在很多公司都在效仿,而且我们的程序员也乐于解算法题,我个人以为,这是应试教育的毒瘤!我在《再谈“我是怎么招程序员”》中比较保守地说过,“问难的算法题并没有错,错的很多面试官只是在肤浅甚至错误地理解着面试算法题的目的。”,今天,我想加强一下这个观点我反对纯算法题面试!(注意,我说的是纯算法题)


我再次引用我以前的一个观点


能解算法题并不意味着这个人就有能力就能在工作中解决问题,你可以想想,小学奥数题可能比这些题更难,但并不意味着那些奥数能手就能解决实际问题。



好了,让我们来看一个示例(这个示例是昨天在微博上的一个讨论),这个题是“找出无序数组中第2大的数”,几乎所有的人都用了O(n)的算法,我相信对于我们这些应试教育出来的人来说,不用排序用O(n)算法是很正常的事,连我都不由自主地认为O(n)算法是这个题的标准答案。我们太习惯于标准答案了,这是我国教育最悲哀的地方。(广义的**就是让你的意识依赖于某个标准答案,然后通过给你标准答案让你不会思考而控制你)


功能性需求分析


试想,如果我们在实际工作中得到这样一个题 我们会怎么做?我一定会分析这个需求,因为我害怕需求未来会改变,今天你叫我找一个第2大的数,明天你找我找一个第4大的数,后天叫我找一个第100大的数,我不搞死了。需求变化是很正常的事。分析完这个需求后,我会很自然地去写找第K大数的算法难度一下子就增大了。


很多人会以为找第K大的需求是一种“过早扩展”的思路,不是这样的,我相信我们在实际编码中写过太多这样的程序了,你一定不会设计出这样的函数接口 Find2ndMaxNum(int* array, int len),就好像你不会设计出 DestroyBaghdad(); 这样的接口,而是设计一个DestoryCity( City

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部