面试时算法为什么如此重要?高薪,外企,为什么迟迟没有进入?

来源:互联网 发布:新青年麻醉网络协会 编辑:程序博客网 时间:2024/04/28 01:27


为什么明明面试题比工作遇到的算法已经简单那么多,面试的时候面一下算法还是让很多人义愤填膺呢?
收藏人:木立
2014-03-22 | 阅:639  转:0  
 |   来源
  |  分享 
  
 
132

匿名用户

程序员很贵的好么,随随便便几十万一年好么,妈蛋,这么贵的东西,还不允许我验一下货!!!!!!!!!!!!!!!!难道你买房不验房!!!!!!!!!!难道你买车不验车!!!!!!!!

算法是基础中的基础好么!!!!!!!又不是考你难到逆天的题目,快排这种基础中的基础,就算不刷题,不做任何准备也应该在半个小时之内写好好么!!!!!何况,代码风格,思维方式,细心程度这种东西,难道不是写两行code就高下立现的么!!!!一个边界条件不做检查,思路不清,东加一个变量,西加一个函数的程序员,你放心把项目交给他!!!!!就好像一个医生跟你说,虽然我不知道体温计该量哪儿,也不知道你究竟有没有发烧,但是我会写处方,给你开两片退烧药就是了,妈蛋难道你就会放心大胆的去吃么!!!!!对于一个好的程序员,算法题是必要条件好么!!!!不是说能答出算法题就一定是一个好程序员,但连基础的算法都没有掌握的就一定不是好程序员好么!!!!!

醒醒吧,骚年!面对一份十几二十万的工作,做一点功课没什么不好,完全值得好么!!!!

第一次用咆哮体回答,还是匿了吧。
昨天 14:31 18 条评论 感谢 分享 收藏 · 没有帮助 · 举报
37

 归辰,人力有时而穷

就说二叉树。我大二学数据结构,大作业的一部分是自己实现一个平衡二叉树,没有任何问题。要是那个时候别人来问我各种细节,毫无压力。

然后我现在研二,自那次大作业以后再也没有实现过平衡二叉树。需要使用各种索引的时候都是无论是自己实现还是直接调用库,都不是平衡二叉树。然后现在要是来问我关于平衡二叉树的各种细节,当然我还记得左旋右旋左右旋右左旋,但你要我把所有的指针赋值都准确回答出来,我一定办不到。包括其他很多经典算法,思想我都有印象,细节我只能抱歉。

这类知识性的东西不经过长时间多次反复是不会形成长期记忆的。所以才会有临时查的情况产生。而且就算形成了长期记忆,这跟骑自行车这种技能还不一样。只要时间够长,总会忘掉的。

我觉得面试者反对的不是问算法,而是单纯地考察这些跟他工作无关的知识。因为他需要花时间去特地准备。而这准备又跟他的工作无关(面试之前的工作)。

如果面试官问的算法与面试者的工作相关,他却答不上来,确实可以判断他之前的工作有问题,进而他的能力也许有问题。如果无关,这就成了单纯的应试。我们都知道应试教育在人们心目中是什么样的存在。讨厌什么的就可以理解了吧。

当然,面试也和应试教育一样。问的问题也许并不好,但是足够公平。现阶段也没有别的更好的问题可以问。毕竟不能指望面试官先了解应试者的背景再有针对性地提问。再加上现在大家争着找工作的市场情况。所以作为应试者,还是安心准备为上。再说,不管有用没用,知识多了总没有坏处。
昨天 14:57 4 条评论 感谢 分享 收藏 · 没有帮助 · 举报
38

 卿培,果粉码农, http://qingpei.me

“工作中用不到这么多算法”就是个错觉。
有个算法能漂亮地解决一个问题,我不知道,然后自己倒腾了一个弱弱的方法。嘿,你猜怎么着?能跑!于是我告诉自己,这工作果然用不上什么高深的算法。



直到有一天,冒出个竞争对手的产品比我快1000倍。
昨天 19:07 7 条评论 感谢 分享 收藏 · 没有帮助 · 举报
59

 蓝色,还有四个月,真的就要毕业了...

如果以求职者的角度来看,很多求职者的项目与技能和这些面试算法题有出入和差别,所以出现了leetcode,剑指Offer等专门应试面试算法的网站或书籍(个人极度反感,但是现实就是大部分面试就要考这些类型的,你不刷题不看就是容易被毙掉)。所以很多求职者认为自己的技能还没有表现出来,就被面试的算法直接给枪毙掉了,自然有所不服,无论你认为这是多么简单的算法,也许他在工作的时候,根本和这些算法完全不搭边,工作个几年不忘光才怪。

那么除了算法以外,如何挖掘出求职者的闪光点,这也是对面试官的一个考验,因为考验算法的不外乎就一个根本目的:他到底聪不聪明。但是算法不好,就一定证明他不聪明,或者工作能力不好了吗?我觉得不一定。这就是要看面试官和面试者的交谈了,面试官去尽力挖掘,面试者去尽力表达推销自己,这就是一个交互的过程。
2014-03-20 13 条评论 感谢 分享 收藏 · 没有帮助 · 举报
20

 Keaton,色情中带点纯情

先亮明观点:身为程序员,算法知识100%是必要的!

本人从事的不是什么高大上的研究工作,跟数据挖掘模式识别自然语言处理云计算大数据blahblah全都不沾边。做过一段时间的J2EE开发,现在主要做基于HTML5的前台开发。看到这儿很多人要说了,不就是个做网页的嘛,做网页还用的上算法?不就是表单验证提交一下?我的回答是绝对用的上

举个例子,很多人在微博上见过tagcloud分析图,展示的是一些关键字的出现频率:
这里不谈文本检索这些,只说对已知数据如何安排各个关键字的位置进行渲染。这是个很典型的结合实际的算法问题,在此我用到了wordle算法,这和我们上学时常谈到的那些算法不太一样,但很多核心思路(例如空间换时间)还是相通的。感兴趣的同学可以自行了解。

接下来说说面试的问题。正式工作近9年,一直在coding的第一线,近年来也经常参与对技术人员的面试工作。我和同事们对面试时要不要涉及到算法的问题没有丝毫分歧,仍然是有必要。但算法问题如何问,也是有讲究的。我反对上来就指定一个算法让面试者写答案,例如前面有知友提到的写个快速排序之类的。这样的做法有掉书袋的嫌疑,而且除了证明对方为了面试做过精心准备,其他方面根本考核不出来。

自己在面试中经常会问的一个问题:
有一组长度为n的对象,每个对象里都有一个startTime和endTime,表示一个时间段。请面试者设计一个小算法,把这些对象中时间段存在重合关系的所有对象列出来。

这个问题不难,但一定程度上能考验面试者对算法本身的理解和sense。对这个问题的典型讨论过程是这样的:
Candidate:我想可以作个双重循环,把这些对象两两比较
me:好的,这显然是个很直观的方法。那么按照你的方法,时间复杂度是多少呢?
Candidate:n^2吧
me:OK,那么你看看是不是有改进的余地
Candidate:……也许我可以先排序,后面还没想好
me:根据什么排序呢?
Candidate:startTime
me:好,那么我们画个图来看看排好序后这些对象的分布
Candidate:……我想到了!blahblah
me:好的,那么这个算法的复杂度是多少?你能分析一下吗?
Candidate:前面排序用快速排序是n*log(n),后面的过程是线性的,所以总体就是n*log(n)
……

当然,这是一个比较正面的例子,candidate第一时间解决了问题,但不算完美。在一些提示下发挥和表现了自己对算法、数据结构的认识,比较完整的给出了解。作为interviewer,我就足够满意了。当然也不排除有些candidate上来就能给出很好的解答,那我也没有理由去鸡蛋里挑骨头。作为interviewer,目的是快速的了解对方的能力和水平,而不是为了考住对方
2014-03-20 17 条评论 感谢 分享 收藏 · 没有帮助 · 举报
17

 章佳杰,技能树点歪了走上学魔之路

我说说我的理解,很多时候其实是记不清算法的细枝末节,工作中用到了自然可以查资料查文档,甚至本来就不用知道那些细枝末节,能知道大体怎么用性能如何瓶颈在何处如果要改进可以从什么方面入手就行了。
但面试的时候不一样,面试官一个劲追问细节,甚至要提笔现场实现一个详细版本要考虑各种边界情况什么的(我了个去没有文档没有IDE我连String类有没有内置subString这种函数都不记得)难免让人心里没底。
举个例子我以前实习的时候遇到过一个问题,可以归结为资源分配,用一个图模型去建模,最后化成一个线性规划模型。我觉得如果要面试,问到这里就差不多了。最多问问迭代求解和直接求解的区别和各自的优点,算法复杂度什么的,理论性强一点还可以问问原对偶问题……至于把梯度下降或者矩阵求逆都要现场写一遍,那就没必要了。
当然了,面算法岗位和面开发岗位侧重点也不同,还是要结合具体岗位说的。如果是前面有人提到的PHP工程师或者网页前端,我觉得在实际工作中用到什么高深算法的机会应该很少了,面试时候多问问实际的细枝末节才是更能看出水平的。
2014-03-20 4 条评论 感谢 分享 收藏 · 没有帮助 · 举报
8

 彭哲夫,只是……一个好人……

