最近看了博文视点出版的《编程之美——微软技术面试心得》,连续的几个晚上奋战到两点,才放下手中的书,合上书躺在床上,却不能入睡:何谓编程,何谓美,怎样的编程才能算美?
拿到这本书的时候,可能在想这是一本介绍如何编程的书,看了一些后,才会发现书中讲的都是算法问题,但回头再想想,就会明白书的本意并不是讲编程,讲算法,也许你看完这本书,不一定非要每个程序都实现,每个算法都明白,但要知道这本书是在讲思想,讲解决问题的方法。
不管是去哪家公司面试,可能都会有一些刁钻的问题,面试中重要的不是给面试官一个答案,而是告诉他一种思路,一种解决问题的思路。《编程之美》就是告诉大家在遇到问题时如何去寻找思路,如何去优化思路,最终找到解决问题的途径,并且在这条路上不断地追求卓越,这就是编程之美。
总体来看,我总结大概有这几条:
- 空间、时间相互置换,达到匹配平衡,多去解决时间或空间复杂度问题。
- 分治思想,典型如二分查找,把复杂的问题化简单,把简单的问题化得更简单。
- 数学推理,看似繁琐的事情,一定也有规律可循,通过由特殊情况推算出一般情况,获取通项公式,找到解决问题的简单思路。
- 递归调用,递归虽然效率低,但能使一些复杂的思想变得易于实现,特别对于对算的过程。
- 抽丝剥茧,拿到复杂的问题,一点点儿的去抽象,从问题中抽象出单个简单问题,再把单个简单问题抽象成具体实现。
但实际上,我们在各自所在的领域解决问题的时候,没有那种方法能拿过来就用,可以生搬硬套,只有理解和融汇了各种思路,不断锻炼自己发现问题解决问题的能力,才能以不变应万变。这本书讲的就是这个道理:编程贵在思想,只有思想很美,只有在思想上追求卓越,编程才会美。
作者:付强,原文链接:http://blog.csdn.net/threewall/archive/2009/05/12/4171019.aspx