掌握计算机科学的精髓,从这本豆瓣评分9.3的书开始

Posted 人邮异步社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了掌握计算机科学的精髓,从这本豆瓣评分9.3的书开始相关的知识,希望对你有一定的参考价值。

对计算机科学的掌握程度,决定了一个计算机行业从业者能走多远。

有了对计算机科学本质的认识,一个计算机专业的学生,通过一段时间的刻意练习和经验积累,就有可能成为计算机领域的专家。而练习则需要讲究方式方法,

《计算之魂》就为广大的计算机行业从业者提供了许多提升能力的有效方法。这些方法来自于作者在计算机领域多年的从业经验。

计算之魂

顾名思义,《计算之魂》讲述各种计算机理论和算法的灵魂,帮助读者全方位、深刻地了解计算机科学,培养一种善于利用计算机解决问题的新的思维方式,从而在计算机领域获得更大的成功。作者吴军博士把这种思维方式概括为计算思维。

《计算之魂》做到了专业性和趣味性相结合。在专业性方面,作者系统地讲述 了计算机科学领域最重要的理论和知识。在趣味性方面,作者选择了很多跨国公司 招聘中的实际问题作为案例进行分析和讲解,这些问题很有代表性和趣味性,作者 希望读者朋友可以通过搞懂这些问题,举一反三,对计算机科学的精髓有更深刻的 理解。

豆瓣评分9.3

《计算之魂》,作者把自己对计算机科学精髓和灵魂的理解,通过一些具体的例子拆解为10 个主题。这些例子都是渐进深入的,也是可以举一反 三的,通过它们大家可以逐渐把握计算机科学这门艺术,获得重复性成功。

在书中,作者用来讲述计算机科学艺术和精髓的例题,都是在 Google 和腾讯面试工程师候选人的考题, 以及美国顶级计算机公司(包括苹果、亚马逊、微软、 Facebook、领英、IBM、雅虎、优步、英特尔、甲骨文等)和金融企业的面试题。

对于每一道这样的面试题,作者会指出它们的难度:从 5 颗星(最难)到 1 颗星 (最容易)。即便是那些难度一两颗星的问题,在各种面试刷题网站上也属于难题。而难度四五颗星的问题,绝大部分面试者在解决时都会遇到一些困难,不过它们只占到书中面试样题的 10% ~ 20%,在实际的面试中这样难度的问题并不多见。难题之难,通常表现在三个地方。一是要求面试者对计算机科学有透彻的理解;二是要求他 们考虑问题能够全面;三是要求他们懂得成本和效率之间的平衡,特别是那些开放性问题。每一个问题可能有不止一个正确答案,但是不同的答案有好坏之分。无论是 Google、微软或者 Facebook,还是国内顶级的计算机企业,面试时不会简单给予面试者一个对或者错的评判, 而是根据他思考问题的方式以及给出的答案给予一个评分。 因此一个面试者不能只满足于找到了答案,而需要尽力寻找更好的答案。每一个计算机行业的从业者都应该明确一件事:作为一门应用科学,计算机科学中的很多问题都没有标准答案,只有更好的答案,而寻找更好的答案是计算机科学家和工程师努力的目标。

在书中,作者会讲解大约 40 道例题,它们大多是比较难的问题, 此外还会以思考题的形式提供大约 50 道面试题供大家参考。如果一个计算机工程师能够解决书中的大部分面试题,并且理解其中的道理,就完全可以被 Google、亚马逊、Facebook 或者微软这样的公司录用。当然,作者并不希望这本书变成求 职者面试前刷题的参考书,而是希望读者朋友通过具体的例子,从“术”的层面获得 “道”的层面的提升。因此,作者会详细分析解决这些例题所用到的计算机科学的精髓, 并且告之不同水平的人大约能思考到什么样的深度,这样大家如果有兴趣的话,可以衡量一下自己的水平,并且了解自己和前面各级之间的差距。