1. 算法很重要
2. 算法和数据结构,是当年NOI给我留下最多的财富之一,到现在我还是分分钟完爆大学的所有同学
3. 面试带算法,没问题,毕竟都是按万算的工资,算法可以看一个程序猿很多方面的能力,比如代码风格,比如思维,比如边界处理,你是可以工作中用搜索的方式解决,但你不懂的话得来的答案并不一定符合你team的风格或者你公司的业务,没有哪个算法是一层不变的
4. 但是面试不应该仅仅停留在算法上,搜索发达的今天,懂得获得信息的能力一样重要
5. 最后,算法和数据结构是你通往高阶程序猿的必由之路,不懂这个,你看得懂个屁源码,用开源的东西看不懂代码=慢性自杀,天坑懂不懂
昨天 17:22 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
15

 王邢敏,用互联网精神改造精神病院

什么,工作用到的那破玩意儿也叫算法?我又不是在MSRA工作,现实就是,在大部分程序眼里,只有面试的时候会用到算法,其他时候?algorithm ?wow,what is that
2014-03-20 3 条评论 感谢 分享 收藏 · 没有帮助 · 举报
10

 王宇成,不想当码农的程序员。

我自己是完全支持面试考算法题的,因为考算法题可以直观地考察一个人的思维过程编码能力,对数据结构/时间复杂度的理解,基本功

但在面试的时候考一些刁钻的算法题就太无聊了。譬如Palantir面试的时候考过用矩阵优化的Fib数列log N求第N项,譬如非让你O(n)时间在长度为n的数组求1...n中少了哪k个数,譬如考二叉树前序后序求有多少种中序这类你做过就会不做过很难想出来的题,的确是无聊透顶。

因为考这种问题完全不能反映出一个人的能力。

现在在创业公司每周都会面试新的程序员。面试的时候一定会考算法题,有关实现的问题,和有关OOP接口设计的问题。

有时我会考python中os.path.join的实现 因为可以反映出一个人对conner case有没有一个基本的思考,和一个人对编程语言的基本熟练程度。

有时我会考一个DFS灌水法求图中最大连通分量的大小。这能反映出一个人对算法最基本的了解(这要求不高吧),对时间复杂度的认识,对正常逻辑(30行)实现把握的能力。

面试最难的问题(其实一点都不过分)我会问这样一道哈希表的问题。给定平面上n个点的坐标,求一条直线y = ax+b,过平面上最多个点。我不知道这道题有没有O(N log N)的解法,但我认为在面试那么短的时间里给一个O(N^2)用哈希表的解法完全没有问题。这一道题考察了对哈希表的理解,对算法的优化,对特殊情况的处理(a = 0, a = infinity),还有代码能力和基本功的体现。
** 如果有N log N解法请私信我!!

所以面试官真的没有在难为你们。虽然在工作中的逻辑实现甚至很少能用到DFS/BFS,但面试的过程中问这些问题是对一个程序员基本修养的一个考察。不要求在面试的30分钟里把题都做对,但在这个过程中很清楚的能看出来一个程序员在今后的工作中的Debug能力,编码习惯,能否写出可维护的代码,以及未来同事沟通的能力

最后的最后,程序员的最终目标不是写可以跑的程序,而是在与同事合作中编写出可维护可扩展高效率的代码。这大概就是为什么要考算法题的原因。
昨天 16:12 2 条评论 感谢 分享 收藏 · 没有帮助 · 举报
7

 杨凌枫,每天混迹在Python|Java|C之间

我觉得是题目太简单导致的问题。
面试官觉得,我擦,那么简单都不会。
面试者觉得,我擦,没法调试没法查资料我怎么写的对,这种基础题目写错就没分啊。
然后不欢而散。

面算法的时候,我一般允许对方做不出来,但是至少要给一个解决思路。就算你告诉我你用谷歌一下可以解决也比遇到算法题就放弃反感大惊小怪好得多。

如果面社招的,我出的题目一般都是可以用暴力解决掉的搜索题这种难度的 ,我直接允许对方上网查资料,给予对方一台装好开发环境的电脑去解决,甚至是来面试前给一个homework。
题目不难,所以有的同学用暴力解决,有的会用简单的搜索,也有的会用A*这类比较漂亮的解答方案。从而区分度还是很好的

我觉一直得比较重要的是对问题的解决能力,至于你用什么工具我并不在意,我所提供的工作环境网络都是畅通的,能够找到有用资料的能力也弥足珍贵,远比单纯的说背个二叉树遍历好太多了。

一家之言,仅供参考,如果觉得这种面试深得汝心,也欢迎投简历给我,yanglf2@lenovo.com

哦,工作地点是上海
昨天 22:49 3 条评论 感谢 分享 收藏 · 没有帮助 · 举报
14

 Rishon Li,移动互联网领域JAVA端一支小考拉

这题又成功的引起我的吐槽欲了。
面试到底应该问什么题?
现在发现好多小公司的人事与面试官根本对自己的项目所需要什么样的人不清楚不了解不关心。
一种面试官就是,我也不知道要什么样的人,基础过关就成,从网上搜来的不知道什么时候
也不知道哪家公司还是哪个无聊人写的面试题,来,同学,先做上一份吧。
做完了看看成绩,嗯,不错嘛,全然不管人家答的题和你要的人有没有相关性。
员工入职后,这不能做那不能做,原因是你项目相关的东西,面试的时候都没问。
另一种面试官,写一堆的算法呀,逻辑呀,力求找个高手,
低层工作的程序员谁会那个,干活一个比一个快,也不见得还记得几个算法。
真正记得住算法的人你感觉不错,人家开的工资你老板又不同意。
面试官同学,你现实点儿成吗?
要么你找老板多要点儿工资来请人,
要么你就按老板给的工资请的合适的人。
老想以老板给的工资请个高手来,还总是埋怨现在的人水平太差,
看看行情成嘛,别浪费自己和大家的时间。
------------------------------
对于真正想招人来干活不是招来供着的,
请明确以下几点。
招15K以下的程序员,就别问算法什么的了,多问点儿你项目中可能出现的问题
看看人家的解决思路,对当前项目中用到的技术的熟悉程度,
性能调优的思路,看看说话办事儿靠谱不,沟通上有没有问题。
如果你说你们简历太多来面试的太多,你们还没找到人,
那一定是你们招聘简历写的太烂,一上来就这个精通,那个熟练,
是个人就可以投,招得到合适的人才怪,只能是浪费大家的时间。
2014-03-20 12 条评论 感谢 分享 收藏 · 没有帮助 · 举报
17

匿名用户

这个有点类似于「明明高考已经比大学课程简单很多了,为什么还有70%的网友吵着要把数学赶出高考」
2014-03-20 3 条评论 感谢 分享 收藏 · 没有帮助 · 举报
3

匿名用户

个人认为记忆各种算法的具体实现没什么太大意义,更有意义的是了解什么时候应该用什么样的算法。

比较好的办法,就是提出一个在某种具体情境下的问题。同时给面试者一台可以联网的电脑。面试官可以坐在后面看他是如何搜索,搜索什么样的内容。以及如何选择,实现,改造算法以适应这种具体情境的。

能从网上直接搜出来答案的问题都不算问题的。

当然我只是做梦而已。
2014-03-20 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
4

 姚冬,哥写的不是代码,是梦想

为了照顾某些面试者的感受,只能出些算法题这种比较简单的题目。
为什么说算法题比较简单呢?首先这些题目是有答案的,其次这些解题方法是可以通过简单学习掌握的,有大把的书籍和资料,可以用普通PC编程来测试验证。

真正难的问题是那些需要多年的研究和实践经验积累才能弄明白的问题,需要很强的分析理解能力,并且需要很好的表达能力,能清晰准确地描述出问题的解决方案。没有特别明确的答案,要在多种方案中结合实际情况权衡利弊做出判断。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
3

 李智丰,前端工程师

