寻找思考的快乐,体会编程的成就感,纯粹的对编程的热爱,真的很美。
微软有一本《编程之美:微软技术面试心得》,非常有趣,值得喜欢开发的人们细细阅读。这本书来自于微软亚洲研究院的技术人员,他们在书中通过对各种微软技术面试题的详细解说,表达了对编程的热爱,介绍了编程人们最喜爱的乐趣,那就是发现问题、分析问题、解决问题、寻找更优的解法、总结规律、抽象出算法的过程以及由此产生的成就感,引导读者思考,帮助大家寻找探索的乐趣,体会编程之美。面试题通常很有趣,书中也介绍了面试者的各种故事。
乐、魅、法、趣
书籍包括以下4个部分
- 游戏之乐:从游戏和其他有趣问题出发,化繁为简,分析总结。
- 数字之魅:编程的过程实际上就是和数字及字符打交道的过程。这一部分收集了一些好玩的对数字进行处理的题目。
- 结构之法:汇集了常见的对字符串、链表、队列,以及树等进行操作的题目。
- 数学之趣:列举了一些不需要写具体程序的数学问题,锻炼读者的抽象思维能力。
来看几个有趣的例子吧,介绍一下题目,至于具体的算法,请大家在思考后去查看《编程之美》这本书。
游戏之乐的例子
写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。有以下几种情况:
1.CPU占用率固定在50%,为一条直线;
2.CPU的占用率为一条直线,具体占用率由命令行参数决定(范围1~100);
3.CPU的占用率状态为一条正弦曲线。
数字之魅的例子
Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗?
结构之法的例子
电话的号码盘一般可以用于输入字母。如用2可以输入A、B、C,用3可以输入D、E、F等。对于号码5869872,可以依次输出其代表的所有字母组合。如:JTMWTPA、JTMWTB······
- 设计程序,尽可能从这些字母组合中,找到一个有意义的单词来表述一个电话号码。如单词"computer"来描述号码26678837。
- 对于一个号码,是否可以用一个单词代表?怎样才是最快的方法?
数学之趣的例子
在一场球赛开始前,售票工作进行着,每张球票为50元。假设有2n个人在排队买票,其中有n个人手持50元的钞票,另外有n个人手持100元的钞票,假设开始售票时,售票处没有零钱,问这2n个人有多少种排队方式,不至使售票处出现找不开钱的局面?
这些题目很有意思吧。愿你读这本书的时候,两眼闪着热爱和智慧的光芒。