`

老生常谈:面试算法有必要吗?

 
阅读更多

声明:虽然发表在愚人节,但是文章内容很严肃。

前几天在知乎有人问“作为一名做 Web 开发的 Java 工程师,算法在工作中基本不怎么用到,但为什么面试总会问算法的问题?”, 原文地址: http://www.zhihu.com/question/20887109

我工作也有四五个年头了,个人觉得算法在工作中基本不怎么用到, 也可能是因为我工作内容的原因,我主要做web开发,请问大家对这个问题怎么看?

作为一名面试官,我很少面试语言的细节,这些都是可以通过看书或者手册学习到的。 我比较喜欢看应聘者解决问题的能力

原文太长,就不贴出来了。 一次关于浮点数的面试

很多毕业生都把计算机学成了文科,他们不是在学习理论知识,而是被动接受/背诵记忆这些知识。 他们来公司,编程只是他们的工作而已,聘用他们的真正目的是解决问题,用程序解决很多人共性的问题。

我面试时,他们可以使用任何工具甚至Google,当然,我出的题目一般都不能直接个Google到, 虽然网上没有现成的答案,但是可以总结出答案。 我的观点是,如果你的任何问题都可以用Google直接解决, 你不可能成为一名特别优秀的程序员。

你搜索到的是数据,即使你保存在了evernote,说白了就是01串, 你阅读了,思考了,这些数据就变成了信息,0101010…11101 变成了 int a = 4; 你再继续思考,使用,深化,这些信息就变成了知识。 你会说:『哦,这不是李氏代换原则吗?咦,这不就是工厂模式吗?』

数据 --> 信息 --> 知识。

最后重申一下: 学历代表过去,能力代表现在,学习能力代表将来

31
14
分享到:
评论
14 楼 zpyzly 2015-03-25  
学习能力考查确实最重要,但是开发软件的时候,解决问题的能力都只是体现在算法上吗?

设计能力、软件工程思想至少不比算法低级吧?为什么在面试中得不到重视?是不是因为设计题比算法题难找、难出?重要的东西,但是因为题难出就不出了,这就是现在面试的思路!

拿建筑作比方,算法相当于力学,而软件工程、设计就相当于建筑设计、建筑学,力学家和建筑设计师是两个职业,而在软件开发领域,这两个角色被混为一谈,真的是软件业的可悲!
13 楼 我最爱刘 2013-09-09  
学历代表过去,能力代表现在,学习能力代表将来 非常有道理
12 楼 花的世界 2013-05-10  
11 楼 hyj1254 2013-04-20  
算法不行确实不能胜任相关领域的工作,既然做这块儿,就要做精。但仅以算法行不行来判断一个程序员是否优秀,则有失偏颇。仅以它来检测一个程序员头脑是否灵活也很勉强。
10 楼 domore 2013-04-19  
赞一下这句 ,学历代表过去,能力代表现在,学习能力代表将来
9 楼 z773171880 2013-04-16  
8 楼 whfish 2013-04-15  
学历代表过去,能力代表现在,学习能力代表将来
7 楼 lixin3811 2013-04-04  
赞同楼主和楼下,有一点小意见:本文内容跟标题有点脱节。就标题所问而言,个人回答:如果面试中涉及到的算法纯粹是为了考察应聘者的算法知识,那么说明面试官是个书呆子。但是如果完全不面试有关算法的内容,是否也会让面试者缺乏比较,毕竟,如果面试的内容都是记忆力考察,或许该职位就是为了纯粹的‘写’代码。
6 楼 Hawods 2013-04-03  
jsjzsl 写道
说的很有道理的;
但是要求别人成为更优秀的人,对你自身并没有好处,因为
1.一个真正优秀的人需要更多的MONEY来支持,否则免谈;
2.当一个人成为优秀人才的时候,也是他将远离你的时候,企业能驾驭的只能是一个人的成长期;
3.优秀的人才,几乎都可能是原创者,也就是他们都可能会自创公司,自己当老板,早晚都会离你而去,他们甚至可能你强有力的竞争对手。

1.如果一个真正优秀的人真正能值更多的Money,那为什么你不愿意出那么多?这样就是在赶走他;
2.如果一个人变得足够优秀之后要离开企业,那多半是这个企业不能再提供给他合适的发展平台,跳槽成本还是挺高的,如果你不进步,当然不能指望靠阻止其他人进步来保持稳定;
3.生于忧患,死于安乐。因为害怕培养出竞争者而拒绝培养人才,无异于饮鸩止渴。
其实这位朋友说的还是很现实的,但是事情都有两面性,个人觉得积极培养人才的好处多于坏处。只是国内企业貌似抱有这样想法的很多,可能这也是国内程序猿基数大而优秀人才少的原因之一。
5 楼 haohao-xuexi02 2013-04-02  
artdialog 写道
学历代表过去,能力代表现在,学习能力代表将来

4 楼 jsjzsl 2013-04-01  
说的很有道理的;
但是要求别人成为更优秀的人,对你自身并没有好处,因为
1.一个真正优秀的人需要更多的MONEY来支持,否则免谈;
2.当一个人成为优秀人才的时候,也是他将远离你的时候,企业能驾驭的只能是一个人的成长期;
3.优秀的人才,几乎都可能是原创者,也就是他们都可能会自创公司,自己当老板,早晚都会离你而去,他们甚至可能你强有力的竞争对手。
3 楼 coffeescript 2013-04-01  
此文不顶,对不起国家,对不起D。
2 楼 nodejs 2013-04-01  
受教了。
1 楼 artdialog 2013-04-01  
学历代表过去,能力代表现在,学习能力代表将来

相关推荐

    2202年了,继续大比拼ViT、MLP、CNN结构有意义吗??.pdf

    近期,MSRA发布了一篇题为《Transformer 不比 CNN强 Local Attention 和动态 Depth-wise卷积前世今生》的博文,再次谈论了这个老生常谈的话题。文中提到,Depth-wise CNN和 attention 存在高度相似的结构,调参优化...

    当阿里面试官问我:Java创建线程有几种方式?我就知道问题没那么简单

    昨天有个小伙伴去阿里面试实习生岗位,面试官问他了一个老生常谈的问题:你说一说 Java 创建线程都有哪些方式? 这哥们心中窃喜,这个老生常谈的问题早已背的滚瓜烂熟,于是很流利的说了出来。 Java 创建线程有两种...

    老生常谈java垃圾回收算法(必看篇)

    老生常谈java垃圾回收算法 Java垃圾回收算法是Java虚拟机(JVM)中的一种自动内存管理机制,它可以自动将无用的对象从内存中删除,从而避免内存溢出和提高系统性能。java垃圾回收算法有多种,包括引用计数法、Mark-...

    Python使用Dijkstra算法实现求解图中最短路径距离问题详解

    这里要做的是Dijkstra算法,与Floyd算法类似,二者的用途均为求解最短路径距离,在图中有着广泛的应用,二者的原理都是老生常谈了,毕竟本科学习数据结构的同学是不可能不学习这两个算法的,所以在这里我也不再累赘...

    个人准备渗透测试和安全面试的经验之谈,和去部分厂商的面试题,干货真的满满~.zip

    个人准备渗透测试和安全面试的经验之谈,和去部分厂商的面试题,干货真的满满~渗透测试面试前言大半年前对面试准备了很多,部分笔记不是很完善,侧重的还是简单的知识点,没有特别难的部分。应大佬的要求,把面试题...

    深入剖析Java中的装箱和拆箱

    自动装箱和拆箱问题是Java中一个老生常谈的问题了,我们来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。  以下是本文的目录大纲:...

    C#,深度好文,精致好码,文本对比(Text Compare)算法与源代码

    文本比较算法也是一个老生常谈的话题。 文本比较的核心就是比较两个给定的文本(可以是字节流等)之间的差异。目前,主流的比较文本之间的差异主要有两大类。一类是基于编辑距离(Edit Distance)的,例如LD算法。一...

    加速人生图文使用教程:电脑卡怎么办?加速人生全面提速电脑.zip

     相信不少人都为电脑开机速度慢而着急过,开机速度慢主要有个方面的原因,一是桌面上摆放的文件过多,系统读取需要时间。这个问题的解决方法很简单,就是收拾整理好不常用的文件,尽量避免堆积在桌面上。另一方面,...

    c语言面试问题[参考].pdf

    数组越界的问题在C语言中是老生常谈的话题,而在面试中,面试官常常以此考察求职者对内存管理的认识。例如,在使用strcpy函数时,若没有正确计算目标数组的大小,很容易导致内存越界。此外,求职者需要了解字符串在...

    老生常谈外链 站长要做到对症下药.pps

    老生常谈外链 站长要做到对症下药.pps

    电子技术的老生常谈——接地.pdf

    正如标题所言,《电子技术的老生常谈——接地》一文中提到的那样,尽管接地的基本概念在每一次培训和交流中都会被提及,但往往缺乏一个通用而全面的方法论指导。本文旨在深入探讨接地的各种类型、目的以及具体的实施...

    老生常谈ProgressBar、ProgessDialog的用法

    条形进度条(Horizontal)则可以明确地展示任务的完成进度,通常用于上传下载等有明确进度的任务。 1. 不确定式圆形进度条: - 默认样式可以通过设置`style="@android:style/Widget.Holo.Light.ProgressBar"`来...

    老生常谈的24种Java设计模式

    了解和掌握这些设计模式,有助于开发人员更好地组织代码,提高代码的可读性和可维护性,同时也有助于促进团队之间的合作和沟通。 注:本文格式为xmind,需要xmind软件(支持手机端、PC端)。助力读者利用碎片时间...

    为自己工作,向自己问责.docx

    在职场中,我们常常听到一个老生常谈的话题:工作究竟是为了什么?有的人认为工作就是一种谋生手段,是维持生活所必需的;有的人则认为工作是一种自我实现的途径,是个人价值得以展现的舞台。然而,在《为自己工作,...

    老生常谈javascript的面向对象思想

    面向对象有三大基本特性:封装、继承和多态。 封装是面向对象编程的核心思想之一,它指的是将数据(或属性)和操作数据的代码(或方法)捆绑在一起形成一个对象,从而将对象的实现细节隐藏起来,外部代码通过对象...

    老生常谈Java虚拟机垃圾回收机制(必看篇)

    老生常谈Java虚拟机垃圾回收机制 在Java虚拟机中,对象和数组的内存都是在堆中分配的,垃圾收集器主要回收的内存就是在堆内存中。如果在Java程序运行过程中,动态创建的对象或者数组没有及时得到回收,持续积累,...

    在nuxt中使用路由重定向的实例

    我们都知道,在写SPA的时候,我们可以通过配置vue-router来实现路由的重定向。 官方文档(以及ts类型)的定义中给出了这一...这些都是老生常谈了。 然而,到了SSR的环境下,如果使用nuxt,因为nuxt采用了约定大于配置的

Global site tag (gtag.js) - Google Analytics