OO和算法数据结构是两种不同的基本功,就象水工和电工都有各自的基础工,不是说你会电工了,就会去搞水管,(虽然水管和电线管相似)。

算法数据结构和对象是两种不同的路子,延伸开来,算法数据结构就会延伸到数据库编程思路;对象则自然延伸到java等DDD建模对象编程思路。

现在我们交流时存在大量语义差别,他在那里讲数据结构,你在这里讲对象,鸡同鸭讲,造成这个混乱局面的源头就在教育。

李开复说算法是力量,中国软件教育中都不缺算法教育,但是还是不行,什么原因?两个:一个是方向就错了;一个是力度还不够,怎么加力度呢?那么他的意思就是算法数据结构提前到高中学习,大学开始学习更深入图铃奖的理论了?哈哈,很奇怪的结论啊。

所以,我认为中国软件教育方向错了,从一开始就错了(应该大量培养软件工程师,而不是科学家),这些被错误教育误导的人走上企业工程领导岗位,他们学的是软件科学家那套,本来用算法数据结构来招聘科学家的,结果你去了,你是去应聘工程师的,两个不同专业啊。

你去了当然考你算法,因为他们可能只会算法啊,让他们来考对象基础知识,他们就会问出楼上OOJDON那样可笑的问题出来。哈哈,这么简单问题都不知道。

我们在Jdon.com都是讨论软件工程,怎么把软件做得更易于维护,更拓展,怎样更快跟随需求变化而变化;不是讨论如何科学发明一套惊天雷人的算法。

算法不会帮助我们将软件做得更易于维护,有时算法反而导致相反方向,一个复杂的算法简单的公式,除了算法发明者以外,其他人都无法快速理解读懂,更别说维护了,软件是要写得人人都能看懂,从这点来说:算法思维反而坏事了。比如使用存储过程 SQL表达业务都是这种算法思维发展出来的恶心肿瘤。

我的感觉是架构和算法其实代表的是宏观和微观两个方面的东西,说谁重谁轻似乎没有多大的可比性。
计算机研究的两个方向宏观(做应用架构)和微观(OS系统底层和算法等等)。我感觉这是计算机发展的两个
方向。也是社会化大生产和社会化分工的必然趋势。就是要求一部分在某方面非常资深的专家他们深入做微观的
的产品如(OS底层服务,各种算法等等),提供出来给做应用和架构的产品服务。满足应用架构所需要
的底层服务。当然这批人属于非常精英的层次。大概占到10%。毕竟能够研究出一套像SHA,DES等等之类的加密算法
的人还是属于少数。
剩余的90%的工程人员其实都是站在满足应用需求的第一线。他们利用已经掌握的技术架构和微观系统专家们
研究出来的成果为实际生产应用设计合理的架构,开发相应的软件。当然应用一线的实际应用又会给微观系统专家们
提供新的需求,刺激微观系统的研究向前发展。

毕竟任何技术都是要解决生产应用中的实际问题。宏观系统和微观系统之间不是矛盾的,而是相互依存,相互促进的关系。

这样每个人究竟要学习什么样的东西就很一目了然了,都要根据自己的资质才能还有追求,来确立自己的发展方向。
人还是要脚踏实地,如果只是一味志大才疏,恐怕连填饱肚子都困难,要实事求是呀!

每次的讨论都是受益匪浅啊~昨天和一个同学聊天的时候也聊到这个问题,我觉得,无论是算法还是架构,都离不开它的应用环境,孤立的讨论某2个东西的优劣是不对的,最后我想到了,事物是普遍联系的.

公司面试出啥题都是根据自己公司的要求来的,即便是考算法,也不代表公司对OO思想的不重视。有可能公司希望让你做的还是相对比较实际的工作,设计上呢已经有成熟的方案或人才了,所以主要出一些算法题。而且,你说要考啥设计模式的水平,这也不好考呀,这玩意抽象的厉害,怎莫能通过几个题目就能判断这个人思想的水平呢。所以,我感觉作为软件工程师oo思想和算法都应该努力学习,这样你也不用怕穷有一脑子思想,却不被人认可,或者是以后写出来的程序只注意了实现功能,提高性能,而不易读,不方便扩展,被人诟病。如果说你暂时没时间学那莫多,那你就根据自己的情况来被,要去百度面试,就先学习算法,总之能进去是第一目的,之后可以再学习别的。再有我觉得说哪个更基础,哪个更更高深,或者说哪个更重要,那个不重要,没太大意义,两者本来就是程序员都应该具备的素质,应该相辅相成才对。例如让你设计两种A点到B点的行车方案,第一个要求是最短路径;第二个则要求经过风景名胜站最多。可能你要为这两个方案设计两种不同的算法,但从整个模块看,你又可采用策略模式封装两种算法。所以说,没时间的根据自己目前的需求来针对性的学习,比如,公司现在让你设计套框架,那OO思想现阶段就是最重要的,你要好好学习好好设计;反之,算法也可能成为你某一阶段最重要的,所以有时间的时候就good good study,之后 day day up。
[该贴被confuse于2008-12-01 11:24修改过]

呵呵,我基本上同意楼上confuse的观点~~~~~

to oojdon:
oojdon同学你遇到的面试官是做技术的还是纯粹HR噢?我看比较像后者~~

重要的不是精通不精通算法,如果一个连冒泡都不会的人也敢说自己学过计算机是搞软件的,谁又会相信呢。算法是基础是根本。是对基本事物处理的能力。个人认为无论是做什么,只要搞这一行,基本的算法数据结构在哪都是需要的。

公司考算法,其实不是真的就要用这些算法,只是考核一下你的基本素质和聪明程度而已。明白了吧?

我现在加拿大做java开发,公司看重设计模式,我维护的一部分代码是人家01年以后陆续开发的,那时基本的设计已经基于MVC了,各种模式在代码中灵活应用,读他们的代码是一种享受...

我觉得任何问题都有一个适用范围。
通过楼主的描述,似乎楼主应聘的岗位是做应用。
而应用领域直接用算法的场合并不是很多,
更多的是用设计模式等实现业务。

招聘题目问算法可能只想考察下逻辑思维能力,
或者仅仅是给公司里做算法的兄弟一点面子。

不过我还是同一楼主看算法,
可以给公司一个惊喜,提高中签率呵呵

算法还是很重要的,banq有点偏激了 :)

建议你好好读读算法,如果你认为学地很好了就再学点自己不懂的,不确定的,这个世界的东西是学不完的,但多学点没坏处,不要脑残地干活,垃圾软件架构师以及一切其他的装nb的人,我看了都……哎,it里头的人很喜欢装nb,在别人面前装大师似的。什么都喜欢炒几下……
这是我们中华民族里不好的一面,无私地奉献才好……

>建议你好好读读算法,如果你认为学地很好了就再学点自己不懂的,不确定的,这个世界的东西是学不完的

非常好的建议,大家应该不断地学习,学习算法完成后学习数学,然后都博士 壮士 勇士 烈士... 这是最近胡戈恶搞电视剧“整点新闻”倡导的...

我觉得有这样的思维的人很可怜,就象"镜子"影片一样,到底谁在镜子里?都说不一定,所以,就不多说了。

上帝就是这样弄人,让真理和谬误互为镜子,以免人类更快地找到它。

对于BENQ的观点,我只能说,软件不仅仅是企业应用,也不是每个问题都能找到现成的解决方案的。
学习算法完成后学习数学,对于追求技术的人来说,确实有这么一个过程。现在不学算法,以后就会明白什么叫瓶颈。
这个论坛到底是面向技术本身,还是面向企业开发。