为了便于一些爱钻研的读者朋友深入思考,作者会每一章末尾出一些思考题和练 习题。这一方面是为了帮助大家理解计算机科学本质的问题,另一方面则是方便大家评估自己的水平,并且得到一些实战的训练。虽然我把这些问题全部解了一遍,有所有的最佳答案,并且请了 Google、微软以及一些大学的朋友核实了答案。

适合读者

目录

引子 计算的本质-从机械到电子

  • 0.1 什么是计算机
  • 0.2 机械计算机、布尔代数和开关电路
  • 0.3 图灵机:计算的本质是机械运动
  • 0.4 人工智能的极限

第 1 章 毫厘千里之差-大 O 概念

  • 1.1 算法的规范化和量化度量
  • 1.2 大数和数量级的概念
  • 1.3 怎样寻找最好的算法
  • 1.4 关于排序的讨论

第 2 章 逆向思考-从递推到递归

  • 2.1 递归:计算思维的核心
  • 2.2 遍历:递归思想的典型应用
  • 2.3 堆栈和队列:遍历的数据结构
  • 2.4 嵌套:自然语言的结构特征

第 3 章 万物皆编码-抽象与表示

  • 3.1 人和计算机对信息编码的差异
  • 3.2 分割黄金问题和小白鼠试验问题
  • 3.3 数据的表示、精度和范围
  • 3.4 非线性编码和增量编码(差分编码)
  • 3.5 哈夫曼编码
  • 3.6 矩阵的有效表示

第 4 章 智能的本质-分类与组合

  • 4.1 这是选择分类问题
  • 4.2 组织信息:集合与判定
  • 4.3 B+ 树、B* 树:数据库中的数据组织方式
  • 4.4 卡特兰数

第 5 章 工具与算法-图论及应用

  • 5.1 图的本质:点与线
  • 5.2 图的访问:遍历和连通性
  • 5.3 构建网络爬虫的工程问题
  • 5.4 动态规划:寻找最短路径的有效方法
  • 5.5 最大流量:解决交通问题的方法
  • 5.6 最大配对:流量问题的扩展

第 6 章 化繁为简-分治思想及应用

  • 6.1 分治:从O(N2) 到O(N log N)
  • 6.2 分割算法:快速排序和中值问题
  • 6.3 并行初探:矩阵相乘和 MapReduce
  • 6.4 从机器学习到深度学习:Google 大脑

第 7 章 权衡时空-理解存储

  • 7.1 访问:顺序 vs. 随机
  • 7.2 层次:容量 vs. 速度
  • 7.3 索引:地址 vs. 内容

第 8 章 并行与串行-流水线和分布式计算

  • 8.1 流水线:逻辑串行和物理并行
  • 8.2 摩尔定律的两条分水岭
  • 8.3 云计算揭密:GFS 和 MapReduce

第 9 章 状态与流程-等价性与因果关系

  • 9.1 从问题到状态
  • 9.2 等价性:抽象出状态的工具
  • 9.3 因果关系:建立状态之间的联系

第 10 章 确定与随机-概率算法及应用

  • 10.1 信息指纹:寓确定于随机之中
  • 10.2 随机性和量子通信
  • 10.3 置信度:成本与效果的平衡

第 11 章 理论与实战-典型难题精解

  • 11.1 最长连续子序列问题
  • 11.2 区间合并问题
  • 11.3 12 球问题
  • 11.4 天际线问题
  • 11.5 最长回文问题(Longest Palindrome Match)
  • 11.6 计算器问题
  • 11.7 如何产生搜索结果的摘要(Snippets Generation)
  • 11.8 寻找和等于k 的子数组问题

作者简介

以上是关于掌握计算机科学的精髓,从这本豆瓣评分9.3的书开始的主要内容,如果未能解决你的问题,请参考以下文章

豆瓣评分9.3,陪伴无数程序员成长的神作,终于升级了!

每日一书|豆瓣评分9.3,陪伴无数程序员成长的神作,终于升级了

[留言送书]豆瓣评分 9.3,陪伴无数程序员成长的神作,终于升级了!

豆瓣9.3,这个男人太会了!

解密计算机科学

豆瓣评分 9.3 的 Java 巨著 | Bruce Eckel 重讲 Java 的编程思想