软考-软件设计师题库
邵预鸿 Lv5

计算机系统

  • 中央处理单元(CPU)是计算机系统的核心部件,它负责获取程序指令、对指令进行译码并加以执行

  • 计算机基本硬件系统由运算器、控制器、存储器、输入设备和输出设备 五大部件组成

  • CPU的功能: 程序控制、操作控制、时间控制、数据处理

    • 程序控制:通过执行指令控制程序的执行顺序,是CPU的重要功能。 控制器
    • 操作控制:CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。 控制器
    • 时间控制:对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的顺序都需要进行严格控制 控制器
    • 数据处理:通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据加工处理也是CPU最根本的任务。**—-运算器**
  • 运算器由**算术逻辑单元(Arithmetic andLogic Unit,AIU)、累加寄存器(AC)、数据缓冲寄存器(DR)和状态条件寄存器(PSW)**等组成

  • 运算器主要有两个功能: 算术运算、逻辑运算

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    运算器由算术逻辑单元(Arithmetic andLogic Unit,AIU)、累加寄存器、数据缓冲寄存
    器和状态条件寄存器等组成,它是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。
    相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控
    制器发出的控制信号来指挥的,所以它是执行部件。运算器有如下两个主要功能。
    (1)执行所有的算术运算,例如加、减、乘、除等基本运算及附加运算。
    (2)执行所有的逻辑运算并进行逻辑测试,例如与、或、非、零值测试或两个值的比较等
    下面简要介绍运算器中各组成部件的功能。
    (1)算术逻辑单元(ALU)。ALU 是运算器的重要组成部件,负责处理数据,实现对数
    据的算术运算和逻辑运算。
    (2)累加寄存器(AC)。AC通常简称为累加器,它是一个通用寄存器,其功能是当运算
    器的算术逻辑单元执行算术或逻辑运算时,为 ALU 提供一个工作区。例如,在执行一个减法
    运算前,先将被减数取出暂存在 AC 中,再从内存储器中取出减数,然后同 AC 的内容相减,
    将所得的结果送回 AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。
    (3)数据缓冲寄存器(DR)。在对内存储器进行读/写操作时,用 DR 暂时存放由内存储
    器读/写的一条指令或一个数据字,将不同时间段内读写的数据隔离开来。DR 的主要作用为:
    作为 CPU 和内存、外部设备之问数据传送的中转站:作为 CPU 和内存、外围设备之间在操作
    速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。
    (4)状态条件寄存器(PSW)。PSW 保存由算术指令和逻辑指令运行或测试的结果建立
    的各种条件码内容,主要分为状态标志和控制标志,例如运算结果进位标志(C)、运算结果
    溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标
    志(D)和单步标志等。这些标志通常分别由1位触发器保存,保存了当前指令执行完成之后
    的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作产生一个判决。
  • 运算器只能完成运算,而控制器用于控制整个CPU的工作,它决定了计算机运行过程的自动化。”
    它不仅要保证程序的正确执行,而且要能够处理异常事件。

  • 程序计数器(PC)。PC具有寄存信息和计数两种功能,又称为指令计数器。程序的
    执行分两种情况,一是顺序执行,二是转移执行

  • 地址寄存器(AR)。AR 保存当前 CPU 所访问的内存单元的地址。

  • 指令译码器(ID)。指令包含操作码和地址码两部分,

  • 计算机指令一般包括操作码和地址码两部分,
    为分析执行一条指令,其操作码和地址码都应存入指令寄存器(IR)

  • 在 CPU 中,常用来为 ALU 执行算术逻辑运算提供数据并暂存运算结果的寄存器是累加寄存器(AC)

  • CPU 产生每条指令的操作信号并将操作信号送往相应的部件进行控制

  • 程序计数器 PC 只能存放指令地址,

  • CPU 中的控制器决定计算机运行过程的自动化

  • 指令译码器是 CPU 控制器中的部件

  • 在 CPU 的寄存器中,指令寄存器对用户是完全透明的

  • CPU中的译码器主要作用是进行指令译码

  • 在 CPU中,控制器不仅要保证指令的正确执行,还要能够处理异常事件

  • 计算机执行指令的过程中,需要由CPU控制器产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。

  • 为实现程序指令的顺序执行,CPU程序计数器(PC)中的值将自动+1

  • 在CPU中,程序计数器用于跟踪指令地址

  • 计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将程序计数器(pc) 送到地址总线上

  • 用户可见:通用寄存器组、程序状态字寄存器(PSWR)、程序计数器(PC)、累加寄存器(ACC)
    用户不可见:指令寄存器(IR)、暂存寄存器(DR)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)

  • 指令寄存器的位数取决于——指令字长

  • 计算机最小单位 位/bit /b

  • 位->字节byte/B ->KB

  • 最小的数据单位是 位b

  • 最小的存储单位是字节 byte

  • 10进制转->2 8 16进制, 取余数反写

  • 10进制->D, 二进制->B, 八字节->O, 16进制->H

  • 立即寻址速度 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址

  • 指令系统中采用不同寻址方式的目的是 扩大寻址空间并提高编程灵活性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    立即寻址。操作数就包含在指令中。
    直接寻址。操作数存放在内存单元中,指令中直接给出操作数所在存储单元的
    地址。
    寄存器寻址。操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。
    寄存器间接寻址。操作数存放在内存单元中,操作数所在存储单元的地址在某个
    寄存器中。
    间接寻址。指令中给出操作数地址的地址。
    相对寻址。指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条
    指令的地址加上该偏移量。
    变址寻址。操作数地址等于变址寄存器的内容加偏移量。
  • 奇偶校验码、海明码、循环冗余校验码。

  • 循环冗余校验码, 采用模2运算, 码距= 2 可以检错,但不能纠错,编码长度k+r, K个数据位后跟R个校验位

  • 海明码 2^k -1>= n+k。n=>数据位, K校验位,校验奇偶性来检错和纠错

  • 奇数个数据位出错,可以检测出该错误但是无法纠正错误

  • 偶数个数据位出错,不可以检测出错误

  • 关于指令流水线性能度量的叙述,

    • 最大吞吐率取决于流水线中最慢一段所需的时间
    • 如果流水线出现断流,加速比会明显下降
    • 要使加速比和效率最大化应该对流水线各级采用相同的运行时间
    • 流水线采用异步控制不会提高其性能, 会增加…
  • 操作周期指最长时间段

  • 流水线的吞吐率是指单位时间流水线处理任务数,如果各段流水的操作时间不同,则
    流水线的吞吐率是最长流水段操作时间 的倒数

  • 流水线方式执行指令,提高了各部件 的复用率、系统的吞吐率,可同时执行多条指令

  • TP = *n / ( 执行1条指令的时间 + (n-1) 最长时间段 ) **

  • 指令时间= ( 执行1条指令的时间 + (n-1)* 最长时间段 )

  • 存储器分内存(主存) 和 外存(辅存)
  • RAM 可读可写
  • ROM只读存储器
  • 闪速存储器,简称闪存,整块闪存可以在数秒内删除, 能代替ROM,但不能代替主存
  • 相联存储器是一种按内容访问的存储器
  • 按寻址方式分类: 随机存储器、顺序存储器、直接存储器
  • 虚拟存储器: 由主存和辅存组成
  • 计算器系统的主存主要是由DRAM(动态随机存储器)构成的
  • SRAM 静态随机存储器
  • EEPROM 电可擦除编程存储器
  • 被访问后邻近的存储单元可能 还要被访问称为空间局部性, 被访问后,以后可能还会被访问称为时间局部性
  • 替换算法
    • 随机替换算法
    • 先进先出算法
    • 近期最少使用算法
    • 优化替换算法
  • 直接映像指主存的块与Cache块的对应关系是固定的
  • 全相联映像允许主存的任一块可以调入cache存储器的任何一个块的空间
  • 高速缓存对程序员来说是透明的(看不到),速度比主存快5~10倍
  • cache与主存地址 的映射是由硬件自动完成
  • cache的设计思想是在合理成本下提高命中率(CPU访问主存数据或指令的效率)
  • Cache地址映像中,发生块冲突次数最小的排名: 全相联映像 ->组想联映像 -> 直接映像
  • 中断: 在执行程序过程中,遇到急需处理的事件时,暂停当前正在运行的程序,转去执行有关服务 程序,处理完后自动返回源程序

  • 中断向量: 提供中断服务 程序的入口 地址

  • 中断响应时间: 发出中断请示开始,到进入中断服务程序的时间

  • 为了便于实现多级中断嵌套, 使用堆栈来保护断点和现场最有效

  • 中断处理过程中保存现场的目的是返回 去继续执行原程序

  • 输入输出(I/O)控制方式

    • 程序查询 方式

      image-20240601134925967

    • 中断驱动方式

    • 直接存储方式(DMA)

      第3点,由主存与外设建立直接数据通路

  • 由I/O设备提出的中断请示是可屏蔽的中断, 电源掉电是不可屏蔽的中断

  • DMA传送结束为中断, 除运算时除数为0为异常

  • CPU是在一个总线周期 结束时响应DMA请求的

  • 当采用DMA方式传送数据 时,每传送一个数据 都 需要占用一个**存储周期 **

  • 总线的分类(数地控)

    • 数据总线
    • 地址总线
    • 控制总线
  • 总线了解

  • SCSI不属于系统 总线
  • 加密

  • 在安全通信中,数字签名使用发送方私钥,使用发送方公钥验证消息的真实性

  • 数字证书使用CA私钥, 使用CA公钥验证CA的签名真实性

  • 数据签名是对真实性保护,确保消息不可否认

  • PKI体制中, 保证数字证书不被踹改的方法是用CA的私钥对数字证书签名

  • 私钥不能被交换

  • A和B通信使用数字证书来对用户的身份进行认证

  • 非对称算法(公开/公钥密钥加密算法)(共享密钥加密): RSA ECC DSA — 可用于数字签名
  • Hash函数, MD5摘要算法 计算结果128位, SHA-1安全散列算法
  • 利用报文摘要算法生成报文的目的是防止数据 被篡改
  • 对称密钥(共享、私钥、私有密钥加密)算法: DES 3DES RC-5 IDEA AES( 分组加密) RC4 — 可用于大量明文消息进行加密传输
  • 数据表示

    • 原码

      最高位是符号位,0=>正号, 1=>负号

      例如,+5 的原码是 00000101,-5 的原码是 10000101

    • 反码

      在反码表示法中,正数的表示与原码相同,而负数的表示是将其原码的每一位取反(0 变为 1,1 变为 0)。例如,+5 的反码仍然是 00000101,而 -5 的反码是 11111010

    • 补码

      正数补码= 正数原码 = 正数反码, 负数补码= 反码+1, 0的补码== 原码 0 0000000

    • 移码

      补码的基础上,符号位取反 0的移码== 补码 1 0000000

  • 补码和移码的正负0结果相同

  • 两个浮点数相加, 应首先统一两个数的阶码(对阶) —————— 小阶向大阶对齐,尾数右移N位

    • 增加E(阶码)的位数, 就会扩大可表示数的位数 数的范围

    • 增加尾数M, 就会提高精度

  • 串联系统

    R = R1R2R3…..Rn

  • 并联系统

    R = 1- (1-R1)(1-R2)(1-R3)…(1-Rn)

