程序员的咆哮阅读总结

编程界的数学

学校的数学教育体系是错误的,因为这是数学领域的连续知识,但是在现实生活中很多没有实际用处。

学校不教,现实中很有用的数学:统计,代数——线性代数,数理逻辑,信息论和柯氏复杂性

运用数学的第一步是:界定问题。当一个问题在手却不知道如何下手的时候,是最花时间的。

编译原理是计算机科学第二重要的科学,很重要,因为他非常切实的将你学到的几乎所有东西都捏合在了一起。

编译原理3个领域:
1. 解析,词法分析,语法分析生成解析树

  1. 类型检查
  2. 代码生成的正确性

Google的面试

  1. 细的马克笔
  2. 大O复杂度分析
  3. 知道排序是怎么回事,两个nlog(n)的排序算法,比如快排和归并排序
  4. 哈希表是人类已知的最重要的数据结构,一定要弄明白原理。
  5. 树,必须弄懂
  6. 图,内存中表示图的方法有3中(指针和对象,矩阵,邻接表)
    每次遇到问题首先考虑的是图算法。他们是任何关系里最基本,最灵活的方法。
  7. 基本的离散数学
  8. 操作系统:线程,进程,并发这些概念,掌握锁的概念,
  9. 编程,对一门语言的细节有相当的了解