软件设计师知识点100条(四)

71、类图关系

依赖关系:一个事物发生变化影响另一个事物。

泛化关系:特殊/一般关系

关联关系:描述了一组链,链是对象之间的连接。

聚合关系:整体与部分生命周期不同。

组合关系:整体与部分生命周期相同。

实现关系:接口与类之间的关系

72、用例关系

73、设计模式分类

74、创建型设计模式应用场景

75、结构型设计模式应用场景

76、行为型设计模式应用场景1

77、顺序表和链表对比

78、树的基本概念

双亲、孩子和兄弟:结点的子树的根称为该结点的孩子;相应地,该结点称为其子结点的双亲。具有相同双亲的结点互为兄弟。

结点的度:一个结点的子树的个数记为该结点的度

叶子结点:也称为终端结点,指度为0的结点

内部结点:度不为0的结点,也称为分支结点或非终端结点。除根结点之外,分支结点也称为内部结点。

结点的层次:根为第一层,根的孩子为第二层,依次类推,若某结点在第i层,则其孩子结点在第i+1层

树的高度:一棵树的最大层次数记为树的高度(深度)

79、二叉树的特性

在二叉树的第i层上最多有2i-1个结点(i≥1);

深度为k的二叉树最多有2k -1个结点(k≥1);

对任何一棵二叉树,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。

对一棵有n个结点的完全二叉树的结点按层序编号,即从第1层到⌊〖log〗_2⁡n ⌋+1层,每层从左到右依次编号。

80、特殊的二叉树

满二叉树:任何结点,或者是树叶,或者恰有两棵非空子树。

完全二叉树:最多只有最小面的两层结点的度可以小于2,并且最下面一层的结点全都集中在该层左侧的若干位置。

平衡二叉树:树中任一结点的左右子树高度之差不超过1。

查找二叉树:又称之为排序二叉树。任一结点的权值,大于其左孩子结点,小于其右孩子结点。中序遍历结果有序。

线索二叉树:在每个结点中增加两个指针域来存放遍历时得到的前驱和后继信息。

81、最优二叉树的概念

最优二叉树:又称为哈弗曼树,它是一类带权路径长度最短的树。

路径是从树中一个结点到另一个结点之间的通路,路径上的分支数目称为路径长度。

树的路径长度是从树根到每一个叶子之间的路径长度之和。结点的带权路径长度为从该结点到树根之间的路径长度与该结点权值的乘积。

树的带权路径长度为树中所有叶子结点的带权路径长度之和。

82、二叉树的遍历操作

前序遍历:又称为先序遍历,按根左右的顺序进行遍历。

后序遍历:按左右根的顺序进行遍历。

中序遍历:按左根右的顺序进行遍历。

层次遍历:按层次顺序进行遍历。

83、图的概念

完全图

在无向图中,若每对顶点之间都有一条边相连,则称该图为完全图(complete graph)。

在有向图中,若每对顶点之间都有二条有向边相互连接,则称该图为完全图。

强连通图:在有向图中,对于每一对顶点,从顶点vi到顶点vj和从顶点vj到顶点vi都存在路径,则称为强连通图。

84、图的遍历特点

深度优先遍历:

当以邻接矩阵作为存储结构时,深度优先搜索遍历图的时间复杂度为O(n2)

当以邻接表作为存储结构时,深度优先搜索遍历图的时间复杂度为O(n+e)

广度优先遍历和深度优先搜索遍历图的运算时间复杂度相同,其不同之处仅仅在于对顶点的访问次序不同。

85、算法特性

有穷性:执行有穷步之后结束,且每一步都可在有穷时间内完成。

确定性:算法中每一条指令都必须有确切的含义,不能含糊不清。

输入(>=0)

输出(>=1)

有效性(可行性):算法的每个步骤都能有效执行并能在执行有限次后得到确定的结果。例如a=0,b/a就无效

86、常见算法策略

87、常见的对算法执行所需时间的度量

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)

88、常见排序算法对比

89、常见排序算法适用常见对比1

若待排序列的记录数目n较小,可采用直接插入排序和简单选择排序。由于直接插入排序所需的记录移动操作较简单选择排序多,因而当记录本身信息量大时,用简单选择排序方法较好。

若待排记录按关键字基本有序,宜采用直接插入排序或冒泡排序。

当n很大且关键字位数较少时,采用基数排序较好。

若n很大,则应采用时间复杂度为O(nlog2n)的排序方法,例如快速排序、堆排序或归并排序:

快速排序目前被认为是内部排序中最好的方法,当待排序的关键字为随机分布时,快速排序的平均运行时间最短;

堆排序只需要一个辅助空间,并且不会出现在快速排序中可能出现的最快情况。

快速排序和堆排序都是不稳定的排序方法,若要求排序稳定,可选择归并排序。

90、编译与解释的区别

编译方式下机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高;

解释方式下解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,边解释边执行,执行效率较低。

即:解释方式,翻译程序不生成独立的目标程序,而编译方式则生成独立保持的目标程序。

91、编译过程

符号表

符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。符号表的存在可以贯穿编译所有阶段。

错误管理

静态错误:编译时所发现的程序错误,分为语法错误和静态语义错误。

语法错误包含:单词拼写错误、标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

静态语义分析:运算符与运算对象类型不合法等错误。

动态错误:发生程序运行时,也叫动态语义错误。包括死循环、变量取零时做除数、引用数组元素下标越界等错误。

92、文法和正规式

一般的程序设计语言属于上下文无关文法。

正规文法,表示的语言集合是正规集,正规集的规律可以用正规式表示。

93、传值调用和引用调用

94、常见的程序设计语言

Fortran语言(第一个高级程序设计语言,科学计算,执行效率高)

Pascal语言(结构化程序设计语言,表达能力强,Delphi)

C语言(通用、结构化程序设计语言,指针操作能力强,高效)

Lisp语言(函数式程序语言,符号处理,人工智能)

C++语言(C语言基础上增加了类机制,面向对象,高效,与C兼容)

Java语言(面向对象,中间代码,跨平台,通用的程序设计语言)

Python(面向对象,解释型程序设计语言,胶水语言,通用的脚本语言)

PHP(服务器端脚本语言,制作动态网页)

Ruby(简单快捷、面向对象、脚本语言)

Delphi(快速应用程序开发工具,可视化编程环境)

COBOL(数据处理领域最为广泛的程序设计语言,高级编程语言)

XML(可扩展标记语言,标准通用标记语言的子集 )

PROLOG(逻辑式语言,间接性,表达能力强,建造专家系统、数据库、自然语言理解、智能知识库等)

注:C/C++常被用于操作系统开发;脚本语言是解释性语言。

95、保护范围和保护对象

96、保护期限

97、知识产权人确定-职务作品判定

98、知识产权人确定-其他

99、侵权判断的特殊要求

中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权。

开发软件所用的思想、处理过程、操作方法或者数学概念不受保护

著作权法不适用于下列情形:

法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;

时事新闻;

历法、通用数表、通用表格和公式。

100、典型的合理引用和侵权行为

主营产品:不锈钢弯头,不锈钢三通,不锈钢大小头,不锈钢法兰