程序设计语言

  • 解释器: 翻译源程序时不生成独立的目标程序

  • 解释程序和源程序要参与到程序的运行过程中

  • 编译器:翻译时将源程序翻译成独立保存的目标程序

  • 机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的运行过程

  • 汇编程序: 是将汇编语言翻译成目标程序执行

  • 有限自动机是词法分析的一个工具,它能正确地识别正规集

    • 确定的有限自动机(DFA):对每一个状态来说识别字符后转移的状态是唯一的

    • 不确定的有限自动机(NFA):对每一个状态来说识别字符后转移的状态是不唯一的

  • 常见的中间代码有: **后缀式、三地址码、三元式、四元式和树(图)**等形式

  • 中间代码与具体的机器无关(不依赖具体的机器),可以将不同的高级程序语言翻译成同一种中间代码。中间代码可以跨平台。因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性

  • 符号表: 不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中。记录源程序中各个字符的必要信息,以辅助语义的正确性检査和代码生成。

  • 对于声明语句,主要是将所需信息正确地填入合理组织的 **符号表 **中

  • 对于可执行语句,则是翻译成中间代码或目标代码

  • 解释器需要参与运行控制,程序执行的速度慢
  • 编译方式下,在机器上运行的目标程序完全独立于源程序

  • 程序的三种基本控制 结构是: 顺序、 循环、 判断

  • 若一种程序设计语言规定其程序中的数据必须具有类型, 则有利于

    • 在翻译程序的过程中为数据合理的分配存储单元
    • 对参与表达式计算的数据对象进行检查
    • 规定数据对象的取值范围及能够进行的运算
  • 程序语言设计中,基本成分包括 数据、运算、控制、传输等

  • 高级程序设计 语言不依赖于具体机器硬件

    ​ and 优先 或,见程序设计语言P116 https://www.bilibili.com/video/BV1tL411c7gi?p=116&vd_source=d8d2a3ea229a031c11595601aac1a1d9

    image-20240615191024777

  • 逆波兰式(后缀式),可以利用进行求值

  • A程序经编译后得到目标B程序, 对B程序进行反编译,不能还原出源程序A

  • 脚本语言属于动态语言,其程序结构可以在运行中改变

  • 脚本语言一般通过脚本引擎解析执行,不产生独立保存的目标程序

  • C语言属于静态语言,期所有成分可以在编译时确定(PHP js属于动态语言)

  • 若一个程序可以提供链表的定义和运算,则运行时数据空间必须采用堆存储分配策略

  • html wml XML 属于标记语言

  • python是脚本语言,可编写独立程序和快速脚本, 不需要变量、对象类型申明,采用解释方式实现

  • 编译过程中,为变量分配存储单元 的地址是逻辑地址

  • image-20240617220833646

  • 递归下降分析法是自上而下的语法分析

  • 移进一归约分析法是自下而上的语法分析

  • Lisp是一种函数性编程语言

  • 语法指导翻译是一种静态语义分析

