不知道作者还会再来看回帖不。隔的时间有点长了,不过看了我的回复和搂主的帖子,综合一下,应该会有更多的体悟。
看到回帖中有反对的,我也是持反对意见的。嗬嗬,那样的面试一般都出于中国的软件公司,欧美的偶然也会有,注重于个性,但绝不会出现在日本的企业。因为日本的企业注重的是可读性,可移植性,团队的合作性,更重要的是实际中产生的效益而不是效率。
下面就我个人在日本软件企业工作的感触来给大家说说。
首先,来说说都关注的效率问题。不能只考虑到程序执行的效率,也就是说顾客方的效率问题,而不考虑开发方的效率问题。不可否认,最优的程序设计和效率是每个程序员都追求的目标。但是有没有想到,设计一个高效率的算法和一个非常普通的算法所花费的时间的比例。这个一个非常微妙的关系呵呵。正如楼主说的,他可以稍加思考或不加思考就写出普通的算法来,但是最优的算法确实要花费相当长的时间来思考的。也许作为学生的你会说无所谓有时间,但对于真正用于商业的软件开发来说就不一样了。现在软件企业最流行的工时计算方式是多少人每月(人/月)。这种几乎直接精确到了你一个小时内完成多少代码量的计算方式下,考虑优化算法几乎是不可能的,最多是业余时间的一种爱好而已。也许有人会说到非商用的软件之类的,那是几乎不可能的,一个东西没有了商用价值就等于没有了生命力。在日企里往往是加班加点尚且很难干完那些编码,往往要项目延期,那些优化的算法就根本没有时间去考虑了。
其次,一个大型的项目往往要有百人以上的合作,开发周期长至3年以上。这样的巨型项目里,很多人都不是从头到尾的开发,如果使用优化的算法,后来接替的人在理解上花费的时间将大大加长。这也是个现实的问题,而且出现的几率100%,因为绝大多数软件是需要维护和拓展的。
再次,重说效率的问题。我们还需要考虑一下当然的大环境,就是硬件和软件的关系。因为在顾客方,软件的执行是离不开硬件环境的,赫赫。当然的大环境是,硬件的开发技术远远大于软件技术,也就是说,你的程序无论涉及的多么复杂基本上都可以在硬件上跑起来。在这样的环境面前,配置一个高端的硬件环境就可以解决顾客方的效率问题,普通的算法和优化的算法基本上是看不出来的,而且程序是要考虑到以后的拓展之类的,所以一个高出软件需求的硬件环境是必不可少的。可以举个例子,我有个在日本当orcal的dba(数据分析师)的老师,他说个曾经他们公司问另一个公司要买个商业软件,而对方开出的服务器的条件比仅仅可以运行软件的环境条件高出了一倍多,价格也就翻了好几倍,但是他们公司谁也没有提出降低服务器的性能。否则到时候如果软件除了问题,那边公司也就有借口推脱了。
其实日本的程序员都非常的幼稚,中国很多的只学过vb的,根本没学过数据结构的程序员都在日本做开发。但是他们的软件可是最安全的。买到的东西不用拆封检查就拿回家。这都归功于他们的合作和责任精神。比如说有一次,我们一个界面的button被要求点击1000此进行测试。这方面中国的程序员就应该多学习了。
好了,最后大家如果有什么反对的意见,或者其他的意见都可以聊聊。
本人现在东京一个软件公司工作,有什么其它想探讨的问题也可以谈谈。