撸主的工作是对算法有要求的,可现实是大量跟算法无关的工作也考算法。
正如招一个看门月薪3K的公务员需要985硕士会让人气愤,就算那真的是高大上高科技的门也很难让某些人坦然的。
我应聘的时候讨论的是map用各种有序树和散列法实现的优劣对比,可是工作中遇到的最复杂的算法就只是递归遍历森林而已。。。。就好像学了线代最后只有矩阵的加法和乘法用得上一样。
=============
其实常见的算法理解了过程之后就只是背一下适用场景、实现思路、复杂度分析之类的就能应付很多面试了,面试不太可能要求现场写完整而完备的代码的。
但是既然常见的算法跟大学考试一样并不是很难可以临急抱佛脚的,那么需要用到的时候再去学不很好么?
为什么我们能够普遍接受程序猿“用到什么就去学什么”的观念,却惟独对算法如此要求苛刻呢?
为什么不优先把精力投放在更有用、更重要、更紧迫的方面上却要要求算法呢?
能够很好地掌握跟工作岗位紧密相关的各种技能都已经很不容易、范围很广了,可是在这种情况下却依然不在这些方面做详细考察,却给人以“用数学筛人”的错觉难免难以服众。
面试官真的精通这些而不是为面试而面试?面试官日常工作也用到这些?诸如此类的
这些才是大多数人会遇到的让人气愤的现实。
==========
说白了个人觉得这是一股不太好的风气,正如某些lisp派鄙视新手认为一定要完全掌握才有资格参与讨论,却不愿意做一些让lisp看上去如python般和蔼可亲的帮助新手在现实环境中能够简单上手使用的东西一样。
更有甚者要求Full-Stack却干的狗样儿的活儿还啃着猪样儿的粮票。
其实总的来说,我是支持要懂点基本的数据结构和算法的。。。。否则偶尔遇到瓶颈的时候如果对相关方面完全没有概念的话是没办法自行解决问题的因为无从下手。
昨天 13:40 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
3

 刘跃,软件开发临时工

日薄西山……纸巾盒……我好像知道了点什么…… 话说现在的应届生对于算法的不重视,我认为有一部分原因是学校/学院对算法的不重视。我所在的学院是软件学院,关于算法的课程,仅仅有一门选修课。 此外,期末的考核方式也有问题,只是在纸上写一些选择填空,计算,画画步骤,写写伪码。最难的题目,也就是无空间优化版的 0-1 背包了。 其它课程的考核中,也几乎没有对算法性能的要求,只要大家写出功能就 OK。所以久而久之大家就缺少了某种精益求精的精神。 还有我觉得一些同学观念有问题,总觉得实际项目当中大部分代码对于算法的要求不高。其实学习算法一方面是掌握一些常用的算法,另一方面是学会设计和分析自己写的算法。有的时候自己撸了一段代码出来,虽然能用,但是可能性能经不起考验。此外,就算项目中使用高深的算法的代码不多,但是这却是一个区分优秀码农和平庸码农的地方啊。
2014-03-20 5 条评论 感谢 分享 收藏 · 没有帮助 · 举报
2

 萧岳

因为不让用电脑……
2014-03-20 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
2

匿名用户

没办法。。程序员群体太大,这年头会写个helloworld的都敢自称程序员了。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
1

 李林,啦啦啦

算法不是没用,只不过在大部分初级工作里用不到。
我很讨厌数学,看见那些抽象的数字就会特别烦躁。。
码农就码农,没什么不服气的,我就愿意当个码农,我也就是个码农级别的。

觉得码农和coder之间的关系就好像建筑师和工人的关系。
建筑师厉害,但是没工人盖房子能行吗?

分个等级也没什么,大牛们继续加油写好用的框架。我们码农就来负责给客户实现需求。这样不是挺好吗?

公司招人我觉得需要先搞清楚自己究竟是想招一个大牛还是码农。
昨天 12:55 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
2

 方宇浩,么么哒

我发现现在的人就喜欢黑自己不会的东西!
昨天 15:25 3 条评论 感谢 分享 收藏 · 没有帮助 · 举报
1

 硬石头

假设一家公司某个软件岗位需要招人,你如果作为面试官,肯定是希望找一个有相关背景的人。
比如招聘一个搜索引擎类的人才,面试的时候,肯定要问相关搜索算法如何实现,各个算法之间有何优劣,甚至让你出示一下你在相关领域的论文等等。你说会让你当时写一段二叉树排序么?
又比如招聘一个无线通信的基带信号处理软件工程师,面试问题肯定是64QAM信号如何解调,IRC算法什么情况会比MRC算法灵敏度高2dB,信道编解码中卷积如何处理,各种调制方式使用哪些算法等等。你说会当场让你写一个矩阵求逆的代码么?

面试时考算法,只有三种情况:第一种是工作密切相关,这种情况下,问的算法可就不是快速排序、二分查找这种本科生的东西了。
第二种情况,就是你的技术背景不匹配岗位要求。什么样的候选人不匹配岗位要求还会得到面试机会?本科应届生(硕士以上基本会在本行业中有所建树)。

对应届生面试,真的想不出什么好的面试题来考察能力。应届生完全是一张白纸,你问他相关行业知识,这不是难为他么?而算法是基础,是基本功,是应届生能力和岗位需求唯一能匹配的地方。

还有一种情况,就是这个岗位太新了,市场上没有几个业内人士。那想招个合适的人,只有面试算法了。比如google就经常面试算法(而且还特难)。

回到题主的问题,工作中的算法是相当艰深的,每个算法背后都是一堆paper。面试问本科应届生肯定是问一些很简单的算法了。为何还让候选人很生气,我觉得主要还是因为很多面试官面试社招生也面试算法了。

对于我自己,我作为面试官,如果是找个新手来培养,面试个排序啊的算法还是很有用的;如果找个有相关背景的,问的问题都是围绕岗位要求而展开的。每个行业的圈子都不大,就那么些人,大家都发过paper,身上多少都有几个专利,兜两圈都能攀上关系,你说面试的时候出个快速排序,无论出题的还是做题的,老脸都没处放。
08:14 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
1

 陈超,iOS码农

只能说岗位不同吧,你要是涉及数据挖掘、自然语言处理这些必定是要和算法打交道,但是你说只做客户端或者前端基本上是八杆子打不着算法啊,很多大学里学过或者工作后自己自学过的人,只要不用的话,会很快忘掉的
2014-03-20 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
1

 李埃德蒙

工作中的算法是结合场景的,更像在探索,面试过程不结合场景。生硬的来一个比较古板的课本上的问题,更像考试,大家都不喜欢考试吧?
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 陈茂,打酱油的。

因为你的目的达到了。用简单面试题过滤了那些不想动脑子,不够聪明的的人。不要指望他们写的代码能长久的存在你的代码树中。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
2

 立党,利益相关:一切美食

因为大部分人智商确实不够,而且大部分人大学里确实没好好听过课
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
1

 Lumiere Du,考古;环境;计算机

算法是逻辑的体现,也是创新的基础。若你不学不知,就会出现明明有成熟算法却要自写低效代码的情况,也会出现没有算法就无解不能自写一段的情况,然而有了算法却要改进一下让效率更高的情况却是绝对不可能出现了。coder和码农,区别就这么多。或许一家公司只需要码农,但你不能否定人家对coder的追求。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
1

匿名用户

1,有些面试官,图森破,就“只”会考算法,作为面试官好好准备一下面试题也是必须的吧。
2,对不满意的你考了算法的,那你就问知识面,不满意你面了知识面的,那你就面系统基础,不满意你面了系统基础的,就面一些有意思的考逻辑考想法考发散思考考解决问题能力的问题(自己遇到的,一定遇到过的,还聊的有意思)…… 总分100分,让一项占分就溢出了的不能让其他猿信服。
3,还不满意的,角色互换一下,让面试者面试自己。 
4,还不满意?那,战三百回合跨专业领域的知识何如?
有的面试,失败了也很爽。双方都爽,双赢。

顺便表示一下,"程序员能力矩阵"里可面的也多了去了。Programmer Competency Matrix
2014-03-20 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 张云桥,多学习,少YY。

这其实是个伪命题。“面试题比工作遇到的算法已经简单那么多”只是你接触到的情况,并不代表普遍的情况。因为微软内部的要求和八流公司是不太一样的。
我知道这么说不上台面,不过你确实可以问问做大PHP的一万块以下能熟练撸二叉树各种遍历的有几个。
面试中撸不出来很多是因为不熟,工作中必然能撸,就是慢点而已。

你得到抱怨的真实原因是:你们确实需要这方面的基础,这是很起码的;而慕名前来面试的人水平参差不齐,很多屌丝只是冲着高大上碰碰运气而已。我曾经有一份offer是13k,最后的大题是二分法填空。这样的人去面试你们公司,结果可想而知。他觉得自己经历过的公司根本用不到这些,所以微软这么做太事儿逼了,眼界窄而已。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

匿名用户

IT,互联网的圈子越热,你大码农圈的两极分化就越严重。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 贡瑞可

普通程序员一个,谈谈自己的看法。
我们部门有一个老程序员,面试的时候特别喜欢问快速排序。
我:为什么你每次面试都问快排?
他:我和xxx一起面试的时候,xxx喜欢问快排。
我:算法我都忘的差不多了,平常也不怎么用。
他:是啊,我也记得不是很清楚了。