image-20240617221510310

image-20240617221538147

image-20240617221616763

image-20240617221647058

image-20240617221832980

image-20240617221851537

知识产权

  • 知识产权也称智慧财产权
    • 著作权是指作者对作品享有人身权财产权
      • 人身权包含发表权/ 署名权/修改权/保护作品完整权等, 发表权保护时间受限制(作者终生及其死后50年), 其它三个不受限制
      • 地域性,只能在其本国领域内受法律保护,其它国家不给予保护。 外国 人在我车领域外使用中国专利授权的发明专利,不侵犯我国专利权
      • 其它国家的专利,在我国销售,由于我国并没有对该项专利保护,因此不需要向其它国家支付专利许可使用费
  • 计算机软件著作权
    • 个体: 是指享有著作权的人,根据《中华人民共和国著作权法》《计算机软件保护条例 国务院颁布 》,自开发完成之日开始起,保护期为50年。保护期满,软件进入公有领域,除开发者身份权以外,其他权利终止。
    • 客体: 是指著作权法保护的计算机软件著作权的范围(受保护的对象)
      • 程序包含 计算机源程序 和**目标程序 **
      • 软件文档 包含 程序设计说明书、 流程图、用户手册
  • 著作人身权享有 发表权 开发者身份权(署名权)
    • 开发者身份权不随开发者的消亡而丧失,且无时间限制
  • 职务开发软件属于单位, 自己只有署名权
  • 如果员工使用单位的设备开发完成 ,则不能属于个人享有
  • 委托开发, A公司的项目外包给B公司, 如合同 无约定, 著作权归B公司(被委托方)
  • X企业未知情况,构成侵仅,但不承担赔偿责任
  • 商业秘密权 可以对软件的技术信息/经营信息提供保护
  • 专利申请谁先申请谁得/或协商获得
  • 商标权自注册之日起10年内有效,但可以根据所有人的需要无限延长权利期限, 在期限届满6个月内申请延续,每次延续10年
  • 商标注册,谁先注册谁得,同时间注册谁先使用谁得 要么协商

网络

  • 物理层的互连设备有中继器 集线器
    • 集线器是一种特殊的多端口(多路)中继器, 可以检查发送冲突
    • 集线器不能起到自动 寻址的作用
  • 数据链路层有网桥 交换机
  • 网络层设备路由器
  • 应用层网关
  • 网络层可以隔离广播域、冲突域, 数据链路层只能隔离冲突层
  • 应表会层协议: FTP Telnet SMTP=>UDP NFS SNMP
  • 传输层 TCP UDP
  • 网络层: IP ICMP=>IP报文 ARP RARP
  • FTP控制端口21, 上传文件端口为20
  • FTP/HTTP/Telnet/SMTP 通过TCP传输
  • DHCP/TFTP/SNMP/DNS 通过UDP传输
  • (HTTP/SNMP/TCP/UDP) -> IP 考最多

image-20240626175908566

image-20240626175743196

image-20240626181021379

  • TCP使用可变大小的滑动窗口协议
  • UDP相比TCP的优势是开销较小
  • TCP UDP均提供了端口寻址功能, TCP提供了连接管理、差错检验、重传、流量控制

