40天前也就是11月5日参加了2022年下半年北京的软考,今天12月16日,查到成绩上午53和下午48,算是都过了及格线。按照之前给自己定的的计划,过了就把自己的复习笔记分享出来,所以就有了这篇文章。
虽然不是计算机专业,但接触编程已经有快3年了,从事开发工作也有快一年了。总共复习3个月,前两个月看基础知识,后一个月刷题。基础知识主要是看官方的软考教材和教辅,但主要是教辅然后配合希赛网的辅导视频。刷题主要是用的51CTO题库在线题库还有《软件设计师考试 32 小时通关》。
下面开始正文:
-
软件开发包括需求分析,系统设计,系统测试三个阶段
-
重点:设计模式,UML图,算法,时间复杂度
-
UML图:https://blog.csdn.net/qq_41415742/article/details/108854662
-
常用的中间代码的表达形式有语法树、后缀式、三地址代码。
-
贪心解决不了就用动态规划,一般贪心算法的时间复杂度为O(nlgn),动态规划为O(n^2),能用贪心解决就不用动态规划。 贪心得到的结果不一定是最优解。 动态规划在分析子问题的时候,会使用前面子问题的最优结果,并且前面子问题的最后结果不受后面的影响,最后一个子问题即最优解。
-
査询条件Where 与 Having 的区別:Where 是针对单条记录的判断条件,而 Having 是针对分组 之后的判断条件。同时,由于考虑到项目号可能重复,所以要加Distinct 去掉重复的项目。
-
java中当定义的方法没有方法体是要在返回值之前加一个abstract public abstract void draw( )draw( )
-
AES(高级加密标准)和DES(美国数据加密标准)是对称加密算法。
-
一个模块的作用范围(又称影响范围)是指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围是指模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。
-
活动图和状态图的区别:箭头边是否有时间,有则为状态,无则为活动
-
有序二叉树的构建序列中根节点一定排在子节点的签名
-
共享密钥加密: 加密和解密用同一个密钥的方式称为共享密钥加密,也交对称密钥加密。 公开密钥加密: 公开密钥加密使用一对非对称的密钥,一把是私钥,一把是公钥。
-
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传输email的标准。
-
基本表是数据库中用来存储数据的对象,是有结构的数据的集合,是整个数据库系统的基础。数据在表中式按行和列的格式组织排列的。 视图是计算机数据库中的一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。 基本表、视图区别为:存在不同、存储内容不同、操作不同。视图是由一个或几个基本表导出形成的虚表。
-
关系代数笛卡尔积就是相乘相同的数据列会保存,自然连接则不会保存
-
网络协议总结:
image.png
-
netstat 是控制台命令,是一个监控 TCP/IP 网络非常有用的工具,它可以显示路由表、实际的网络连接和每一个网络接口设备的状态信息。
-
tracert(跟踪路由)是路由跟踪的实用程序,用于确定 IP 数据包访问目标所采取的路径
-
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
-
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
-
设计模式及其分类:
image.png
image.png
image.png
image.png
- 使用队列对图进行广度优先遍历
image.png
- 插入排序
image.png
- 冒泡排序:
image.png
- 选择排序
image.png
-
希尔排序:先两两一组选择排序,再三三一组选择排序,最后整体排序,时间复杂度O(n的1.3次方)
-
这种圆和半圆连接的图是典型的组件图
image.png
-
快速排序:通过一趟排序将要排序的数据分成独立的两个部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据 分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序在最 好情况下的时间复杂度为 O(nlog2n);在最坏情况下,即初始序列按关键字有序或基本有序时,快速排序的时间复杂度为O(n2)。
-
归并排序把n个数字组成的序列进一步划分n/2个子序列,每个子序列两个元素,然后子序列内排序,然后两个子序列合并,进行排序,逐步递进,最后合并成n个数字的一个序列,时间复杂度O(nlog2n)
-
几种算法的简单理解:分治:分而治之,先解决子问题,再将子问题的解合并求出原问题。 贪心:一条路走到黑,选择当下局部最优的路线,没有后悔药。 回溯:一条路走到黑,手握后悔药,可以无数次重来。(英雄联盟艾克大招无冷却)。 动态规划:上帝视角,手握无数平行宇宙的历史存档,同时发展出无数个未来。
-
多态分类:参数多态:应用广泛、最纯的多态。 2)包含多态:同样的操作可以用于一个类型及其子类型。包含多态一般需要进行运行时的类 型检查。 3)过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。 4)强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作 符的要求。
-
UML图:
image.png
对象图展现了某一时刻一组对象和它们之间的关系。对象图一般包括对象和链,如图 7-7 所示。
image.png
image.png
image.png
image.png
image.png
image.png
image.png
- 不同排序的复杂度和稳定性
image.png
-
FTP 协议的端口号一个是 20、一个是 21,其中,20 为数据口,21 为控制口,但是由于 FTP 工作方式的不同,所以端口号不会总是 20。模式分为主动模式 和被动模式,主动模式是从服务器端向客户端发起连接,被动模式是客户端向服务器端发起连接, 二者的共同点是都使用 21 端口进行用户验证和管理,差别在于传送数据的方式不同,主动模式的 FTP 服务器数据端口固定在 20,而被动模式则在 1025~65535 中随机产生。
-
多重度指的是两个类之间的对应关系,一对一,一对多,多对多
-
整数和浮点数所能表达的数值范围
image.png
- 海明码校验位的计算方式
image.png
- 海明码校验纠正方式:
image.png
- 流水线周期计算
image.png
-
IDEA算法和 RC4 算法都是对称加密算法,只能用来进行数据加密;MD5 算法是消息摘要算法,只能用来生成消息摘要,无法进行数字签名;RSA 算法是典型的非对称加密 算法,主要具有数字签名和验签的功能。
-
同一天申请的情况处理方 式如下:①两个申请人作为一件申请的共同申请人;②其中一方放弃权利并从另一方得到适当的补 偿。如果双方协商不成,则两件申请都不授予专利权。同一天申请的,初步审定并公告使用在先的,驳回其他人的申请;均未使用或无法证明的,各自协商;不愿协商或协商不成的,抽 签决定;不抽签的,视为放弃。
-
过程设计:也称为模块详细设计,主要是详细模块的实现算法,以及模块所使用的数据结构。
-
极限编程 XP:近似螺旋的开发方法,把整个开发过程分解为相对比较小而简单的周期,通过积极的沟通反馈,开发人员和客户都比较清楚当前的开发进度、需要解决的问题等,根据这些实际 情况去调整开发过程,这是极限编程的思想。
-
并列争球法:就是通常所说的 Scrum。Scrum是一个增量、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个 Sprint,每个 Sprint 的建议 长度是 2~4 周。在 Scrum 中,使用产品 Backlog 来管理产品的需求,产品团队总是先开发对客户 具有较高价值的需求。挑选的需求在 Sprint 计划会议上经过讨论、分析和估算得到相应的任务列表, 称为 Sprint Backlog。在每个迭代结束时,Scrum团队将递交潜在的可交付的产品增量。
-
瀑布模型不适用于需求多变或早期需求不确定的开发过程。瀑布模型难以适应变化的需求。
-
内聚分类
image.png
-
绑定是一个把过程调用和响应调用需要执行的代码加以结合的过程。在一般程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此, 一个给定的过程调用和代码结合是直到调用发生时才进行的。
-
对象图描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例
-
不同设计模式定义:
image.png
- 关系代数中,连接,投影,选择的计算:
image.png
-
ARP 和 ICMP 是网络层协议,X.25 是标准的接口协议,只有 SNMP是应用层协议。SNMP 协议的报文是封装在UDP 协议中传送的。简单网络管理协议(Simple Network Management Protocol--SNMP)。SNMP 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。
-
管理距离是各种路由协议的优先权,当多个路由协议转发的关于某个目标的 多条路由,使用管理距离选择权限最高的路由,管理距离小的优先级最高。
-
java在类的构造器中使用super方法,可以获取到父类中的属性和方法,并在子类中直接使用
-
CPU不同组件的作用:
image.png
- 由于DMA方式是在DMA控制器硬件的控制下实现数据的传送,不需要 CPU执行程序,故这种方式传送的速度最快。另外,三种都是通过 CPU 执行某一段程序,实现计算机 内存与外设间的数据交换
image.png
- A选项的 RSA是非对称加密算法;B 选项的 SHA-1 与 C 选项的MD5 属于信息摘要算法;D选项的 RC-5 属于非对称加密算法。这些算法中 SHA-1 与MD5 是不能用来加密数 据的,而 RSA由于效率问题,一般不直接用于大量的明文加密.
image.png
不同编译阶段的任务:
image.png
-
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征和瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软 件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用 以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
-
UML通信图不同对象之间的连线是消息,数据流的连线叫流名称。
-
装饰模式是一种对象结构型模式,可以动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。通过装饰模式,可以在不影 响其他对象的情况下,以动态、透明的方式给单个对象添加职责;当需要动态地给一个对象增加功 能,这些功能可以再动态地被撤销时可以使用装饰模式;当不能采用生成子类的方法进行扩充时也 可以使用装饰模式。
-
外观模式是对象的结构模式,要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这 一子系统更加容易使用。
-
一维动态规划时间复杂度一般有O(n)和O(n2)两种,时间复杂度取决于状态转移方程。如果第i个状态的确定需要利用前i-1个状态,即dp[i]由dp[i-1],dp[i-2],...,dp[0]的取值共同决定,那么此时的时间复杂度为O(n2)。
-
java中的construct函数,在new之后要单独再调用一次
-
回答表名称,一定要在以表结尾
-
分治法的时间复杂度为nlogn
-
海明码是利用奇偶性来检错和纠错的校验方法,码距最小为 2n+1
-
结构化分析方法(Structured Method,结构化方法)是一种软件开发方法,一般利用图形表达用户需求,强调开发方法的结构合理性以及所开发软件的结构合理性。
-
结构化分析方法是一种面向数据流的需求分析方法,适用于分析大型数据处理系统
-
根据我国《著作权法》第二十条的规定,作者的署名权、修改权、保护作品 完整权的保护期不受限制。但是商标权可以每 10 年无限续期,所以也存在无限期拥有。
-
共享密钥加密又称对称加密算法,既用同一个密钥去加密和解密数据。常用 的算法包括 DES、3DES、IDEA、AES 等。
-
数值表示范围
image.png
-
程序查询方式的原理是:当主机进行 I/O 操作时,首先发出询问信号,读取设备的状态并根据设备状态决定下一步操作究竟是进行数据传输还是等待。这种控制下,CPU 一 旦启动 I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。程序查询方式的主要特点 是 CPU有踏步等待现象,CPU与 I/O 串行工作。程序中断是指计算机执行现行程序的过程中,出现某些急需处理的异常情况和特殊请求,CPU暂时终止现行程序,而转去对随机发生的更紧迫的事件进行处理,在处理完毕后,CPU 将自动返 回原来的程序继续执行。在中断方式中 CPU与外设可并行工作。 直接内存存取DMA是指在内存与 I/O 设备间传送数据块的过程中,不需要 CPU的任何干涉,只需要 CPU 在过程考试启动与过程结束时的处理,实际操作由DMA 硬件直接执行完成,CPU 在 此传送过程中可做别的事情。在DMA方式中 CPU与外设可并行工作。
-
进程控制块 PCB 的组织方式有以下三种。线性表方式:不论进程的状态如何,将所有的 PCB 连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况。 2)索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等。 3)链接表方式:系统按照进程的状态将进程的 PCB 组成队列,从而形成就绪队列、阻塞队列、运行队列等。
image.png
- 耦合分类
image.png
- UML图中关系的表示:
image.png
- 数据库范式:
image.png
-
对于基本有序数组采用插入排序效率是最高的,时间复杂度为 O(n),快速排序适用于无序数组,对于有序数组来说时间复杂度是 O(n²),属于最坏的情况。
-
25 端口为 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件。 110 端口是为 POP3(邮件协议 3)服务开放的
-
简单网络管理协议(SNMP)由一组网络管理的标准组成,包含一个应用层协议(Application Layer Protocol)、数据库模型(Database Schema)和一组资源对象。该协议能够 支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。SNMP 使用 UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。
-
一个表中可以有多个候选码,但只有一个主码。候选码和主码都能唯一标识表中的一个元组,一个表中可以有多个候选码,从多个候选码中选出一个作为主码。
-
PCI总线是PC机常用总线,SCSI是软硬磁盘、光盘、扫描仪常用总线。他们都是并行总线。
-
OSI七层结构,主要功能,和协议,设备
image.png
-
数据字典有4类条目:数据流、数据项、数据存储和基本加工。
-
解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,而在解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立的目标程序。
-
初始信号量S设置为1,表示P操作申请了一个资源
-
辅助软件维护工具辅助维护人员对软件代码及其文档进行各种维护活动。软件维护工具主要有:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
-
语句覆盖:语句覆盖常常被人指责为“最弱的覆盖”,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。假如只要求达到语句覆盖,那么换来的确实测试效果不明显,很难更多地发现代码中的问题。
-
判定覆盖 基本思想:设计用例,使得程序中的每一个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足
-
条件覆盖 基本思想:设计用例,使每个判断中的每个条件的可能取值至少满足一次
-
路径覆盖:在白盒测试法中,覆盖程度最高的就是路径覆盖,因为其覆盖程序中所有可能的路径。
-
桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。
-
DNS查询:客户端先本地缓存记录,再看HOST表,如果没有找到就发请求给本地域名服务器。本地域名服务器先看区域数据配置文件,再看缓存,然后去找到根域名服务器-顶级域名服务器-权限域名服务器。
-
自反律:若属性集Y 包含于属性集X,属性集X 包含于U,则X→Y 在R 上成立。(此处X→Y是平凡函数依赖)。增广律:若X→Y 在R 上成立,且属性集Z 包含于属性集U,则XZ→YZ 在R 上成立。传递律:若X→Y 和 Y→Z在R 上成立,则X →Z 在R 上成立。④ 合并规则:若X→Y,X→Z,则X→YZ为F所蕴含;⑤ 伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含;⑥ 分解规则:若X→Y,Z⊆Y,则X→Z为F所蕴含。
-
IO请求层次结构
image.png
-
指令寄存器(IR)用来保存当前正在执行的指令。地址寄存器(AR)用来保存当前 CPU 所访问的内存单元的地址。为了保证程序指令能够连续地执行下去,CPU 必须具有某些手段来确定下一条指令的地址, 程序计数器正起到这种作用,所以通常又称为指令计数器。由于 大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对 PC加 1
-
奇偶校验码:
image.png
- 能力成熟度模型集成(CMMI):
image.png
- 软件质量特性:
image.png
-
抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。
-
建造者模式(生成器模式):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可 以创建不同的表示。建造者模式将部件和其组装过程分开,一步一步创建一个复杂的对象。
-
工厂方法:也叫作虚拟构造器模式,它定义一个用于创建对象的接口,让子类决定实例化哪一 个类,使一个类的实例化延迟到其子类。
-
原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
-
单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类 称为单例类,它提供全局访问的方法。
-
外观模式:定义了一个高层接口,为子系统中的一个组接口提供一个一致的界面,从而简化子系统的使用。
-
命令模式将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。
-
观察者模式(Observer)是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
-
享元模式的特点是复用内存中已存在的对象,减少系统创建对象的实例。
-
组合模式(Composite Pattern)有时候又叫作部分-整体模式,它在树型结构的问题中,模糊了简单 元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与 复杂元素的内部结构解耦。
-
策略模式:定义一系列的算法,把每一个算法封装起来,并且它们可以互相替换。本模式使得算法可以独立于使用它的客户而变化
-
责任链:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
-
概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。 详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。 概要设计阶段通常得到软件结构图 详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等
-
组合关系和聚合关系的区别,组合关系中的部分依赖于整体而存在,而聚合关系中的部分可以独立于整体而存在
-
中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于行为型对象模式,适应于下列情况:一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。想定制一个分布在多个类中的行为,而又不想生成太多的子类。
-
观察者模式(Observer Pattern):观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
-
访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用与这些元素的新操作。即对于某个对象或一组对象,不同的访 问者,产生的结果不同,执行操作也不同。
-
备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。
-
策略模式(Strategy Pattern):策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
-
命令模式(Command Pattern):将一个请求封装成一个对象,从而使得用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
-
自然连接:
image.png











网友评论