普通程序员需要用到算法的机会很少,慢慢的以前学的也都忘了;而经常需要和算法打交道的,会越来越意识到算法的重要性。

一个只注重功能的实现,对算法不甚了解,另一个却对算法情有独钟。这两类人碰到一起是一个很尴尬的场景。

我觉得这可能就是为什么会发生‘面试者义愤填膺’这类情况的原因

PS.我平常工作也没用到过什么算法
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 Milo Yip,遊戲程序員

这和一般考生离开考场时的心理状况一样吧。总有一些人会诅咒出题员,而不反思自己的不足。

邪恶地想,如果是面试形式,问一些很少人听过、而又未有解的题目,看看应试者的反应,心理质素如何……

知识技能不足还可以不断学习,心态可能难以改变。
2014-03-20 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
0

匿名用户

面试中所有问题,都不是看是否说出正确答案。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 刘科,不知道学架构还是项目管理的男猿

算法派和功能派本来就是两个门别。
更何况还有一些更郁闷的事情,比如,从大数据流行起来之后,很多互联网公司都开始问程序员们大数据高并发的处理方案,很无语的一件事情。尤其是一些不用接触到那样业务的职位,甚至是没有那方面需求的公司。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 赵连祜,C++程序员,只写代码,不做PPT

好多人工作中用不到算法
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 halzhang,懂生活的码农

我不认识你,不了解你,这么多求职者,我怎么选择,怎么分辨优劣呢?只是一种手段。
2014-03-20 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 程墨Morgan,互联网产品开发者

愤怒都是对自己无能的情绪表达。
昨天 09:09 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 陈炸喷

如果要立志做优秀程序员的话,算法这种东西,就是平时积累的,经常用就自然游刃有余了。。如果你比较少碰代码的话,自然就生疏了。。你说还是呀。。
会写个helloworld都敢说自己掌握了某种语言的人自然就义愤填膺了。。
09:45 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 范永勇,Programmer/网页游戏开发/ECNU/菜鸟摄影…

楼主暴露了,MS无疑~
昨天 19:00 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 Isaac Pei,我是逗比

公司招来了人可能只是做一些简单的东西。
但是公司需要的是聪明的员工,算法对于你的暂时工作可能没那么重要,但是能从中看到你的思路,看到你遇到问题的处理方法。公司喜欢聪明人。

但是很多人(比如我)面试问到算法题,感觉智商被压制被完爆被凌辱被鄙视,颜面扫地优越感尽失。必须暴跳如雷大骂特骂一下才能发泄好嘛?
昨天 20:10 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 bhuztez,OOP ? FP

考算法是一种非常好的人才过滤方法

就是这样
昨天 22:14 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 路路,爱厨房爱摄影的徐工……

因为算法题就是用来筛去这些抱怨的人的。
昨天 22:41 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 MOsky泽,啊哈,还要介绍~

对于应届大学生中啥都不会的人而言,算法题实在是——太痛苦了

完全不会做啊!!
有一回校招,一家公司笔试现场。

试卷发下来,一张写了几行题目的纸,两张白纸答题。题目三道算法题,寥寥数字。

——完全不会啊!一笔都写不出啊!时间2个半小时啊!

你让我怎么做?
让在那傻坐坐满2小时,很痛苦的。

前提是不会做,那次考试做出来就几个,都直接过了。
昨天 23:43 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 燕剑波,关注新技术,学好基础知识

作为一个在纸上写自己名字都有点费劲的人,更别提在纸上写代码了。写代码习惯删删改改,到了纸上写不了几行就乱糟糟的,心里很烦躁,原本就不是很熟,笔试时的紧张,彻底没感觉了。有些职位可能供大于求,那有点优势,多方面考察我也是能理解的,但既然是写代码,那就提供个开发环境可好。面试那么多回,只有一家公司提出上机,2家公司要求提供实际编程题。
01:55 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 潘尧振

正面回答一下LZ的问题,我觉得这种矛盾是面试者和面试官的经历不同造成的。
我面试过不少人,有的面试者很有工作经验,应该也很能干活(根据其对各种技术细节的了解判断的),但是对于面试算法题很抵触。
一部分人认为“我不懂算法不是照样在现在公司做业务骨干拿着几万月薪么”,那么只能说,我们这的岗位不适合他们。
有一些公司,例如我待过的某著名企业管理软件公司,在里面做的事情无非就是业务逻辑和数据库ACUD,懂不懂算法不重要,因为核心的算法已经比较成熟了,而且有专门的团队在维护;而在里面工作的一些人久而久之就觉得不会算法也可以混的很好了。
也有一些公司,处在比较新兴的行业,遇到很多问题是靠搜索也很难找到好的解决方案的,这时候人是否聪明已经是否有好的技术基础和行业经验,直接决定了是否能提出快速高效的解决问题。
对于面试官来说,面试者的行业经验是可遇不可求的,而考察面试者是否聪明和是否具有技术基础,使用算法解决特定的问题是最直接的面试方法。
04:46 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 cswuyg,学习中

