公共基础
# 程序设计语言概述
程序设计语言也叫编程语言。计算机程序是按照程序设计语言规则组织起来的一组计算机指令。
程序设计语言发展经历了机器语言、汇编语言到高级语言的3个阶段。
# 编译和解释
高级语言根据计算机执行机制的不同分为两类:静态语言和脚本语言,静态语言采用编译方式执行,如:Java、C、C++、C#等。脚本语言采用解释方式执行,如:JavaScript、PHP、Python等。
# 编译定义
编译是将源代码转换成目标代码的过程。源代码是高级语言代码,目标代码是机器语言代码,执行编译的计算机程序称为编译器。

- 编译器会将高级语言代码转换为汇编代码,再将汇编代码转化为机器语言代码,并输出为二进制可执行程序,供我们执行。
# 解释定义
解释是将源代码逐句转换成目标代码同时逐句运行目标代码的过程。执行解释的计算机程序称为解释器。

# 编译和解释的区别
编译和解释的区别在于编译时一次性地翻译,一旦程序被编译,就不再需要编译程序或源代码。解释则在每次程序运行时都需要解释器和源代码。由于解释方式每次执行都需要翻译,所以工作效率上不如编译高。
# IPO程序编写方法
在程序设计中,每个程序都有统一的运算模式:输入数据、处理数据和输出数据。我们称为IPO程序设计方法。
输入(Input):输入是一个程序的开始。
处理(Process):处理是程序对输入数据进行计算产生输出结果的过程。
输出(Output):输出是程序展示运算结果的方式。
# 数据的组织维度
一组数据在被计算机处理前需要进行一定的组织,表明数据之间的基本关系和逻辑,进而形成"数据的维度"。根据数据的关系不同,数据组织可以分为:一维数据、二维数据、高维数据。
# 代码的复用
函数是将一部分代码组织起来供其他代码使用,函数封装的直接好处就是代码复用,任何代码只要输入参数即可调用函数,从而避免相同功能代码在被调用处重复编写。
模块化设计指通过函数的封装功能将程序划分为主程序、子程序和子程序间关系 的表达。模块化设计是使用函数设计程度的思考方法,以功能为基本单位,一般由两个基本要求:
- 紧耦合:尽可能合理划分功能模块,功能块内部耦合紧密。
- 也就是功能模块的代码一定要紧密,不要有多余的代码,每行代码缺一不可。
- 松耦合:模块间关系尽可能简单,功能块之间耦合度低。
- 也就是一个模块要尽量少的依赖另外的模块,最好少了另外的模块也能运行。
耦合性指程序中各模块之间想相互关联的程度。
# 程序设计方法论
# 自顶而下设计
一个解决复杂问题行之有效的方法被称作自顶而下的设计方法,其基本思想是以一个总问题开始,试图把它表达为很多小问题组成的解决方案。再用同样的技术依次攻破每个小问题,最终问题变得非常小,以至于可以很容易解决。然后只需把所有的碎片组合起来,就可以得到一个程序。
整个过程可以概括为四个步骤:
- 步骤一:将算法表达为一系列小问题。
- 步骤二:为每个小问题设计接口。
- 步骤三:通过将算法表达为接口关联的多个小问题来细化算法。
- 步骤四:为每个小问题重复上述过程。
# 自底向上执行
执行中等规模程序的最好方法是从结构图最底层开始,而不是从顶部开始,然后逐步上升。或者说,先运行和测试每一个基本函数,再测试由基础函数组成的整体函数,这样有助于定位错误。
在代码最底部的开始调用函数执行,不而以脚本的方式从顶部一步一步向下执行。
# Py第三方库纵览
列举各个领域常用的python库。
用户图形界面
- pyqt5
- pygtk
- wxpython
文本处理
- pdfminer
- openpyxl
- python-docx
- beautifulsoup4
数据分析
- numpy
- scipy
- pandas
网络爬虫
- requests
- scrapy
机器学习
- scikit-learn
- tensorflow
- theano
WEB开发
- django
- pyramid
- flask
游戏开发
- pygame
- padan3d
- cocos2d
数据可视化
- Matplotib
- TVTK
- mayavi
其他第三方库
- PIL
- Sympy
- NLTK
# 数据库内部结构体系
数据库的三级模式结构包括:概念模式、内模式、外模式。
- 概念模式:是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。
- 外模式也称为子模式或用户模式:它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。
- 内模式又称物理模式:它给出了数据库物理存储结构与物理存取方法。
# 计算机系统
计算机系统由硬件(子)系统和软件(子)系统组成。
# 树节点计算
树的度数表示树的节点最大拥有的子节点树。节点的度数就是节点拥有的实际度数。
例如度为3的树,则它的节点数的度数有4种表示,度为3的节点、度为2的节点、度为1的节点、度为0的节点(叶子结点)。
总节点数有两种计算方式:
- 第一种:所有节点数相加。
- 第二种:各个节点数与其对应的度数相乘,然后结果相加,最后加上表示根节点的1即可。
例子
设某树的度为3,且度为3的结点数为4,度为1的结点数为9,没有度为2的结点,则该树中总的结点数为____。
4 + 9 + 0 + ?(度为0的节点数未知) = 3*4 + 1*9 + 2*0 + 0*? + 1
13 + ? = 12 + 9 + 0 + 0 + 1 = 22
由此可得出总结点数为22,叶子节点数为22-13=9
2
3
4
5
# 进程
进程是指一个具有一定独立功能的程序关于某个数据集合的一次运行活动。简单地说,进程是可以并发执行的程序的执行过程,它是控制程序管理下的基本的多道程序单位。
# 二叉树遍历反推
前序:根左右。
中序:左根右。
后序:左右根。
反推方式:
- 先序找根,先序的特点是第一个元素一定是根节点。
- 后序找根,后序的特点是最后一个元素一定是根节点。
- 中序定两边,中序的特点是左右在根两侧。我们就可以根据先序中找到的根,反推出左和右。
例如:
设二叉树的前序序列为ABCD,中序序列为BCDA,则后序序列为___。
由前序为根左右得知:根为A。
由中序是左根右得知:左为BCD。
此时再循环上面操作:
- 由前序为根左右得知:BCD的根为B。
- 由中序是左根右得知:CD为B的右节点。
此时再循环上面操作:
- 由前序为根左右得知:CD的根为C。
最终得出树的现状为:
A
B
C
D
因此后序的顺序为:DCBA
2
3
4
5
6
7
8
9
10
11
12
13
14
15
设二叉树的前序序列为ABCDEF,中序序列为BDFECA,则该二叉树的后序序列为___。
A
B
C
D
E
F
因此后序的顺序为:FEDCBA
2
3
4
5
6
7
8