推荐《编程之美》
我很早知道邹欣计划要写这样一本书,也能够预计到这本书定会广受欢迎,因为它符合当前大量求职人员的需求,毕竟于他们而言,谁不想知道微软亚洲研究院在招人时候问些什么问题呢。另一方面,把考察软件技术人员专业知识和相应技能的各种手段加以归纳和整理,这本身也是对业界的贡献,所以,我相信,一旦这本书如计划般完成,其对业界的影响将是深远的。
在我的面试经历中,通过一些具体的程序问题来考察人,往往是最有效的,即使是一些人所皆知的问题,也往往能够挖掘出被面试者的亮点或弱点,原因在于,每个问题都有不同层次的解答之辞,面试者总是可以刨根究底地问下去。我们在看一段程序的时候,思路固然重要,细节也是不可忽视的,比如整数是否越界、指针是否为空,等等。这些细节可以用于考察基本功,毫无疑问,基本功不扎实的人通常很难得到面试者的青睐。
当拿到这本书的样稿时,我迫不及待地放下手头工作,阅读起来。有些题目的内容会引起强烈的共鸣,尤其是那些自己非常熟悉并且又深知解答的题目;也有一些题目让我异常惊诧,原来除了我所知道的解答思路之外,还有更好的解答以及更深层次的原因。还有一些题目是从来没想到过的。阅读过程是一次愉快的享受,也是脑细胞持续活跃的过程。
充满好奇心的人们总是能从生活的点点滴滴中想到或找到各种优化的余地,比如说,楼宇中的电梯常常显得很“傻”(微软研究院所在的希格玛大厦的电梯是一个典型的例子),更智能或更有效的调度策略完全有可能;近距离内的交通灯联动可以有效地提高行车效率。程序员在玩电脑游戏的时候常常会想着怎么自动完成一些过程,比如说,本书中提到的俄罗斯方块游戏中如何有效地旋转和移动可快速地消除积木块、24点游戏如何自动求解、推箱子游戏如何自动求解,扫地雷游戏如何自动完成,等等。实际上,这些自然的疑问正是训练程序能力的好来源,本书采录了不少此类题目。因此,阅读本书可以满足很多人的好奇心,这也正是我自己的体会。
尽管作者在前言中声称“虽经过几轮审核,不少解法仍可能有漏洞或错误”,但事实上,在绝大多数题目的讲解中,作者已经由浅入深地把问题分析透了,而且,作者也为读者指出了进一步思考这些题目的方向。不同背景的人在看到这些题目的时候,可能会有不同的解法,甚至完全不同的思路。举例而言,邹欣曾经问过我如何控制CPU占用率曲线的问题,我当时的直觉是,直接截取Taskmgr调用的相关API函数,从而达到随意控制CPU占用率曲线的目的。显然这不是规范的做法,本书的分析揭示了这个问题背后的本质道理以及考问要点。另一种情况,即使有的问题你深知其理,但看过本书仍然很有收获。例如,在斐波那契数列问题中,我知道直接递归法的缺陷,也知道如何简化成迭代法来改进效率,还会推导通项公式,但是,书中的细致讲解仍然让我对这个问题有了更进一步的认识。这是本书的深度所在,如果读者更加在意所选题目背后的深层次道理,相信书中的讲解不会让你失望。
除了趣味性以外,本书中的题目讲解之中也融入了大量专业知识。这使得本书可以作为计算机数据结构课程或算法课程的辅助参考书。比如,有些问题的解答涉及到贪心算法或动态规划方法,算法的复杂度分析更是无处不在。数据结构教科书中介绍的链表(list)、队列、hash表和二叉树等常用数据结构也多有提及。因此,对于正在学习数据结构或算法课程的学生来说,本书中的问题正是对课程中所学知识的一次检阅,通过本书他们可以看到这些知识是如何用于解决实际问题的。从我自己的教学经验来看,这样的题解分析有助于提高学生的学习兴趣。
另一方面,阅读本书也需要有必要的计算机算法和程序设计知识作为基础,否则阅读的效果会大打折扣。
我大致了解本书的成书过程,从策划阶段到题目收集,再到成稿和改稿,我能体会到邹欣和他的写作团队倾注了大量的精力来写作这本书。他们尽了最大的努力来编写这本书,无论是原创的题目,还是传统的题目,他们都努力把题目分析透彻并提供扩展思考的余地。
邹欣在发送样稿给我的信中说道:“Our goal is to ship a top quality book. I can't say "world class", but definitely "best in China" level.”以我阅读这本书的体会来讲,他们做到了这一点。我相信,这本书的出版会符合我当初的预期,它会影响到很多人。
潘爱民
2008年2月
分享到:
相关推荐
《编程之美:微软技术面试心得》是一本专为准备技术面试的程序员量身打造的书籍。这本书集结了微软公司在招聘过程中遇到的经典编程题目和解决思路,旨在帮助读者提升编程技能,增强解决实际问题的能力,同时也为面试...
Python编程之美在于其简洁、高效和可读性强的语法,以及丰富的库支持,使得它成为数据科学、Web开发、自动化脚本等多个领域的首选语言。"There should be one and preferably only one obvious way to do it." 这是...
2012"编程之美"全国挑战赛题目 Ocean Scream
Java并发编程之美_部分81 本篇文章主要讨论Java并发编程中的定时器功能,特别是使用ScheduledThreadPoolExecutor来实现定时任务的执行。同时,本篇文章还讨论了在并发编程中对需要复用但是会被下游修改的参数进行深...
《编程逻辑之美》一书旨在帮助读者提升编程逻辑思维能力,深入理解并掌握数据结构这一核心编程概念。在编程世界中,逻辑思维是解决问题的关键,而数据结构则是实现高效算法的基础。下面将详细阐述这两个重要知识点...
"Python编程之美——带你进入Python语言世界"课程设计大纲参考 Python语言是一种高级、解释型的编程语言,它具有简洁、易学、强大等特点,广泛应用于数据科学、人工智能、网络爬虫、自动化操作等领域。本课程设计...
"编程之美微软技术面试心得" 编程之美微软技术面试心得是《编程之美微软技术面试心得.doc》的一份总结,该文档主要介绍了微软技术面试的心得体会和经验。下面是从该文档中所提取的知识点: 1. 微软技术面试的特点...
"编程之美"这个主题涵盖了各种有趣的算法,这些算法不仅能够帮助我们理解计算机科学的本质,还能激发我们的创新思维和逻辑能力。下面我们将深入探讨一些常见的有趣算法。 1. **排序算法**:排序是最基础也是最广泛...
编程之美1的数目.pdf
《Java并发编程之美》是专为Java开发者设计的一本指南,旨在帮助读者克服并发编程的高门槛,从而在职场面试和高并发、高流量系统开发中得心应手。本书由瞿陆续和薛宾田合著,由中国工信出版集团旗下的电子工业出版社...
读书笔记:Java 并发编程之美
读书笔记:Java并发编程之美
短码之美:编程达人的心得技法 一本相当不错提高编程相当不错的书!!! 找了很久才下载到的!! 推荐!隆重推荐!!
线性代数是一门重要的数学分支,它在计算机科学、工程学、物理学、经济学等多个领域都有广泛的应用。...无论是在科学计算、数据分析还是人工智能领域,线性代数都是不可或缺的工具,是支撑现代编程艺术的重要基础之一。
读书笔记:Java并发编程之美笔记
读书笔记:Java并发编程之美代码
读书笔记:java并发编程之美源码
在文件名“编程珠玑(续) (美)Jon Bentley.pdf”中,我们可以推测这可能是《编程珠玑》的后续篇章或者是扩展版,包含了更多关于编程实践和算法设计的深入探讨。这部分内容可能涵盖了更多现代编程议题,例如并行计算、...
华讯美土豪金CH341A编程器是一款经济实用的通用编程设备,常用于对各种微控制器(MCU)进行编程、烧录或者调试。这个压缩包文件包含的资源主要是与这款编程器相关的软件,可能包括驱动程序、固件更新、用户手册以及...