image-20240626181624935

  • SMTP 端口号25, 通过ASCII码传输入,如果要选择邮件,则通过MIME, 主要用来发送邮件

  • POP端口号110, 主要用于接收邮件

    • POP协议有两个版本, POP2 POP3, 目前POP3可以和SMTP共同使用,也可以单独使用,以发送和接收邮件
    • POP是一种简单的纯文本协议,每次传输以整个E-mail为单位,不能提供部分传输
  • E-mail系统基于客户端/服务器模式(C/S), 主要采用SMTP(简单邮件传输协议), 缺点是不能传送非ASCII码和非文字性附件

  • PEM 私密邮件保护协议

  • ARP 地址解析协议

    • ARP的作用是将IP地址转换为 物理地址(MAC地址)
    • ARP分为ARP Ruqest ARP Response,其中ARP Ruqeste采用广播进行发送, ARP Response采用单播进行传送
  • RARP 反地址解析协议

    • RARP的作用将物理地址转换为IP地址
  • DHCP 动态主机配置协议:分配 IP地址,使网络环境中的主机动态获取本机IP地址、 DNS服务器地址、 DHCP服务器地址、默认网关

  • DHCP客户端可以从DHCP服务获得 本机IP地址、 DNS服务器地址、 DHCP服务器地址、默认网关

  • windows无效地址: 169.254.x.x (DHCP信息租用失败时自动给客户机分配 的IP地址) Linux无效地址: 0.0.0.0

  • 主域名服务器在接收到域名请求后, 首先查询的是本地缓存, 输入网址时,首先查询的是本地hosts文件

    image-20240628114056942

  • 222.125.80.128/26包含多少个可用主机地址

    32位IP(26位网络地址、 6位主机地址) 2^6 - 2(2个不可用的地址) = 62

  • IPv4 2^32, IPV6 2^128, 相差2^96

  • 蓝牙覆盖范围最小、通信距离最短

    image-20240628115717136

  • ping命令进行网络检测,由近到远原则,首先执行ping 127.0.0.1, 其次是本地IP, 再次ping 默认网关,最后ping远程主机

  • netstart 不能用于诊断DNS故障

  • 当没有其它路由可选时,选择默认默认路由 0.0.0.0

  • 主机路由 255.255.255.255

  • 收到多个路由转发的路由,则比较各个路由的管理距离

  • “三网合一” 指 电信网、广播电视网、 互联网

  • 网络系统设计中,应尽量让优先级较高的目标达到最优

  • 网上银行支付,必须通过支付 网关与Internet与银行专用网之间数据交换

信息安全

  • 防火墙是建立在内外网的过滤封锁机制
  • 包过滤防火墙对网络层的数据 报文进行检查,对数据 包进行源地址、源端口号、目的IP地址作为过滤依据,成本低,安全性低,透明
  • 防火墙通常按高到低的正确排序为: 内网、DMZ、外网
  • 防火墙工作层次越低,工作效率 越高,安全性越低
  • 网络系统中,通常把web服务器置于DMZ区
  • 防火墙具备 记录访问过程、包过滤、代理, 不具备杀毒、漏洞扫描功能
  • 应用级网关防火墙是内部网和外部网的隔离点

1719325661002

  • 计算机感染特洛伊木马典型的现象是有程序建立未知网络连接

  • X卧底病毒通过木马形式感染智能手机

    1719326403248

  • ARP攻击是伪造IP地址MAC地址 、伪造网关ARP报文使得数据包无法发送到网关

  • SYN Flodingn属于dos攻击

  • 端口扫描可以检测远程主机状态

  • 报文中加入时间戳来防止重放攻击

    image-20240626151333259

  • 数据库容灾属于系统安全、网络安全

  • 通常使用IPSec为IP报文数据进行加密

  • MIME服务与电子邮件安全无关

  • 防范网络监听最有效的方法是数据加密

  • 终端设备与远程站点之间建立安全连接的协议是SSH

  • IE浏览器安全级别最高的是受限站点

  • 远程登录: SSH Telnet RFB

    image-20240626152233707

image-20240626175159895

image-20240626175403101

image-20240626175517798

面向对象

image-20240709145204682

image-20240709142845005

image-20240709150407931

image-20240709150722193

image-20240709155029255

image-20240709155049871

image-20240709154302439

image-20240709154518975

image-20240709154714146

image-20240709154915772

  • 一个对象一般由对象名、属性(状态)、方法(行为)组成

  • 一个类是一组对象的抽象的定义

  • 封装是一种信息隐藏技术

  • 别名了解: 父类= 基类= 超类, 子类= 派生类

  • 子类继承多个父类称为多重继承, 使用它可能造成子类中的成员二义性

  • 在面向对象中,继承用于在已存在的的类基础上创建新类

  • 在面向对象技术中,不同的对象在收到同一消息时可以产生完全不同的结果,这一现象称为多态, 它是由继承机制来支持的

  • 编译时绑定称 静态绑定, 运行时的绑定称 动态绑定(支持多态)

  • 依赖倒置原则。抽象不应该依赖于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块二者都应该依赖于抽象。

image-20240709160109851

image-20240709160407803

image-20240709160628300

img

image-20240709161059977

image-20240709161308282

image-20240709161354762

UML

  • 采用设计模式, 以复用成功的设计

  • UML统称不用对对象快照 进行建模

  • UML的构造块: 事物、关系、图

  • UML中的4种事物

    • 结构事物(静态部分)

      包括类、接口、协作、用例、构件….

    • 行为事物(动态部分)

      包括交互、状态机、活动

    • 分组事物(组织部分)

      是由一些模型分解成盒子,主要的分组事物是包,包是把元素组织成组的机制

    • 注释事物(解释部分)

      一个依附一个元素之上的对其进行约束或者解释 的简单符号

  • 类A使用库中提供的功能 — 依赖关系

  • 类A包含了其它实例,类A消失,其包含的类也消失,整体创建、整体销毁 — 组合关系

    整体与其部分之间的一种关系

    image-20240911211615700

    image-20240911214338117

    image-20240911214416929

    image-20240911214500496

