《软件设计师》重点笔记.pdf
《《软件设计师》重点笔记.pdf》由会员分享,可在线阅读,更多相关《《软件设计师》重点笔记.pdf(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、作者序言为什么要分享软设笔记?一直以来,我都认为人类世界最美好的事情莫过于用一个生命去影响另一个生命(前提是正面影响)。如果我的一点点努力,能够帮助你通过软考,我想,这将是很有意义的一件事情。考软设的人很多,我作为过来人,希望能够给予你们一些帮助。为什么要写序言?每一位读者,都不是我本人。看这本笔记,未必知道如何去看,所以我写下想说的话,希望你们在看笔记的过程中,少走弯路。软设,我付出了许多的心血,虽然不至于头悬梁锥刺股,但也是为其折腾了许多日子,至少,是送了好多钱 这一路走来,有很多感想,写在这里,也算是将其作为一个树洞吧。软考难吗?相信许多初次考软设的人都喜欢问老司机这个问题,其实没有人能
2、给你正确答案,除了你自己。对于一般人来说,上清华北大难吗?当然难,但是当中不乏NB之人,能够轻易过线,对他们来说就是so easy。所以,难与不难,取决与你的实力。为什么要考软考?软考的中级证书是能够拿来直接评职称的(听说),也许你不知道什么是职称,其实我也不知道感觉好像是蛮有用的东西,自行百度吧。我只是个学生,大学时间相对工作而言还是比较多的,考考证,也不是什么坏事。而且,努力久了,软设不仅仅是一门专业证书的考试,更是我的信仰。对于求职,听说没什么大用,毕竟,计算机的发展大家也都知道,技术是第一位的。但是软设证书,如果人家有,你没有,我想这感觉应该不会太好。对于经济,考一次140RMB(浙江
3、省价格)。曾经有人在群里收购软设挂证,开价3000元,对于学生的我,还是蛮开心的。这个笔记与 软件设计师教程的区别先说说这个笔记的由来吧。人脑毕竟存储空间有限,且极易遗忘。所以我把重要的知识点都会记下来,反复看。有 本 软件设计师教程(以下简称教程),他写的非常详细。如果要买,我建议去某鱼看看,正版太贵了,个人建议阿,如果你钱多,或者坚决支持正版,当我没说。我与这本书的主要区别在于精。教程一共700页,共 计 100万汉字,写得非常非常详细,但是一般人都看不了多少页,枯燥难懂。而我的笔记,根据多套试卷的考点考频来综合考虑,记录了高频的一些知识点。且用最简单易懂的语言来解释,有必要的话,我也配上
4、了练习题与解析总共才2 万汉字,几乎都是高频考点,如果我的笔记写的不够详细,可以再去看对应教程中的知识点。复习软设的注意事项第一点,建议你们买一本 软件设计师同步辅导,这本书是比较简短的知识点,详细度不如教程,但是他不仅仅是按章节分类,更是具备了课后习题与解析。虽然不得不说,解析不咋滴。第二点,千万不要以为得到了这本笔记就和得到了 九阴真经一样,这本书,最适合的读者是谁?是我!他针对的是我的弱点,每个知识点都是一针见血。对于读者,我写的知识点未必是你不会的,没写的知识点未必是你会的。只能说,最适合的读者是我。所以,我建议大家只是把这本笔记当作一个小小的参考资料,根据自己的做题经验,去写本专属自
5、己的笔记。第三点,不用去搜什么模拟卷,真题多的是。网上都有,另外,不要做年份太早的,我最初是从06年开始做的,知识点差的太多了 建议大家刷2010年之后的题。第四点,虽然我是计算机专业,但是我的。ffice功底确实渣的一批,所以排版也是非常糟糕的,只会用标题一,标题二,标题三来区分知识点的从属关系。我以个人的理解,将众多的知识分成了多个章节,数据结构、软件工程、多媒体等。所以可能分的不太科学,只是根据自己的理解而己。但是没关系,考试不会考你某个知识点是属于哪个章节的,你会做就可以。这本笔记的最佳使用方法是打开w ord的导航窗体,根据章节去看。标题 页面 结果艮习软设的注意事项 q软件测试编译
6、原理,软件工程/软件生命周期问题定义可行性研究需求分析开发阶段百/统T (U P)简介初启阶段精化阶段构建阶段台 阶 段 Vlr明天,也很美好明天,就是2016年下半年的软设开考之日。没错,作为这本笔记的书写者,自己都还没通过软设我程序员考了 2 次才过,软设,这是第2 次考,希望能过吧。但是讲实话,若是没过,我也不会特别难过,放平心态吧,尽人事听天命。只能说技不如人,不能怨天尤人。拥有一个良好的心态,我觉得比拥有所谓的证书更重要。留个QQ吧,我也不知道留了有啥用,出版社也不会来找我,我就是想留一个948832626.如果学习的过程中有疑问的,还是别+我 QQ 了,我考完就忘了,回答不了你。我
7、 留 Q Q 纯粹就是觉得应该有一个自己的标识,就是这样希望这本笔记,能让你们早日成为软件设计师!2016年 11月 1 1 日数据结构邻接矩阵无向图无向图邻接矩阵:其邻接矩阵第i 行元素的和即为顶点i 的度,例如:顶点4 的度就是第四行的和,即 2。有向图其邻接矩阵的第i 行元素之和为顶点i 的出度,而邻接矩阵的第j 列元素之和为顶点j 的入度。例如:顶点3 的出度和入度分别为5 和 16.H 0 可提金.11千也当为5 电 旭 却 能浓上知必肾在为上的位支向依7、耳画 联因,座利屯有身份2存储结构顺序存储结构用一组地址连续的存储单元依次存储线性表的各个数据元素,适用于频繁查询时使用。入接出
8、最图3-1栈的示意图,链式存储结构在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的),适用于在较频繁地插入、删除、更新元素时使用。单链表循环链表数据指针域*双链表各链表的比较因为双链表有两个指针域,因此,双链表的灵活度优于单链表,但是双链表的开支要大一些散列存储结构将数据元素的存储位置与关键码之间建立确定对应关系的查找技术,即键值对。bucket array索引存储结构索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。比如数据库ROOT住键索引Col2)树二叉排序树若它的左子树
9、非空,则左子树上所有节点的值均小于它的根节点的值若它的右子树非空,则右子树上所有结点的值均大于等于它的根节点的值它的左、右子树也分别为二叉排序树。查找的时候,中序遍历二叉树,得到一个递增序列关键字最大的结点可以有左子树,但一定没有右子树哈夫曼树(最优二叉树)定义是带权路径(W P L)最短的树,权值越大的叶子节点越靠近根节点。构造哈夫曼树及WPL计算例题已知一个文件中出现的各字符及其对应的频率如下表所示。若采用定长编码,则该文件中字符的码长应为()。若采用Huffman编码,则字符序列“face”的编码应为()。abcdef廨(%)4513121695A.2B.3C.4D.5A.1 1 0 0
10、 0 1 0 0 1 1 0 1B.0 0 1 1 1 0 1 1 0 0 1 1C.1 0 1 0 0 0 0 1 0 1 0 0D.0 1 0 1 1 1 1 0 1 0 1 1解析:所谓定长编码是指用多少位二进制足够表示字符,图中字符是有6个的,a、b、c、d、e、f,可用0 0 0 到 1 0 1 表示a到 f,这样编码字符的码长可以为3,4位当然也是可以,但我们是找最合适的,自 然 3位能满足要求。第二问,哈夫曼树的左节点未必要比右节点小,但是通常做题时需要写成左小右大的形式,再左0右 1 赋值,所 谓“f a c e”编码,是指找到这4个字母,从根节点出发,要经历的编码数。如下图所
11、示,所以答案为B A平衡二叉树平衡二叉树(B a l a n d B i n a r y T r e e)又被称为A V L 树(有别于A V L 算法),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点或0个子节点的二叉树。查找方法二分查找法(折半查找法)适用情况不经常变动而查找频繁的有序列表优点1、比较次数少2、查找速度快3、平均性能好缺点1、要求待查表为有序表2、插入删除困难实现算法首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者
12、相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。分块查找适用情况节点动态变化的情况优点比顺序查找算法(就是一个一个的去比较)快得多缺点速度不如折半查找法实现算法把一个大的线性表分解成若干块,每块中的节点可以任意存放,但块与块之间必须排序。假设是按关键码值非递减的,那么这种块与块之间必须满足已排序要求,实际上就是对于任意的 i,第 i 块中的所有节点的关键码值都必须小于第i+1块中的所有节点的关键码值。此外,还
13、要建立一个索引表,把每块中的最大关键码值作为索引表的关键码值,按块的顺序存放到一个辅助数组中,显然这个辅助数组是按关键码值费递减排序的。查找时,首先在索引表中进行查找,确定要找的节点所在的块。由于索引表是排序的,因此,对索引表的查找可以采用顺序查找或折半查找;然后,在相应的块中采用顺序查找,即可找到对应的节点。平均查找长度(E(n)假设某个线性表中共有n 个节点,分成大小相等的b 块,每块有s=n/b,则E(n)=Eb+Es二b+l.s+l-d-2 2+1P排序直接插入排序每一-趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成,比如斗地主抽牌就是这样的规则。
14、简单选择排序每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。排序前:9125748635第1趟:1925748635第2趟:1295748635第3趟:1235748695第4趟:1234758695第5趟:1234578695红色粗体表示位置发生变化的元素第6趟:1234558697第7趟:1234556897第8趟:1234556798第9趟:1234556789排序后:1234556789图-简单选择排序示例图Victor Ihang冒泡排序两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。第三遍排序后第二遍
15、排序后第一遍排序后初始状态希尔排序把记录按步长g用分组,对每组记录采用直接插入排序方法进行排序。随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到1时,整个数据合成为一组,构成一组有序记录,则完成排序。初始9125748659125748635I Igap=5第一趟排序-,-1598657T23L4123598657r 4 1gap=2-r第二趟排序12143s 657892143565789gap=1 I I I I I I I I I I第三趟排序-L1234556789图-希尔排序示例图 Zhang快速排序通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的
16、数,右边都是比它大的数。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。采用了分治法的算法策略。left right牛?left rightleft rightlefts right 第一步:设置两个指针怙咕口 right,分别指向数组的头部(2)和尾部(3)。并且以头部元素(2)为基准数base。第二步:从右至左扫描,通过偏移right指针,寻找比基准数小的元素。我们找到比基准数小的元素,我们将其赋值给left指针所指的位置。第三步:从左向右扫描,通过偏移10ft指针,寻找比基准数大的元素。我们找到比基准数大的元素,我们将其赋值给righ
17、t指针所指向的位置。第四步:不断重复二、三步骤,直到left、right指 针 络。这样,所有的元素都被扫描了一遍。我们将基准数赋给重合位置。此时,已完成了一次排序。基准数的左边都是比它小的数,而右边都是比它大的数。第五步:以基准数(2)为分割点。对其左侧和右侧的数分别按照一、二、三、四步骤去进行排序。经过递归过程,最后排序结束。Victor Zhang堆排序堆排序中堆的定义:n个元素的序列 k i,k 2,,k J当且仅当满足下列关系时,称为堆。层请;1或 /羡:(i=1 2,即归并排序将待排序序列R O.n-l 看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有
18、序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。gap=2gap=4gap=8gap=1基数排序基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。设有一个初始序列为:R 50,123,543,187,49,30,0,2,11,100。我们知道,任何一个阿拉伯数,它的各个位数上的基数都是以09来表示的。所以我 们 不 妨 把09视 为10个 桶。我们先根据序列的个位数的数字来进行分类,将其分到指定的桶中。例如:R0=5 0,
19、个 位 数 上 是0,将这个数存入编号为0的桶中。05030010011122312354345671878949分类后,我们在从各个桶中,将这些数按照从编号0到编号9的顺序依次将所有数取出来。这时,得到的序列就是个位数上呈递增趋势的序列。按照个位数排序:50,30,0,100,11,2,123,543,187,49。排序的比较排序方法最好时间复杂度平均时间复杂度最坏时间复杂度辅助空间稳定性直接插入O(n)O(n2)O(n2)0(1)稳定简单选择O(n2)O(n2)O(n2)。不稳定冒泡排序O(n)O(n2)O(n2)0(1)稳定希尔排序不存在O(n13)不存在。不稳定快速排序O(nlog2
20、n)O(nlog2n)O(n2)O(log2n)不稳定堆排序O(nlog2 n)O(nlog2 n)O(nlog2n)0(1)不稳定归并排序O(nlog2 n)O(nlog2 n)O(nlog2 n)O(n)稳定基数排序O(d(n+rd)O(d(n+rd)O(d(n+rd)O(rd)稳定例题堆是一种数据结构,(34)是堆排序A.(10,50,80,30,60,20,15,18)B.(10,18,C.(10,15,D.(10,30,15,20,50,18,50,80,60,20,15,80,30,60)30,60,20)18,50,80)根据定义可知选B广义表广义表的长度是将最外面那层的括号删了
21、以后所剩下的元素(组)个数,深度是括号的层数例题L l=(a,(a,b),(a,b),c),L 2=(l,2,3),L 3=(l,2,3)。求 L I、L 2、L 3 的长度和深度答案:长度深度L114L212L331归并排序的归并路数归并路数=l o g k m 其中m为元素个数,k为多路归并趟数例题若对2 7 个元素只进行三趟多路归并排序,则选取的归并路数为(3 7)oA.2 B.3 C.4 D.5根据公式可得l o g 以 3为底,以 2 7 为真数的答案为3。所以选B表达式的记法前缀表达式(前缀记法、波兰式)从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数
22、,用运算符对它们做相应的计算(栈顶元素op次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。例 如 前 缀 表 达 式 X +3 4 5 6”:(1)从右至左扫描,将 6、5、4、3 压入堆栈;(2)遇到+运算符,因此弹出3 和 4 (3 为栈顶元素,4为次顶元素,注意与后缀表达式做比较),计算出3+4 的值,得 7,再将7 入栈;(3)接下来是X运算符,因此弹出7 和 5,计算出7 义5=3 5,将 3 5 入栈;(4)最后是-运算符,计算出3 5-6 的值,即 2 9,由此得出最终结果。中缀表达式我们平常用的表达式a+b-c这样的就是中缀表达式后缀表
23、达式(后缀记法、逆波兰式)从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素o p栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。例如后缀表达式“3 4 +5 X 6(1)从左至右扫描,将3和4压入堆栈;(2)遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素,注意与前缀表达式做比较),计算出3+4的值,得7,再将7入栈;(3)将5入栈;(4)接下来是X运算符,因此弹出5和7,计算出7义5=3 5,将35入栈;(5)将6入栈:(6)最后是-运算符,计算出35-6的值,即2 9,由此
24、得出最终结果。系统基础符号数原码正数的原码等于自身的二进制数,负数的原码第一位为1(符号位,表示负数),后面为自身的二进制数反码正数的反码等于自身的二进制数,负数的反码符号位不动,其余各位按位取反补码正数的补码等于自身的二进制数,负数的补码是在反码的基础上+1移码(增码)无论正负数,只要将其补码的符号位取反即可符号数的应用在计算机中,最适合数字加减运算的数字编码是补码,最适合表示浮点数阶码的数字编码是移码。定点数所谓定点数,就是小数点的位置固定不变的数。小数点的位置通常有两种约定形式:定点整数(纯整数,小数点在最低有效数值位之后)和定点小数(纯小数,小数点在最高有效数值位之前)。机器字长为n时
25、各种码制表示的带符号数的范围码制定点整数定点小数原码-(2n-l),2n-1-l1-2(-1)反码_(1_牙 叫 一 牙 补码-2n l,2nH-l-1,1-2-叫移码2-1-1-1,1-2记忆技巧当A=2 B=l-2 时,则有以下规律码制定点整数定点小数原码-(A-1),A-1-B,B反码-(A-D)A-U-B,B补码-A,A-l-1,B移码-A,A-l-1.B计算机指令系统立即寻址:操作数包含在指令中,获取操作数是最快的直接寻址:操作数的地址在指令中寄存器寻址:操作数在寄存器中寄存器间接寻址:操作数的地址在寄存器中中央处理器CPU的组成运算器、控制器、寄存器和内部总线,其中控制器不仅要保证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计师 软件 设计师 重点 笔记
限制150内