if (问题 == XXX){    if ((应聘的是不需要用到XXX的工作) && (项目/工作经验中的YYY亮点跟应聘职位相符合))    {        // 艹,老子是来面试的不是来被你玩的        std::cout << "呵呵" << std::endl;    }}

有的人亮点是研究算法,搞研究,给搞产品的人提供基础支持。
有的人亮点是快速解决问题,搞产品,快速占领市场,给搞研究的人攒钱。
有的人是......
工作上,我一直不纠结是该造一个更好的轮子呢,还是从现有的轮子里选一个,因为我现在做的不是研究,是赶紧把东西整出来。干了这么多年“赶紧整出来”的工作,你居然来问我,重造轮子的技能~~ 万万没想到啊
10:46 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 ykin,你看看你写不出代码的样子,真是丑陋

Disclaimer: 我曾多次折戟大公司的算法面试,这些公司基本是诸位耳熟能详的。文笔不通顺还请见谅

算法题没有过关说明三件事:
1. 没认真准备
2. 没努力学编程
3. 智商不过关

没认真准备:因为一些原因,去年我找到实习后,仍然不得不去某著名游戏公司的电话面试。我没有做任何准备,而且当时线路非常有问题,导致双方沟通不畅,没有给出对方想要的最低的复杂度的代码。

没努力学编程:一开始我和很多人想的一样,算法知道个复杂度就行,后来发现,你没实现过,你不熟练,很多的坑根本躲不过去的。用别人的代码,别人用了某个算法,你需要提升你的代码性能,如果你不从里到外的了解别人使用的这个算法,比如你用这个算法对某个数据结构增删改查,什么情况会最坏,什么情况会最优,什么情况平均复杂度不错,什么情况随机会有奇效,你怎么弄?然而真正想对一个算法在一定时间内有了解,数学、编程和算法的功底都不能差。在我以前功底不行的时候,真的是太浮躁,自以为那个复杂度自己背一背就真的可以了解。现在功底慢慢进步中,回想当年自己那副自以为是的样子,真是丑陋

智商不过关:我也属于这个情况。另外适用于少部分公司面试。曾经被要求使用斐波那契堆实现代码,我直接投降。
另外关于智商,其实是一个非常难以量化的指标,有的时候这人你看似反应快,实际上是他长期自我训练、刷题、刷书的结果,你说出来感觉非常牛逼非常新鲜的东西在他眼里都是搞过的。我现在的观点是,难题做不出来,还是积累太少,这就是欠练。


总之,我觉得只要你想成为更牛逼的程序员的话,肯定不会不下功夫在算法上。而且下功夫在算法面试上,你怎么样也不太会吃亏。就是常常李菊福黑ACM/ICPC比赛的菊苣 @vczh都至少刷完了1周目的算法导论,真搞起算法,我相信他实力应该也不错...
10:54 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 王迅,硬核玩家是啥?

作为一个被面试者,我觉得大部分「义愤填膺」的人可能反感的并不是算法题,而是非常秀下限的coding题。

很多外企在国内进行的面试,面试官水平同样参差不齐,以为coding题就等于算法题。去年校招的时候,碰到一个刚面完Amazon的,听说他整个45分钟的面试,全都是类似这样的题:输入unix时间戳,输出格式化表示的当前时间。

对于这种明目张胆地以招码畜为目的的公司,真的不知道该用什么表情来面对了。
11:22 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 frank zhang

看了各位的回答, 我是有点羞愧的。羞愧的是我自诩是一个程序员,而且差不多也就是能写写链表排序,插入,删除节点那种程序员,要我手动写个快排序,还是挺无力的。问题是:老子是个嵌入式程序员啊!


每天写的代码不多,可能就几行吧,差不多就是配配寄存器,看个电灯,按个键,看log打印,一句代码调半天你们有没有试过!!很多时候就是某个或某几个寄存器写0还是写1的问题纠结半天,各种排列组合试一遍啊!你们debug按一下F5就OK啊,红点一点,watch窗口一开一切尽收眼底啊, 我们debug一下就要烧整个代码镜像啊,就是刷机你造不造,搞得不好还时不时给你看看你没看过的打印蹦出来你造不造?

什么? 你这个模块要用到排序?老子只能google给你找一段改改参数,真的就是那种能跑就行了啊,效率应该比老子自己写的冒泡不知道好多少, 调通模块就好了。你跟老子扯性能? 你造不造linux啊, 国外的大神都把系统启动,中断处理,文件系统, 进程调度各种算法优化都搞的差不多了,你只要把驱动调通了挂上去能work了不出乱子了性能基本上OK了啊! 跑起来杠杠的啊!

老子作为一个程序员,也很崇拜算法啊,大学时候ACM也是没事就看看练练啊! 现在呢? 老子要深造也不看算法啊, 就看汇编啊,什么启动代码啊,编译脚本啊,uboot啊,linux啊,各种东西看半天啊, 还要找各种文档各种博客看啊,自己光看代码根本看不懂啊,把ARM公司的各种文档当鸡汤文来看啊,很励志啊不信你们试试!!逻辑性很强还很带感呐~
唉, 搞了半天老子原来连码农都算不上啊!!!哭。
13:00 1 条评论 感谢 分享 收藏 · 没有帮助 · 举报
0

 SilenceSu

面试算法表示没有感觉。
最受不了的就是 都工作好几年了。

问我
Java是一种________,_________,________,__________,_______,_________,_______,_________语言。”

答:简单的、面象对象的、分布式、解释的、健壮安全的、结构中i的、可移植的、动态
13:29 添加评论 感谢 分享 收藏 · 没有帮助 · 举报
1

 周维,程序猿

有几个公司工作里能用到算法的。。。二叉树这种玩意绝大部分人毕业后就只是在书上才能见到了好么


在实际工作中,算法真的那么重要吗?

我觉得,一个产品,可能也就需要一两个talent的算法工程师负责处理产品从发布到规模扩大化过程中遇到的部分算法问题,而剩余的大部分并不需要你的员工有这种talent,他们只要思维逻辑缜密就足够了,而且这剩余部分占据了产品开发一大半比重。
添加评论 分享
按票数排序按时间排序

11 个回答



1、无论是做软件,还是任何其他行业,甚至包括做人,很多时候,都是在解决问题。遇到麻烦,想办法解决。 

2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。 

3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。 

4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。 

5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。 

6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。 

7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。 

8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。 

不再把人的问题牵涉进去了,那是没底的。 

那么,算法算老几?
分享到:  
[代朋友转贴][求助]恳求师大的都来挽病危 ... | 博客访问量超过50万了!
  • 2007-03-26 23:39
  • 浏览 17979
  • 评论(56)
  • 论坛回复 / 浏览 (55 / 28774)
  • 分类:非技术
  • 相关推荐
56 楼 jasongreen 2007-05-19  
庄表伟 写道
hurricane1026问到:我问的难么? 
这个帖子,我就不跟了,说说自己的看法: 

1、无论是做软件,还是任何其他行业,甚至包括做人,很多时候,都是在解决问题。遇到麻烦,想办法解决。 

2、最简单的问题,就是能够在书上找到现成答案的问题。比如:哪种排序的效率更高。 

3、如果一个问题,书上没有现成的答案,能够通过Google、查找相关论文等等手段,找到答案的,也是简单问题。 

4、如果,搜索不到现成答案,但是能够找到询问的人,问出答案来。比如Google不到,只能到论坛来求人,哀告,冒着被隐藏的危险提出问题。无论当事人觉得如何困难,其实都是小Case。 

5、如果无论如何都找不到答案,怎么办?自己找呀!比如,这是一个开放源代码的项目,那就看代码。如果源代码都不开放,那就Hacking。反编译、debug、单步跟踪、设断点、打log,用尽一切办法,找到答案。 

6、有很多问题,根本就是左右为难,你也知道了整个困难的全貌。然后怎么去解决他呢?左思右想,反复权衡,尽可能找到最好的方案。甚至如果有创意的话,能够想到一个两全其美的解决方案。 

7、更加困难的问题是:它根本就没有正确答案,没有最优解。连如何评价各种解决方案的好坏,都说不清楚。怎么办?你还是得做出决策,然后执行。 

8、再进一步,它本来就没有问题。但是,一个原本已经解决了的问题,你现在来考虑,有没有可能存在更好方案。比如:新的切入点;新的框架;新的语言;新的开发模型。这就更加困难了。 

不再把人的问题牵涉进去了,那是没底的。 

那么,算法算老几?


此文和 hurricane1026问到:我问的难么? 联系在一起。 

不知所云。 

算法为王。 

1026帖子中的担忧,我很赞同。
55 楼 抛出异常的爱 2007-05-19  
发现有些人变化了。。。。
54 楼 jindw 2007-05-19  
我觉得,算法这种东西,自己当时想通了就行,没必要死记下来,就算下次被某个面世官问倒了也无所谓。

每一道经典的算法,都体现了一些解决问题的方法。就算你忘记了算法的具体细节,但是这些方法能在你脑子里留下一个或深或浅的印象。将来自己解决问题的时候,不知不觉的就能用上。

相反,把那些细节记的死死的,个人觉得,反而会影响自己的创新精神。

好读书不求甚解,或许就是这个意思吧。
53 楼 阳光晒晒 2007-03-29  
有前途?
好还是不好?
没本事指望靠好前途吃一辈子,
晚年被迫下岗
待业在家的例子放在眼前.

大家在选的时候还是要甚重啊
52 楼 庄表伟 2007-03-29  
blueoxygen 写道
solospider 写道
其实个人感觉一个地区的软件行业算法应用的程度代表了这个地区软件的发达程度。 
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。 
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。

做应用为啥水平就低了? 非得写编译器才叫水平高么? 
哪个国内公司能写个ORALCE Fusion或者SAP mySAP出来呢? 
不仅仅是业务问题,一个SAP可以兼容几乎所有硬件平台,应用于几乎所有主流数据库。人家不照样活得潇洒着呢? 
卖一套SAP就几乎要卖一套ORACLE的DB,或者IBM HP SUN的SERVER和操作系统,可以说,底层的咽喉被人家掐住了,可是几十年了,ERP领域除了ORACLE靠收购扩大市场份额,还是没人能撼动SAP的地位。 

我感觉国内不是什么做底层的太少了,是能专注的太少了。整个市场环境就是浮躁的。写不出来DB,那写得让人满意的应用软件多么? 
总感觉做这个才有前途,做那个才有前途。其实做人才最有前途。


顶这句话! 

技术没有高低贵贱,只有不是够用心。
51 楼 blueoxygen 2007-03-29  
solospider 写道
其实个人感觉一个地区的软件行业算法应用的程度代表了这个地区软件的发达程度。 
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。 
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。

做应用为啥水平就低了? 非得写编译器才叫水平高么? 
哪个国内公司能写个ORALCE Fusion或者SAP mySAP出来呢? 
不仅仅是业务问题,一个SAP可以兼容几乎所有硬件平台,应用于几乎所有主流数据库。人家不照样活得潇洒着呢? 
卖一套SAP就几乎要卖一套ORACLE的DB,或者IBM HP SUN的SERVER和操作系统,可以说,底层的咽喉被人家掐住了,可是几十年了,ERP领域除了ORACLE靠收购扩大市场份额,还是没人能撼动SAP的地位。 

我感觉国内不是什么做底层的太少了,是能专注的太少了。整个市场环境就是浮躁的。写不出来DB,那写得让人满意的应用软件多么? 
总感觉做这个才有前途,做那个才有前途。其实做人才最有前途。
50 楼 solospider 2007-03-29  
其实个人感觉一个地区的软件行业算法应用的程度代表了这个地区软件的发达程度。 
就我看来国内的软件企业大多是上层开发,不太关心底层,主要是和业务逻辑打交道。底层开发都是老外做好了的。 
个人感觉算法在软件行业应用非常广泛:比如安全加密,计算机网络,人工智能,操作系统,数据存储等等,实在是太多了。而国内的软件公司大都是做应用软件比如办公软件,ERP什么的,对这些方面接触的少就不足为奇了。这代表了国内的软件水平还是比较低。
49 楼 hideto 2007-03-29  
文不对题,答非所问
48 楼 hexiaodong 2007-03-29  
有理说理,没理就给星星吧
47 楼 ray_linn 2007-03-28  
hexiaodong 写道
ray_linn 写道


数据仓库...就能直接连接到商业目标上么? 
是我无知了还是你无知了...........


好大的帽子 

数据仓库当然只是工具,实现目标还得看你怎么使用这个工具。但数据仓库及相关工具解决了你的算法问题,仓库或者集市的模型还得你自己建。 

另外,还是你比较无知一点



好象挺你的人一个都没有,小星星好象倒是给了你一个.... 

46 楼 hexiaodong 2007-03-28  
ray_linn 写道


数据仓库...就能直接连接到商业目标上么? 
是我无知了还是你无知了...........


好大的帽子 

数据仓库当然只是工具,实现目标还得看你怎么使用这个工具。但数据仓库及相关工具解决了你的算法问题,仓库或者集市的模型还得你自己建。 

另外,还是你比较无知一点
45 楼 anweixiao 2007-03-27  
仔细想想,数值算法等诸如此类的书,用java进行解释的还真罕见.........
44 楼 yimlin 2007-03-27  
ray_linn 写道
hexiaodong 写道
yimlin 写道

robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。


数据挖掘需要你自己写算法么? 
那么数据仓库、数据集市以及相关的OLAP工具是干什么的?


数据仓库...就能直接连接到商业目标上么? 
是我无知了还是你无知了...........


nod! 

那些工具都只是给了一个手段,之上的Topic等需要我们来建
43 楼 ray_linn 2007-03-27  
hexiaodong 写道
yimlin 写道

robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。


数据挖掘需要你自己写算法么? 
那么数据仓库、数据集市以及相关的OLAP工具是干什么的?


数据仓库...就能直接连接到商业目标上么? 
是我无知了还是你无知了...........
42 楼 dwangel 2007-03-27  
hurricane1026 写道

api不可能记住,也不回有人记。 

常用的人记得住,也会有人记的。 

当年那些写Windows程序的程序员,不记api开发效率要下去一大截。
41 楼 hexiaodong 2007-03-27  
yimlin 写道

robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。


数据挖掘需要你自己写算法么? 
那么数据仓库、数据集市以及相关的OLAP工具是干什么的?
40 楼 nihongye 2007-03-27  
算法对于学生算不上什么东西吧,他们要谈恋爱,玩游戏,做生意,各种各样的活动,各种各样的考试.学习算法能帮得上他们什么忙,有多少牛顿驱动他们去学习算法.
39 楼 ahuaxuan 2007-03-27  
hurricane1026 写道

作外包也不一定一辈子做外包,更不一定一辈子做低层次的外包。不能今天吃饱了就不想明天吃什么吧。 

你这样说只能说明你不懂外包得行情了
38 楼 yimlin 2007-03-27  
下面这段话从“我问的难么?”回复中copy来: 
“算法当然重要,但他是和数据结构在一起的,是面向过程开发时代关键。在面向对象开发时代(特指应用开发),如何用模型表达业务,用模式分离变化,是大多数人面临的任务。即便是性能处理上也不仅仅只会考虑算法,更多的可能是减少数据库连接,文件读取等手段。” 

robbin说的那些是互联网应用,应用的范围不一样,互联网应用尤其是web2.0都是要分析用户的行为,这些东西都算是数据挖掘的内容,没有算法是不行。
37 楼 zhangzhaofeng 2007-03-27  
End 2 End performance  这个又是什么?

评论

36 楼 weiqingfei 2007-03-27  
hurricane1026 写道
weiqingfei 写道
hurricane1026 写道
weiqingfei 写道
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。 

算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。 

但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。 

至于算法的实现,不一定非要装在脑子里。

你说的这个也对。不过窃以为大多数问题都不是现成的答案,你去查书也找不到,世界上没有万能博士的存在的。需要你去利用现有方案去改进,去类比。你什么细节都不知道,你怎么类比?难道你去先看一遍,哦,原来这个样子,不能用,再去看下一个?不是说你要5分钟写出一个多么麻烦的算法。至少你脑子中要知道每个的思想是什么,这样你在用的时候才得心应手。 
以前你的帖子里说,一部分人学的慢,但是扎实,一部分学的快忘得快。 
要我说,我如果要人,要学的快记得牢的。如果找不到,也要扎实的。学的快忘得快的人没有用心学。 


我同意你的部分说法,因为你和我说的不是一个领域的问题。 
但是同样的,凡事有个度,我想大家都知道API这个东西,一般只要知道API是做什么的就可以了,用的时候再去查,我想没有人能够把API都背下来。 
但是如果你打算在某方面做个东西的时候,至少你要在这段时间内,要把相关的API熟记在心,甚至于一点点微小的区别都要搞清楚,但是过了这段时间呢?你还能记得住么? 

可能你喜欢的是那种学的慢记得牢的那种,确实那种人适合做窄领域的研究。 
但是不代表学得很快忘得快的人,没有用武之地。(否则我不是要喝西北风了) 


api不可能记住,也不回有人记。 
我的意思是我问的东西相当于计算机领域中的1+1,难道一个人跟你说我1+1记不住,不过不要紧我可以很快查到,你会用他? 
还有你说做过一段时间的东西,这么说吧。我现在做的东西,从2006年5月开始查外文资料。找领域课题,到现在为止,共翻阅参照的外文资料至少20-30篇了。我每个亲自看过的都可以给你随时讲解任何一个细节。 
凡是我专心读过的书,你可以随时问我。比如我去年给GF辅导初等数学。发现自己还没有做不出来的高中题目。高中毕业7年了。解析几何拿来我还是能做,就是慢点。我的看法是认真学过的东西,是在脑海里有很深印记的。我相信大家应该有共识,你觉得老大们在javaeye上开坛论道的东西都是昨天才学的?越是学的久的东西越是经过消化的越多,越能够讲出其中的精髓。。。。 
学了就忘要找找自己的原因,学习一下别人记忆的方法。不是什么值得夸耀的事情。。。。。 


如果你像你说的那样的话,我真的很佩服你。 

高中的东西,现在拿来让我做,我必须得翻书,否则我不敢保证我会做出来。 
换句话说,你让我复习一段时间,我还是能够考上现在的大学的,但是就让我这样直接去考,我想我还是不要给学校丢脸了。 

当时学得怎么样,这样说吧,我经常会被叫到办公室和老师讨论问题,当然如果是你说我老师笨的话,我无话可说了。 
在高中时,我只要做过的数理化题,我到毕业都知道这题我做过。 

至于说,我学了就忘(我只是忘记某种程度的细节),不是什么值得夸耀的事情,我承认。 
但是我也不认为是什么值得惭愧的事情。 

在前一个公司,我是做demo的。用到很多我从来没有接触过的东西,但是时间很短,必须要在第一时间做出demo向客户演示,否则就被别的公司抢先了。 
仔细研究,当然可以,但是没有人有精力仔细研究那么多东西,这就要考验你的领悟能力。 

当然,有超强的领悟能力,又有非凡的记忆能力自然更好。 
可惜我只是个平凡的人。
35 楼 回帖专用 2007-03-27  
hurricane1026 写道
回帖专用 写道
个人提倡,对非数学专业人士来说,先解决肚子的温饱问题,先解决不加夜班的问题,先解决身边的MM问题,再来学习数学. 

其实夜班和温饱都与数学不冲突。核心竞争力高了,进正规公司的几率也大。这样待遇上去了。加班变少了。。。 
就mm这个看天分。。。

实则上我的意思是,数学是你第二个MM,需要花很多时间陪. 
34 楼 winterwolf 2007-03-27  
非外包也很少用到算法 因为那个层次太低级了 距离应用开发太遥远了. 

考算法还不如看看他会不会做测试性能. 
33 楼 dovecat 2007-03-27  
hurricane1026 写道
回帖专用 写道
个人提倡,对非数学专业人士来说,先解决肚子的温饱问题,先解决不加夜班的问题,先解决身边的MM问题,再来学习数学. 

其实夜班和温饱都与数学不冲突。核心竞争力高了,进正规公司的几率也大。这样待遇上去了。加班变少了。。。 
就mm这个看天分。。。
学到那个程度,可以提供一个算法来算出在什么地方,什么公司,什么情景下碰到一个心仪MM的几率,以及成功的几率了. 
哈哈!~
32 楼 simohayha 2007-03-27  
俺现在只是解决了温饱,其他的还没解决呢。
31 楼 robbin 2007-03-27  
我自己不是计算机专业出身的。但是从事软件行业以来,把计算机的基础课程也补的七七八八了,什么数字逻辑,抽象代数,系统结构,操作系统等等,唯独算法和编译原理两门基础课没有补,至今觉得遗憾。所以现在一旦碰到需要算法的场合,碰到需要语法分析的场合,就感觉非常窘迫。 

不要说web编程里面不需要算法,其实用到算法的地方很多,例如你做web应用,如何保证用户每次访问,都返回随机结果,而且随机结果不会重复出现已经出现的结果,再例如你要防范别人扒你的信息,你如何提供好的混淆机制。JavaEye投票,使用什么算法能够提供最有效的方式,保证最大程度的论坛质量?如何根据帖子的点击总次数,不同人的不同点击权重,不同人的投票权重,计算帖子的质量?如何根据用户行为计算用户偏好程度?难道这些都不需要算法支撑?这些都还不算上全文检索了。如果需要中文的全文检索,那纯粹是算法的用武之地了。再考虑通过中文分词以后,统计关键词的重要性,关键词的关联度和反义度,关键词和文章的关联性算法,文章和文章之间通过关键词匹配程度计算出来的关联性,用户和用户之间通过关键词匹配,文章关联性计算出来的同好比例,处处都是算法。 



30 楼 回帖专用 2007-03-27  
个人提倡,对非数学专业人士来说,先解决肚子的温饱问题,先解决不加夜班的问题,先解决身边的MM问题,再来学习数学. 
29 楼 weiqingfei 2007-03-27  
hurricane1026 写道
weiqingfei 写道
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。 

算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。 

但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。 

至于算法的实现,不一定非要装在脑子里。

你说的这个也对。不过窃以为大多数问题都不是现成的答案,你去查书也找不到,世界上没有万能博士的存在的。需要你去利用现有方案去改进,去类比。你什么细节都不知道,你怎么类比?难道你去先看一遍,哦,原来这个样子,不能用,再去看下一个?不是说你要5分钟写出一个多么麻烦的算法。至少你脑子中要知道每个的思想是什么,这样你在用的时候才得心应手。 
以前你的帖子里说,一部分人学的慢,但是扎实,一部分学的快忘得快。 
要我说,我如果要人,要学的快记得牢的。如果找不到,也要扎实的。学的快忘得快的人没有用心学。 


我同意你的部分说法,因为你和我说的不是一个领域的问题。 
但是同样的,凡事有个度,我想大家都知道API这个东西,一般只要知道API是做什么的就可以了,用的时候再去查,我想没有人能够把API都背下来。 
但是如果你打算在某方面做个东西的时候,至少你要在这段时间内,要把相关的API熟记在心,甚至于一点点微小的区别都要搞清楚,但是过了这段时间呢?你还能记得住么? 

可能你喜欢的是那种学的慢记得牢的那种,确实那种人适合做窄领域的研究。 
但是不代表学得很快忘得快的人,没有用武之地。(否则我不是要喝西北风了) 
28 楼 庄表伟 2007-03-27  
to:T1 

我很同意你的观点。说两句题外话: 

dreamhead担心我误导初学者。我就在想,要是个新手看到javaeye的这几篇关于算法的讨论以后,会怎么想,是不是会更晕? 

当初我好像是跟你还是跟谁说过一句话:“初学者嘛,就是拿来误导的    ” 

余下的话还没想好怎么说...
27 楼 回帖专用 2007-03-27  
从招聘的程序上看,我同意Robbin的这个说法,问这些问题事实上是一个reference check. 

  从数学对解决日常工作上来说,个人的看法是,一个好的程序员最好是要高标准严要求.一个人选择什么,同时你也必须放弃什么.熟悉API,熟悉Framework,当然能够让你赚个3/4千块钱图个温饱.但是你要说我知道这些就够了,我debug能力强就够了,那么你最好也就放弃去google去MS拿着1/2万的月薪的打算.当然也有人会说,赚钱也不一定要学算法吗,学数学吗.那些炒股的大户学过算法?事实上任何赚钱的行当都是不进则退,我一个朋友是私人老板以炒港股和纳斯达克为生.他告诉我他每天看的中外文报纸期刊都有机箱那么高一摞.上次我和他聊很多关于PushMail方面的问题,他说的都是头头是道几乎是这方面的专家.他说不管哪方面你要想赚钱,首先要成为那方面的专家. 
  再回到数学上来,你要成为程序方面的专家,那么数学最好学习.数学能干什么?锻炼思维,训练感觉.这些能讲得都已经讲了.我这里只想说的就一句"功夫在诗外".其他的不说,你要想成为程序方面的专家,那么你必须追赶最新的计算机发展方向,而不是等人翻译出<Programming XXX>再来学习,那实则上已经是二把刀了,国内外可能已经有无数的人在你之前已经看准了这个方向.你要学习最先进的发展趋势,最重要的就是能读Paper.国外和国内不一样,但凡一个开天辟地的伟大应用都是从大学里孵化出来的.你能不能读懂各种Paper,就决定了你能不能跟到跟对计算机发展的心跳.但是学术Paper不是news Paper,光英文好还不行,你必须有数学基础,必须能把那些数学牛人的理论与现实联系在一起.新技术成千上万,那个好,那个不好,那个有前途,那个没前途.完全看对于技术上的知觉.这种知觉不是说你熟悉多少API就能得到的,你必须知其然,知其所以然.好怎么个好法,又好在哪里? 
比如说我在研究Erlang的时候,读HPE compiler创始人写的Erlang VM的优化报告时,他就提到什么是图色法,Erlang的Private Process模型对GC效率算法的影响.这些我都不懂然后去和Elminster,Potain讨论,然后再回过来看那份Paper的时候豁然开让,终于知道Erlang为何性能高,高又高在哪里?跟踪一个新技术,第一关就是要说服自己. 

满足于任何已经学到的知识和经验,成天想着建造这个壁垒那个壁垒的人既不能成为一个专家,也不能成为雇佣专家的人.最好的壁垒是自己,最大的壁垒的也是自己. 

26 楼 weiqingfei 2007-03-27  
其实我觉得大家观点大方向应该是一样的,只是一“度”的区别。

算法需要不需要学,我觉得在一定程度上还是有必要学的,否则即使你google,都不知道该去google什么。

但是要不要记住,记到什么程度,因人而异,在我看来,只要知道什么算法能解决什么问题,就可以了。

至于算法的实现,不一定非要装在脑子里。
25 楼 ahuaxuan 2007-03-27  
庄表伟 写道

1、每个人都是从自己的工作经验出发,来总结的。所以,从我的经验来说,我的工作中需要算法的情况,的确是非常少。 

没错没错,尤其是做外包,算法涉及的就更少了,但是我们涉及的少是因为我们在做外包,对不同的人,需要的东西是不一样的,就象robbin说他的网站需要算法来做会员同好功能一样,他有他要的理由,我们不能指望一个工具能满足我们所有的需求,钳子有钳子的作用,榔头有榔头的作用,不能说我们不用榔头就否认榔头的价值。 
但是从市场份额来看应该还是做外包的多,也就是说大多数的程序员都用不到算法 

24 楼 ray_linn 2007-03-27  
庄表伟 写道
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。 

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。 

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他? 



我会帮他打开eclipse,然后坐在他的旁边,一言不发。看他如何从头熟悉一个过去没有用过的IDE。 

更有甚者,如果我正好有空的话,假设他说他用过Eclipse,那么我就给他一个NetBeans,看他怎么样去熟悉一个从来没有用过的IDE。 

weiqingfei,握手。



我打开一个Visual Studio, 在里头大写java source code....
23 楼 simohayha 2007-03-27  
忘了是spring嘟嘟,还是老庄说过的,面试的时候,就问他什么东西最不擅长,然后让他做,看能做成什么样子.
22 楼 庄表伟 2007-03-27  
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。 

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。 

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他? 



我会帮他打开eclipse,然后坐在他的旁边,一言不发。看他如何从头熟悉一个过去没有用过的IDE。 

更有甚者,如果我正好有空的话,假设他说他用过Eclipse,那么我就给他一个NetBeans,看他怎么样去熟悉一个从来没有用过的IDE。 

weiqingfei,握手。
21 楼 weiqingfei 2007-03-27  
robbin 写道
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。 

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。 

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他? 



如果说,现在急需一个人能够立刻用eclipse来开发项目的话,这个人自然不能要。 
如果不是,我会给他几分钟让他熟悉以下eclipse,看看他能在最短的时间内,掌握到什么程度。 
因为将来的工作不可能只用一种东西,关键还是这个人的接受能力怎么样。
20 楼 robbin 2007-03-27  
比如说,我现在想给JavaEye做全文检索,文章关联性,和会员同好功能,我就发现算法很重要。 

以我个人观点来看,作为一个程序员来说,也许在自己的职业生涯当中,未必有用到算法的那一天,但是学习算法可以锻炼抽象的逻辑思维能力,间接的提高程序员解决问题的能力。 

抛开这些不谈,如果是计算机系的研究生面试,连最基本的算法概念都答不出来,无论如何说不过去,你本来就是搞计算机理论的,连最基本的理论都不会,有什么资格被录取?就好像老庄要面试一个程序员,给他一个任务,让他用eclipse现场开发,结果他说我不会用eclipse,那你会不会录取他? 

19 楼 lordhong 2007-03-27  
Readonly 写道
lordhong 写道
ray_linn 写道
我不懂算法, 但我懂End 2 End performance和CBA

 弱弱的问一句...CBA是...Chinese Basketball Association?

NBA下属的一个北美范围内的篮球联赛的名称的简写也是CBA,全名是Continental Basketball Association 

根据上下文,这里的CBA应该是Cost Benefit Analysis...


 老王,出来换气啊! 

CBA还有很多解释哦... 
California Bluegrass Assocation 
Center for Backyard Astrophysics 
Commercail Banks Association 

晕翻~~~~~~~~~~~~~~
18 楼 Readonly 2007-03-27  
lordhong 写道
ray_linn 写道
我不懂算法, 但我懂End 2 End performance和CBA

 弱弱的问一句...CBA是...Chinese Basketball Association?

NBA下属的一个北美范围内的篮球联赛的名称的简写也是CBA,全名是Continental Basketball Association 

根据上下文,这里的CBA应该是Cost Benefit Analysis...
17 楼 lordhong 2007-03-27  
ray_linn 写道
我不懂算法, 但我懂End 2 End performance和CBA

 弱弱的问一句...CBA是...Chinese Basketball Association?

16 楼 ray_linn 2007-03-27  
我不懂算法, 但我懂End 2 End performance和CBA,如果算法需要改进,那我就hire数学大牛... 

我是放牛的.... 

PS: 

只有熟悉业务流程的程序员最有价值,这个是一定要挽留的.其他都可以replace.
15 楼 庄表伟 2007-03-27  
昨天晚上的话比较冲,缓和一点,再说两句。

1、每个人都是从自己的工作经验出发,来总结的。所以,从我的经验来说,我的工作中需要算法的情况,的确是非常少。

2、hurricane1026做的网格计算;dreamhead做的XRuby,应该都是算法密集型的软件吧。

3、我先大而化之的论一下,软件至少可以像企业分为资金密集型、劳动力密集型一样,分为:算法密集型;业务逻辑密集型;使用体验密集型;他们面临的挑战是不同的。
算法密集型,典型的比如一个搜索引擎。
业务逻辑密集型,典型的比如一个ERP。
使用体验密集型,典型的比如一个全Flash站点。

4、任何软件,归根结底自然是数据结构、算法、逻辑这些东西。但是,我们做实际的项目,不是从根子上去做,而是从已有的基础上去做。
一个拿着榔头的人,看到任何问题都觉得可以把它作为钉子敲一敲。
而一个拿着锯子的人呢?

5、说实话,我的算法功底的确是不行,但是我也可以很负责的说,我的debug能力非常强。那么,当遇到一个问题的时候,我往往会第一时间想到用debug的办法来研究。
这既是我的长处,同时也会成为我的盲区。

6、hurricane1026你在算法方面下过苦功夫,因此,你在面试的时候,很自然的就会问人家算法方面的问题,而且,当人家不能回答那些“很简单”的问题时,你就认为他们不行了。

那么,反过来问一个问题:一个人要来你这里面试,你认为,他不知道,或者忘记了哪些东西,是可以接受的呢?

在我看来,如果他忘记的答案,能够借助电脑、网络,在五分钟内把答案再找回来的。那都不是要紧的知识。

7、上一次讨论应届生的问题时,我很强调完成任务的能力。交给你一个任务,如果这个任务需要你具备算法知识,那就去掌握算法知识。如果这个任务需要你具备debug的能力,那就去提高debug的能力。如果这个任务需要你....,那么,就想办法积累xxx方面的能力。

任他千难万险,我总能够搞定。才这是真的厉害了。

8、回过头来说学校阶段,摆在你面前的那些课程,无论他是否重要,无论你是否喜欢,搞定他。挂掉任何一门,都不算本事。至于通过之后,那些知识还是不是需要记在脑子里,我看也就不必了。
14 楼 叶子 2007-03-27  
目前只用到了一次,算目录树的...
13 楼 dovecat 2007-03-27  
anweixiao 写道
dovecat 写道
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法. 
所以,我取中庸.呵呵~~

其实,算法和算法的实现还是不同的,我们应该说:算法算老几?算法的实现算老几?多多包含。



呵呵~~这到也是. 
BTW:庄老大解决问题的流程属于最有效率的算法了吧.呵呵~~
12 楼 刑天战士 2007-03-27  
我学算法,学的是一种逻辑思维能力,遇到新问题时候的思考能力,抽象思维的能力,不是说所有东西都能在现实中找到答案的。
11 楼 anweixiao 2007-03-27  
dovecat 写道
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法. 
所以,我取中庸.呵呵~~

其实,算法和算法的实现还是不同的,我们应该说:算法算老几?算法的实现算老几?多多包含。
10 楼 losing_fox 2007-03-27  
算法就是前人证明过的最优解法
9 楼 珂儿 2007-03-27  
呵呵,我觉得这样的争论其实没有太多意义,和讨论C++和JAVA哪个更有前途有着同质性。 
算法重不重要,要根据自己的兴趣及将来的职业方向来定了,如果想一直在行业软件或一般软件公司做,算法确实并不太重要,在招聘者所考虑其综合素质中占的比重确实不大;但是如果要做GOOGLE、Microsoft、IBM、INTEL、ORACLE等研究院的工作来说,算法在应聘者中所占的比重就很大了。但如果你决定将来转做管理之类的工作或正在做管理的工作,算法也不一定要是你的强项,而是掌握怎样让具有这种强项的牛人更好地为你工作的能力就够了.... 
关键是看“你是否愿意沿别人的路走”,还是“想有独创性,发现一条新路让别人沿着它走”... 
就像一朋友说的那样“不是越优秀的人越适合你们公司,而是要选择合适的人”,想想,还真是这么个道理...
8 楼 dovecat 2007-03-27  
算法对于写出好的程序来说,确实是很重要的,我们每写段程序,抛开数学上定义的算法来说,我们都是在写算法,业务逻辑等等都应该是广义上的算法.但是光从数学上算法来考量一个人,也不能说就是一种全面的考核方式.对于理解实际事物、事理,以及一个人的逻辑思维能力等全面的考核才比较公正,培养逻辑思维的不应该仅仅是数学意义上的算法. 
所以,我取中庸.呵呵~~
7 楼 giscat 2007-03-27  
俺是逍遥派的,老庄可是我的偶像那
6 楼 anweixiao 2007-03-27  
当然,如果从广义的角度来讲:算法无处不在,从某一方面来说算法很重要:比如数值计算。但归根到底,算法的重要是建立在扎实的数学基础之上的,没有数学思想的算法,不管别人怎么说,我只会看看它的实现,不多说什么。以前我理解的搞计算机的都是数学大牛,现在发现搞数学的好多都是计算机大牛,而搞计算机的好多都不是数学大牛。介于此,如果要排名论辈份,我不敢说计算机算老几,但单单和数学相比,我把它放第二位。
5 楼 voff12 2007-03-27  
不搞研究,搞应用(二次开发),算法当然用得少啦。 
当遇上强竞的竞争对手时,还是用点原创的算法好。
4 楼 winterwolf 2007-03-27  
几乎用不上.
3 楼 Elminster 2007-03-27  
算法这个东西比较奇怪,如果我们记算法的价值为 A ,那么: 

1. A = 0 的可能性为 99.99% 
2. 存在 0.01% 的可能性,A = ∞
2 楼 dreamhead 2007-03-27  
hurricane1026 写道

打个岔,m&(m-1)应该是判断2的幂数的最佳办法吧。 


我所了解到的范围内是最佳了。
1 楼 dreamhead 2007-03-27  
这么说有些绝对,算法真的不重要吗?这取决于你所做的事情。 

真正在工作中应用成熟算法的机会并不多,因为那样的算法多半是现成的,没有必要重写。但是,有些问题没有现成的方案怎么办?比如,我现在所做的一些关于并行计算的算法,真的是没有现成可以参考的内容,因为我们用到的东西暂时还是不公开的。你只能自己去设计。 

算法的根基关键是给了人一个思考问题的方式。我曾经写过一篇《乱弹算法》,其中谈到一个简单的小例子,如何判断一个数是2的幂。其实,每个人都能给出一个解决问题的答案,但答案之间却差异很大。思考问题的方式就是在学习算法的过程中锻炼出来的。 

我承认,很多程序中更多的是在解决业务问题,所以,算法的必要性显得没那么重要。但是,如果想做一个好的程序员,算法是必备的根基,就如同1+1=2一样。没有根基,大厦是不牢靠的。 

如果还在质疑算法的重要性,可以问自己一个问题,你真的想做一个好的程序员吗?如果答案是否定的,那算法确实不重要。 

老庄,或许你经过一些锻炼已经掌握了一些做事的方法,但JavaEye还是有不少新手在看的,你这个言论容易误导别人啊!^_^
0 0
原创粉丝点击