1
2
3
4
5
6
7
8
9
10
11
12
13
责任链(Chain of Responsibility)模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 
命令(Command)模式将一个请求封装为一个对象,从而使得使用者可以采用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
抽象工厂 (Abstract Factory)模式提供一个创建一系列相关或相互依赖对象的接口, 而无需指定它们具体的类。
观察者(Observer)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
原型(Prototype)模式用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
工厂方法(Factory Method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使一个类的实例化延迟到其子类。
单例(Singleton)模式是指系统运行过程中,一个类只有一个对象实例。
生成器(Builder)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
桥接(Bridge)模式将抽象部分与其实现部分分离,使它们都可以独立地变化。
组合(Composite)模式将对象组合成树形结构以表示“部分一整体”的层次结构, 使得用户对单个对象和组合对象的使用具有一致性。
装饰器(Decorator)模式描述了以透明围栏来支持修饰的类和对象的关系,动态地给一个对象添加一些额外的职责,从增加功能的角度来看,装饰器模式相比生成子类更加灵活。 策略(Strategy)设计模式定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。这一模式使得算法可独立于它的客户而变化。抽象工厂(Abstract Factory)模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
状态(State)模式是使得一个对象在其内部状态改变时通过调用另一个类中的方法改变其行为,使这个对象看起来如同修改了它的类。

image-20240913215917714

image-20240913215932798

  • 类A包含了其它类,类A消失时,其他类仍然正常工作 — 聚合关系

  • 聚合、组合关系都是特殊的关联关系,是一种结构关系, 描述了一组链, 两个类之间可以有多个的不同角色标识

  • 泛化关系一个类与它的一个或者多个细化类之间的关系,即一般与特殊的关系

  • 聚合对象是指一个对象包含其它对象

  • UML中的关联多重度是指一个类的实例能够与另外一个类的多少个实例相关联

  • 多对多时,需要对两者之间的关系创建一个新类

  • uml中接口可用于**声明对象类所需要的服务 **

  • image-20240729164428749

  • UML类图对系统的词汇、简单的协作、逻辑数据库模式建模

  • 类图展现了一组对象、接口、协作和它们之间的关系, 设置视图是由类图和对象图表现, 动态方面是由交互图、状态 图、活动图

  • image-20240729165726245

  • 对象图展现了某一时刻一组对象以及它们之间的关系

  • 用例图(一组用例、参与者以及它们之间的关系)

    image-20240729173151797

  • 序列图(一个用例和多个对象的行为)

    image-20240729173614694

image-20240729174335257

  • 通信图(对象之间的消息流及其顺序)

    image-20240729174825611

image-20240729174947263

  • 状态图(任何一种对象的事件排序行为)

    当对系统、类或者用的动态方面建模时,通常是对反应型对象建模

    动作可以在状态内执行,也可以在状态转换时执行

    image-20240729175715624

  • 状态图用于描述一个对象之间的交互 , 可以用于用户界面或控制对象

  • image-20240820221417604

    上图是一个超状态

    image-20240820222052676

image-20240820222214953

image-20240820223617548

image-20240818215437222

  • UML接口用于**声明对象类所需服务 **
  • UML部署图,部署组件之间的依赖关系 类似于包依赖

image-20240818215720006

  • 对新开发的需求 建模使用用例图, 展现交互 系统 软件和硬件关系 的图部署图

  • 部署图通常在实施阶段使用

    image-20240818220523425

image-20240818220600666

image-20240818220831381

image-20240818221243398

image-20240818221416499

  • 对业务处理流程建模的最佳UML是活动图

image-20240818221743452

image-20240818221825578

数据库

  • 关系模型采用二维表格结构表达 实体类型

  • 确定系统边界是在需求分析阶段, 形成的需求说明文档、数据字典、数据流图作为设计依据

  • 确定关系规范化在逻辑设计

  • 结束集是N元关系 -》连接后有多个列, 元组-》连接后有多少条数据

  • 为保证数据安全, 修改数据 库前先将内容写到**日志文件 **

  • 当系统正常运行时,按一定的时间间隔,把缓冲区数据内容写入**数据文件 **

  • 由DBA使用DBMS提供授权,目的是为了安全性

  • 分布式数据库中, 分片透明指不需要知道逻辑上访问的表具体如何分块存储

  • 建立视图语句: view 视图名称 with check option

  • 视图是一个虚拟表, 查询 时可以从一个或者 多个基本表或视图中导出

  • 采用三级结构/两级映象的数据 结构,如果创建聚簇索引,改变的是数据库的**内模式 **

  • 隔离性 当多个事务并行执行时,任一事务的更新操作直到成功提交的整体过程对其它事务是不可见的

  • 持久性 更新操作停留在磁盘缓冲区而未写入到磁盘,发生 系统故障,事务的执行结果仍不会丢失

  • 数据库恢复 是指在**尽短的时间内,把数据库恢复到故障发生 前的状态 **

image-20240904212101342

image-20240904211939755

  • 排它锁: 事务T对数据A加了排它锁, 则只允许 T读取更新A, 其它不能再加排它锁

  • 共享锁: 事务T对数据A加了共享锁,则只允许 T读取A,不能修改A。 其它事务只能再对A加共享锁

    image-20240904204526817

    image-20240709170844079

  • 数据独立性

    • 数据的物理独立性

      需要修改概念模式和内模式之间的映像(物内)

    • 数据的逻辑独立性

      需要修改外模式和概念模式之间的映像(逻外)

  • image-20240709173347529

image-20240822214145109

image-20240822214758223

自然连接关系 代数,要先去掉重复列

image-20240822214231101

image-20240822221010298

image-20240822221627221

image-20240822221959977

image-20240904205633741

  • 插入权限 insert on with grand option

image-20240904212352048

1721532959991

image-20240904212417794

image-20240904212514771

image-20240904212559682

image-20240904212630204

image-20240904212647763

软件工程

  • 能力成熟度模型CMM

image-20240715174754698

  • 能力成熟度模型集成CMMI

    image-20240715175839650

image-20240715180045336

  • 瀑布模型: 需求明确、变更少、替换老系统 缺点: 不能适应快速变化的需求

  • V模型: 瀑布模型的变体,质量保证活动、基本问题需求逐步细化 考的少

  • 增量模型:适用于快速构建可运行产品的模型。 所需成本、时间很少, 风险不大,发布快,可以减少用户需求变更, 先开发核心,每次增量都会测试

    很容易划分增量模型?说法是错误的

    发生的成本、进度、配置可能会超出预期

  • 为了有效地捕获系统需求,应采用原型模型(适合用户需求不清,经常变化的情况, 希望快速投入使用)不适合大规模软件

  • 演化模型 是迭代的过程模型, 使用开发人员逐步开发出更完整的软件版本

  • 螺旋模型 适合大型软件, 结合瀑布模型、演化模型,加入了风险分析, 支持用户需求动态变化,要求开发人员具有丰富的风险评估经验, 增加成本、延长交付时间

  • 喷泉模型具有迭代性和无间隙性, 以对象作为驱动,适合于面向对象的开发

    克服了瀑布醋不支持软件重用和多项开发活动集成 的局限性,在迭代中不断完善软件系统

  • RUP用角色来表达 “谁做 ”

  • 极限编程: 沟通、简单性、反馈和勇气, 系统设计应最早发布,属于小型发布最佳实践

    image-20240718175340711

  • 水晶法: 每一个项目都需要一套不同的策略、约定 和方法论

  • 并列争求法: 每30天一次的迭代称为一个“冲刺”

    image-20240718175433204

image-20240718175534407

image-20240718175852882

image-20240718180933902

  • 概要设计: 设计软件系统总体结构, 确定软件 的模块 划分及模块之间的调用关系

    • 数据库设计
    • 概念设计
    • 逻辑设计
    • 物理设计
    • 数据结构设计
    • 设计文档
    • 算法设计
  • 系统测试就尽早并不断的进行测试, 贯穿开发的各个阶段

  • 成功的测试是发现了至今未发现的错误

  • 系统测试阶段的测试目标来自于需求分析

  • 路径覆盖法比语句覆盖法发现更多的错误

  • 有效的软件测试分为4步: 单元测试、 集成 测试、 确认测试、 系统测试

    image-20240719162026804

  • 单元(开发中)测试主要检查模块的以下5个特征

    • 模块接口
    • 局部数据结构
    • 重要的执行路径
    • 出错处理
    • 边界条件
  • 修改代码造成其它问题出现,属于回归测试

  • 自底向上,需要驱动程序。 自顶向下,需要桩刹车

  • 黑盒测试不关心内部代码, 只关心输入与输出数据, 白盒测试需要根据内部逻辑进行测试

  • 黑盒测试技术: 等价类划分、边界值 分析、错误推测、 因果图

  • McCabe度量法

    V(G) = m-n +2 (m:箭头数 n :节点数 )

    或者 闭合区+ 1 = 2+1 = 3

    image-20240719164058421

  • 语句覆盖,只要保证每条语句至少执行一次
  • 判定覆盖,要保证真假情况都执行一次
  • 条件覆盖, 每个逻辑条件各种情况都要执行一次
  • 软件系统的可维护性评价指标: 可理解性、可测试性、可修改性(修理测)

  • 软件维护和可维护性

    • 软件维护要解决软件产品交付用户之后运行中的各种问题
    • 软件的维护期通常比开发期长得多,其投入也大得多
    • 进行质量保证审查可以提高软件产品的可维护性
    • 每一个阶段都应考虑并提高软件的可维护性
  • 文档是软件可维护性的决定因素

  • 编写高质量文档可以提高软件开发的质量

  • 文档是软件产品的一部分,没有文档 的软件不能叫软件

  • 软件文档的编写在开发工作中占有突出的地位和相当大的工作量,高质量文档 对于软件产品的效益有着重要意义

  • 系统维护包括硬件维护、软件维护、数据维护

  • 软件维护

    • 正确性维护

      改正系统开发阶段已发生而系统测试阶段尚未发现的错误

    • 适应性维护

      应用软件适应变化和需求变化而进行的修改

    • 完善性维护

      为扩充功能和改善性能而进行的修改

    • 预防性维护

      改进应用软件的可靠性和可维护性,为了适应公孙恭的环境变化,主动增加预防性的新功能,以使软件适应各类变化而不被淘汰

    image-20240724112500127

  • 沟通最多路径公式: (n-1)* 8 / 2, 见下: (8-1)*8 / 2 = 28

    有主程序员沟通时, 沟通路径 = n-1 = 7

    image-20240724112851906

  • 基本COCOMO模型是一个静态单变量模型

  • 中级COCOMO模型是一个静态多变量模型

  • COCOMO II模型有3个阶段性模型, 应用组装模型、早期设计阶段模型、体系结构阶段模型

    有3种不同的规模估算选择: 对象点、功能点、代码行

    体系结构阶段模型基于代码行进行估算

  • Gantt甘特图

    • 可以作为项目进度管理的工具
    • 清晰描述每个任务的开始、截止时间
    • 清晰获得任务并行进行的信息
    • 不能清晰得获得各任务之间的依赖关系
  • 软件项目活动图,算最长用的时间,https://www.bilibili.com/video/BV1j94y1Z7xX?p=197&vd_source=e2fcc9b11e669b774850c847deddbae2

算法

image-20240911211140143

image-20240911211315097

image-20240722112301594

image-20240722112329062

image-20240722112400358

image-20240722112422100

image-20240722112442837

数据结构

  • 哈希表可以动态创建

  • 二叉排序树属于动态查找表

  • 二分查找要求表采用顺序存储结构

  • 顺序查找方法既适用于顺序存储结构、也适用于链表结构

  • 二分查找法,最坏的情况需要**|log2n|+1**, 最佳情况**(n+1)/2**, 只适合顺序存储,有序排列

    image-20240724120828661

  • 对于哈希表,**@越大,发生的冲突可能性就越大**

    image-20240724145619201

  • 哈希散列查找,尽可能使关键字的所有组成部分都能起到作用
  • 散列函数为H(Key) = Key mod p, P的值一般不大于N且最接近N的质数
  • 哈希存储元素时,需要进去冲突处理,冲突是指关键字不同的元素被映射到相同的存储位置
  • 哈希表中查找某个关键字e是成功的且与多个关键字进行了比较,则关键字的第一个可以不是e的同义词

image-20240724152456299

  • 小顶堆: ki<= k2i & ki<=k2i+1 ; 大顶堆: ki>=k2i & ki>=k2i+1

    image-20240724153744273

  • 快速排序算法是不稳定的排序算法, 最好情况: O(nlgn),最坏情况o(n^2), 对比一次的O(n) 快速排序是一种分治算法

  • 当输入数据基本有序时,快速排序算法具有 最坏情况的时间复杂度

    image-20240724155435196

  • 冒泡排序、简单选择排序、堆排序、快速排序能在第一趟排序结束后,一定能将某个元素的位置确定下来

  • 连通无向网的最小生成树中,顶点数恰好比边数多1

  • 优先队列通常采用数据结构实现, O(lgn)

  • 栈的特点是先进先出,若用单链表作为栈的存储结构,入栈和出栈操作都不需要遍历链表

  • S是一个长度为N的非空字符串,个数为*(n-2) * (n-1) /2 *

  • 入队序列与出队序列一定相同。入栈序列与出栈序列不一定相同。

  • 出队与出栈序列一定相同

  • 线性表采用顺序储存时,访问表中任一指定序号元素的复杂度为常量级

操作系统

image-20240721120454329

s1,s2,s3需要根据p1->pN从小到大的顺序排

image-20240721120612439

image-20240721122423866

image-20240721123528057

信号量S的当前值为-2,代表等待的进程数为|-2| = 2, 可用数为0

image-20240721123847849

-(n- 资源数2) ~ 资源数2 答案 D

image-20240721124039125

  • PV操作实现资源的同步和互斥, 互斥初始为1,同步初始为N, V后为0
  • 同类资源分配不当发生 死锁, m资源 , n进程, k每个资源 最大的需求数, *满足m>= n(k-1)+1不会发生死锁**

    image-20240721163559601

  • image-20240721170054980

首个非阻塞节点才会还原释放数据

image-20240722112727907

image-20240722113033709

image-20240722115024356

淘汰优化级: 状态位为1 > 访问位为0 > 修改位为0 110/100

image-20240722160731429

https://www.bilibili.com/video/BV1AY411E7GC?p=63&vd_source=e2fcc9b11e669b774850c847deddbae2

image-20240722161524550

答案, B A

image-20240722161932939

  • 单缓冲区公式: ( T + M )* N + C (读入缓冲区时间 + 缓冲区送到用户区时间) * 数量 磁盘 + 每个磁盘的处理时间
  • 双缓冲区公式: T * N + M + C

image-20240722162725357

  • 移臂/磁盘调度算法中, 先来先服务和最短寻找时间优先可能会随时改变移动臂的运动方向

    image-20240722164950889

  • 磁盘最少时间 = (单个旋转时间 + 处理时间) * 总处理记录数
  • 磁盘最长时间 =(单个旋转时间+处理时间)+(总处理记录数-1)* (旋转时间 +处理时间+(旋转时间 * (总记录数-2) )

image-20240722171137295

答案: 102 30

image-20240722171507699

  • 目录文件修改的结果写回磁盘时发生崩溃,则对系统的影响相对较大

    image-20240722172227241

  • 如果系统采用信箱通信方式,当进程 调用Send原语 被设置成“等信箱”状态时, 其原因是指定的信箱存满了信件

    image-20240722173300886

image-20240722173445115

image-20240722173940782

  • 当用户通过键盘或鼠标 进入某应用系统时, 通常最先获得鼠标和键盘的信息是中断处理

  • 当用户点击文件时, 通过文件关联来决定使用什么程序来打开

image-20240722174257363

image-20240722174427228

  • I/O软件隐藏了I/O操作实现的细节, 方便用户使用I/O设备

  • 在磁盘调度管理中通常先进行移臂、再进行旋转, 在访问同一磁道信息时, 只需要进行旋转调度

  • 若磁盘的转速提高一倍、则旋转等待时间减半

    image-20240723105113886

某些题会除不尽,此时, 向下取整

image-20240723110347474

image-20240723155515036

image-20240723161026530

image-20240723163938563

结构化开发

  • 标记、数据、公共、内容 考得多

image-20240721210706187

image-20240721211130277

image-20240721212841942

image-20240721212920415

  • 偶然内聚

    • 具有最低的内聚性
    • 不易修改和维护
    • 不易理解
    • 影响模块间的耦合关系

    image-20240721213653334

image-20240721213730819

image-20240721213927490

image-20240721214151870

image-20240721214227004

image-20240721214522689

  • 每条数据流的起点或终点必须是加工
  • 必须保持父图与子图平衡
  • 应保持数据 守恒

image-20240721215040640

image-20240721215151237

image-20240721215537040

  • 数据字典: 数据流、数据项、数据储存、基本加工

  • 数据流图DFD元素在数据字典中定义

image-20240721215817460

  • 采用结构 化方法进行系统 分析时,根据分解与抽象的原则,用数据流图来建立系统逻辑模型

  • 利用结构化分析模型进行接口设计时,应以数据流图为依据

    image-20240721220114289

image-20240721220243889

image-20240721220321914

image-20240721220356738

image-20240721220436793

image-20240721220547601

image-20240721220641452

image-20240721220722129

  • 数据流图建模应遵循自顶向下,从抽象到具体

  • 结构图的基本成分: 模块、调用、数据

  • “黄金准则”: 用户操纵控制、减轻用户的记忆负担、保持界面 一致

  • 绘制分层数据流图需要注意的问题

    • 适当命名
    • 画出数据流而不是控制流
    • 分解尽可能均匀
    • 避免一个加工有多个数据流补充

补充

  • 配置数据库: 产品库, 受控库,开发库

  • 结构化分析输出: 结构图,数据字典,数据流图

  • 加法器 属于算术逻辑单元部件

  • 产品质量特性: 可靠性、正确性、效率。 无灵活性

  • 主机 路由的子网掩码是255.255.255.255

  • 面向对象分析 不需要考虑系统测试问题

  • 对于无向图中的两个顶点u和v,所有顶点的度数之和为 2e

  • 邻接矩阵中的每个非零元素都表示一条弧,所以非零元素数目为弧的个数 e。 矩阵大小为n^2

  • 风险评估 是定义风险水准常用 技术

  • image-20241009220748400

  • 常见命名对象有: 变量、函数、数据类型

  • 2i+j-2

  • 2i+j+1

  • base+ ((j-1)*m+i-1)*k

  • 在i=j时,与按行、按列存储无关

  • head(tail(head(L)))

  • k=j*(j+1) / 2+i+1

  • (n(k-1)+1)/k

  • 二叉树从左到右同层次的结点,其关键字呈现有序排列的特点

  • 若一个二叉树高度为h,则该二叉树最多有2^h -1 个结点

  • 单枝树效率最差

  • 哈夫曼树中叶子结点的权值越小距树根越远,叶子结点权值越大,距离树根越近

  • 哈夫曼树属于熵编码

  • n是m的右孩子

  • 完全二叉树任意一个节点左右树高度差绝对值 不超过1

  • 哈夫曼树中权值最小的两个节点互为兄弟节点

  • 最优二叉树结点总数为2n-1

  • 对基本有序的数组进行排序,最适宜采用的算法是 插入排序 o(n),空间复杂度o(1), 共需要6次比较

  • 若取值在0-9,适合采用 计数排序

  • 归并排序采用的算法属于 分冶法

  • 最坏情况下时间复杂度最低的算法是 归并

  • 冲突是指 关键字不同的元素被 映射到相同的存储位置
  • 二分查找要求 顺序储存,关键码有序排列
  • 哈希表P值一般为不大于N,且 最接近N的质数
  • 构造HASH函数时应尽量使用关键字的所有组成部分都能起到作用
  • 人耳能听到 的音频范围 20hz - 20Khz
  • image-20241010205111203
  • image-20241010205126771
  • image-20241010205153720
  • 实体类 主要负责数据和业务逻辑;边界类 负责和用户进行交互,即用户界面;控制类 则负责实体类和界面类的交互。

  • 数据流图 建立逻辑模型

  • 软件能力成熟度模型4级为 理解和控制

  • 极限编程(XP)它由价值观、原则、实践和行为4个部分组成。其中4大价值观为沟通、简单性、反馈和勇气。

  • 面向对象分析不需要考虑系统 测试问题

  • 软件配置管理主要包括变更标识、变更控制和版本控制。

  • 釆用8位补码表示整型数据时,可表示的数据范围为-128〜127,因此进行127+1运算会产生溢出。

  • 风险控制 活动目的是辅助项目组建立处理风险的策略

  • 软件产品的可靠性不取决于 软件产品的开发方式

  • 软件可靠性指的是一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。

  • 若计算机系统 的I/O接口与主存采用统一的编址,则输入输出操作通过 访存完成

  • 数据流图描述了系统的 输入和输出

  • 风险避免 是最好的风险控制策略

  • 网络的可用性是指 用户可利用网络时间的百分比

  • 定义风险参照水准是 风险评估 的一类技术

  • image-20241010213014475

  • response可以修改cookie的值
  • 报文摘要是用来防止发送的数据被篡改
  • image-20241010213454538
  • 矢量图的基本单位: 图元
  • image-20241010213602225
  • 有限自动机是词法分析的适当工具
  • 如果要使得两个IPv6结点可以通过现有的IPv4网络进行通信,则应该使用隧道技术,如果要使得纯IPv6结点可以与纯IPv4结点进行通信,则需要使用翻译技术。
  • image-20241010213749034
  • image-20241010213816032
  • 分级存储是为了解决存储容量、成本 、速度之间的矛盾
  • MISD无实例
  • 分配寄存器是在 目标代码 生成阶段
  • 通用寄存器 访问 速度 最快
  • 风险的优先级是通过 风险暴露设定的
  • 系统级初始化的主要任务: 以软件为主,主要进行操作系统初始化
  • 递归下降分析方法是一种 自上而下的语法分析
  • VLIW:(Very Long Instruction Word,超长指令字)一种非常长的指令组合
  • 关系规范化设计是在数据库 逻辑设计阶段进行的、
  • image-20241010214929398

image-20241010214950330

image-20241010215241497

image-20241010215305883

  • COCOMOII模型也需要使用规模估算信息,在模型层次结构中有3种不同规模估算选择,即:对象点、功能点和代码行。
  • ADSL接入internet,用户需要安装PPPoE
  • TCP和UDP均提供了端口寻址功能。

计算题

image-20241010212925061

image-20241010214626586

image-20241010215753017

image-20241010215834114

  • IPv4用32位二进制表示,能够表示的地址空间是232,IPv6用128位二进制表示,能够表示的地址空间是2128,本题选择2^128 /2^32=2^96 。
  • 系统总线用于 主存和外设 连接
  • DMA和中断CPU发出的数据地址是 主存物理地址
  • 消息压缩、加密的是 表示层
  • 署名权、修改权、保护作品完整权时间不受限制
  • 测试类定义的方法 属于 算法层
  • UML包图一个元素不能被多个包拥有
  • image-20241010220732157
  • python中没有switch case
  • image-20241010220843308
  • image-20241010221054561
  • apach的默认目录 /home/httpd

image-20241010221500209

  • DRAM使用电容存储信息且需要周期性刷新
  • 使用补码的目的: 可以将减法运算转为加法运算,从而简化运算器设计
  • 口令认证安全性较低
  • x509数字证书推荐密码算法 RSA , SM2数据证书采用ECC
  • 栈帧不包括 全局变量
  • 白盒测试,语句覆盖最弱
  • python3中try catch不是合法的异常处理
  • 本文标题:软考-软件设计师题库
  • 本文作者:邵预鸿
  • 创建时间:2024-05-27 15:14:07
  • 本文链接:/images/logo.jpg2024/05/27/软考-软件设计师题库/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!