历年软件设计师考试范围梳理
2024-02-20 14:11:37 0 举报
软考考试是一种职业资格认证考试,涵盖计算机科学与技术、软件工程、信息系统、信息服务等多个领域。以下是核心内容、文件类型及修饰语的梳理: 核心内容: - 计算机基础知识,包括计算机系统结构、操作系统、数据库系统等。 - 软件开发,包括软件设计、开发、测试、维护等生命周期管理。 - 项目管理,包括项目管理方法、工具、团队协作等。 - 计算机网络与安全,包括网络协议、网络安全、加密技术等。 - 法律法规,包括知识产权法、合同法、数据保护法等。 文件类型: - 考试大纲,详细列出了各个科目的考试知识点。 - 真题,往年考试的题目和答案,用于了解考试题型和难度。 - 教材,官方指定的教材或参考书,涵盖了考试涉及的全部知识点。 - 模拟题,用于考生自我测试,检验学习效果。 修饰语: - 系统性的职业资格考试 - 多领域的计算机与软件技术 - 实践性强的知识体系 - 专业水平的评价标准
作者其他创作
大纲/内容
计算机组成与体系结构
CPU的组成(运算器与控制器)
(2021年上、2018年下)CPU执行指令的过程:
程序计数器PC:是用于存放下一条指令所在单元的地址的地方。存储下一条要执行指令的地址。
指令寄存器IR:是临时放置从内存里取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。存储即将执行的指令。
地址寄存器(主存地址寄存器MAR):用来保存当前CPU所访问的内存单元的地址。
指令译码器:从内存中取出一条指令经数据总线送往指令寄存器中。
状态条件寄存器(PSW):存状态标志与控制标志。
(2021年上)RISC和CISC计算机的叙述
RISC适合流水线,CISC不适合。
RISC是精简指令集系统计算机简称,使用简单的指令。CISC是复杂指令集系统计算简称,使用复杂的指令。
RISC多寄存器寻址,所以会在实现过程中增加通用寄存器,CISC不需要采用很多通用寄存器。
RISC采用硬布线逻辑(即组合逻辑控制器)实现,CISC采用微码(即微程序)实现。
输入/输出技术
(2021年上)DMA是直接内存存取,传送数据的时间只与内存相关,与CPU的时间无关。
存储周期:是指主存储器两次启动操作之间需要的最小时间间隔,也称之为主存储器周期时间。
指令周期:取出一条指令并执行这条指令的时间。一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。
机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。
总线周期:CPU对存储器和I/O接口的访问,是通过总线来实现的。通常把CPU通过总线对微处理器外部(存储器或I/O接口)进行一次访问所需时间称为一个总线周期。程序查询需要占用1个总线周期。
中断和异常:
(2021年上)
DMA处理过程由DMAC负责,传送后会给CPU发送通知,此时属于处理器外部事件,因此属于中断。
异常指当前运行指令引起的中断事件。包括错误情况引起的故障,如除零算数错误,缺页异常,也包括不可以恢复的致命错误导致的终止,通常是一些硬件错误。
(2020年下)
中断概念:在CPU执行程序的过程中,由于某一个外部的或者CPU内部事件的发生,使CPU暂时中止正在执行的程序,转去处理这一事件(即执行中断服务程序),当事件处理完毕后又回到原先被中止的程序,接着中止前的状态继续向下执行。
中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址,也称为中断向量。
(2019年下)
层次化存储体系
(2021年上)闪存(Flash Memory)
闪存是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB)
闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。由于其断点时仍能保存数据,闪存通常被用来保存设置信息。
闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM,也不能替换主存。但在嵌入式中,可以用闪存代替ROM存储器。
CPU组成
(2020年下)
存储器和I/O设备是计算机中的其他组成部分,与程序计数器PC无关。
CPU可以分为运算器和控制器两个部分。
运算器包括:算术逻辑单元ALU、累加寄存器AC、数据缓寄存器DR。状态条件寄存器PSW归属有争议,既可以属于运算器,也可以属于控制器。
控制器包括:程序计数器PC、指令寄存器IR、指令译码器ID、时许部件。PC是控制器中的子部件。
Cache
(2020年下)
概念:Cache与主存地址映射由硬件完成,与操作系统、存储管理软件、程序员无关。
(2019年下)cache工作于CPU和内存之间
在CPU内外的高速缓存是用来解决CPU与内存之间速度、容量不匹配的问题,与外存无关,可以提高CPU访问主存数据或指令的效率。
Cache不属于主存,与主存容量无关。
Cache容量相对于其他存储层次,量级较小,不能扩大存储系统的存量。
浮点数的表示
(2020年下)
浮点数运算的过程如下表示:对阶->尾数运算->规格化。
对阶的过程如下:小数向大数看齐,阶码小的较小数的尾数右移。
计算机指标
(2020年下)
平均CPI=CPI*比例
运算速度:MIPS,即每秒执行的百万条指令数。
每个时钟周期为主频的倒数
吞吐量:在给定的时间内,系统所能处理的任务数量。
响应时间:指系统对请求作出响应的时间。
容量:存储器所能存储的全部信息量称之为该存储器的容量。
负载:负载能力一般指的是系统能够承受的最大任务数。(超出极限值)
可靠性
(2019年下)
串并联结合的情况
主存编址计算
(2019年下)
地址和存储容量,16进制转十进制,总容量=单位芯片容量*片数 即片数=总容量/单位芯片容量
总容量=存储单元个数*
系统性能评测和可靠性基础:
系统构成方式的可靠度
部件串联的可靠度为R*R
部件并联的可靠度为1-(1-R)^2
前两个部件并联后与第三个部件串联的可靠度为(1-(1-R)^2)*R
第一个部件与后两个部件并联构成的子系统串联的可靠度为R*(1-(1-R)^2)
计算机基本工作原理
(2019年上)采用模二除法运算的只有循环冗余校验CRC
(2019年下)保存现场的目的是为了能正确返回到被中断的程序继续执行
(2018年下)在计算机中,n位补码(表示数据位),表示范围是-2^n-1~2^n-1-1
奇偶校验:是由若干位有效信息,再加上一个二进制位(校验位)组成校验码,其中奇校验“1”的个数为奇数,而偶校验“1”的个数据为偶数,以此完整校验,如果其中传输过程中有偶数个数发生错误(即1变成0或者0变成1),则“1”的个数,其奇偶就不会发生变化,也就无法发现错误了,只有奇数个数位发生错误,才能发现错误。同时,奇偶校验只能查错不能纠错。
指令系统和计算机体系结构
(2019年上)CPU的控制器负责依次访问程序指令,进行指令译码,并协调其他设备,通常由程序计数器、指令寄存器、指令译码器、状态/条件寄存器、时序发生器、微操作信号发生器组成
(2019年上)程序的局限性表现在时间局部性和空间局部性:
1、时间局部性是指如果程序中的某条指令一旦被执行,则不久的将来该指令可能再次被执行;
2、空间局部性是指一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问。
(2019年上)RISC(精简指令系统计算机)
指令长度固定、指令种类尽量少
寻址方式比较单一、多寄存器寻址
增加寄存器数目以减少访存次数
用硬布线电路实现志玲姐吗,快速完成指令译码
流水线
流水线执行时间=流水线建立时间+(n-1)*流水线周期 流水线周期=指令执行阶段中执行时间最长的一段
流水线的原理:是在某一时刻可以让多个部件同时处理多条指令,避免各部件等待空闲,由此提高了各部件的利用率,也提高了系统的吞吐率。
(2020年下)PC是控制器中的子部件
信息安全和病毒防护
(2019年上)应用级网关可以工作在OSI七层模型的任一层上,能够检查进出的数据包,通过网关复制传递数据,防止在受信任服务器和客户机与不受信任的主机间直接建立联系。应用级网关能够理解应用层上的协议,能够做复杂一些的访问控制,起到防火墙的作用,成为应用级网关。
(2019年上、下)邮件安全、安全电子邮箱服务无关的是(MIME)
计算机病毒
(2019年上、下)kerberos系统采用的是时间戳方案来防止重放攻击,震网是一种蠕虫病毒;引导区病毒破坏的是引导盘、文件目录等;宏病毒破坏的是OFFICE文件相关;木马的作用一般强调控制操作。
特征:具有隐蔽性、传染性、潜伏性、触发性和破坏性等特点。
(2019年上、下)数字证书能包含发送方公钥 通过CA的公钥验证CA的签名
网络安全协议
(2021年上)
TLS安全传输层协议用于两个通信应用程序之间提供保密性和数据完整性。
TCP是可靠的传输层协议,与安全无关。
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
IPSec工作于网络层,为IP数据报文进行加密。
PP2P工作于数据链路层,用于链路加密。
HTTPS是HTTP和SSL的结合体,为传输层以上层次数据加密。
网络攻击
(2021年上)
跨站脚本(cross-site scripting,XSS),一种安全攻击,其中,攻击者在看上去来源可靠的链接中恶意嵌入译码。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。不影响服务的提供。
拒绝服务,对信息或其它资源的合法访问被无条件地阻止,会让服务器拒绝提供服务。
信息篡改,指主动攻击者将窃听到的信息进行修改(如删除和/或替代部分或者全部信息)之后再将信息传送给原本的接受者。与提供服务无关。
口令猜测,攻击者攻击目标时常常把破译用户的口令作为攻击的开始。只要攻击者能猜测或者确定用户的口令,他就能获得机器或者网络的访问权,并能访问到用户能访问到的任何资源。与提供服务无关。
SQL注入攻击,就是通过把SQL命令插入到 Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。其首要目的是获取数据库访问权限。
对称加密与非对称加密
(2021年上)
公开密钥加密(非对称加密):RSA、ECC等
共享秘钥加密(对称加密)DES、三重DES、RC-5、IDEA、AES
摘要算法 SHA、MD5
MD5是一种摘要算法,经过一系列处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
信息摘要与数字签名
(2020年下)
认证一般有账户名/口令认证、使用摘要算法认证和给予PKI的认证。认证只能阻止主动攻击,不能阻止被动攻击。
其他网络安全控制技术
(2020年下)
安全审计对主体访问和适用客体的情况进行记录和审查,以保证安全规则被正确执行,并帮助分析安全事故产生的原因。与访问控制无关。授权、确定存取权限、实施存取权限都是安全访问控制的任务。
其他
(2020年下)
数据的机密性(保密性)是指数据在传输过程中不能被非授权者偷看;
数据的完整性是指数据在传输过程中不能被非法篡改;
数据的真实性(不可抵赖性)是指信息的发送者身份的确认或系统中有关主体的身份确认,这样可以保证信息的可信度;
可用性指的是发送者和接受者双方的通信方式正常。
知识产权
(2019年上)
一般情况下属于职务作品,按国家著作权法规定,应属于单位所有。但如果与单位事先有特别约定,应遵从约定。
向客户提供工具软件的复制品,这里侵犯了工具软件的软件著作权。
(2019年下)注意审题,例如非等字样,重点看题干描述
商标权:可以通过续注延长拥有期限,而著作权、专利权和设计权的保护期限都是有限制的。
我国保护计算机软件著作权的两个基本法律文件是《中华人民共和国著作权法》和《计算机软件保护条例》。
法律法规与标准化
保护范围与对象
(2021年上)
《计算机软件保护条例》保护的是软件程序以及文档,其中软件程序包括源程序和目标程序。开发软件所用的思想、处理过程、操作方法或者数学概念不受软件著作权保护。
知识产权人确定
(2021年上)
首先,谁先申请谁获得,其次,同时申请时,谁先使用谁获得,如果无法区分谁先使用,则协商归属,协商不成可以抽签决定。
(2020年下)
对于专利而言,谁先申请则属于谁。
典型的职务作品,软件著作权属于公司所有。
侵权判断
(2021年上)
根据《计算机软件保护条例》第三十条 软件的复制品持有人不知道也没有合理理由应当知道该软件是侵权复制品的,不承担赔偿责任;但是,应当停止使用、销毁该侵权复制品。如果停止使用并销毁该侵权复制品将给复制品使用人造成重大损失的,复制品使用人可以在向软件著作权人支付合理费用后继续使用。
保护期限
(2020年下)
著作权中修改权、署名权、保护作品完整权都是永久保护的。
发表权和发行期都是50年期限的
结构化分析和设计
(2019年上)数据流图是结构化分析的工具,结构化方法就是采用自顶向下逐层分解的思想进行分析建模的。随着分解层次的增加,抽象的级别也越来越低,即越来越接近问题的解。数据流图建模应遵循:自顶向下、从抽象到具体的原则。
(2019年上)系统结构图(SC)又称为模块结构图,它是软件概要设计阶段的工具,反应系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。SC包括模块、模块之间的调用关系、模块之间的通信和辅助控制符号等四个部分。
(2019年下)外部实体一般为组织机构、人员、第三方系统
(2019年下)MVC是分层架构风格的一种,采用关注点分离的方针,有利于代码重用,提高系统的可维护性,提高系统开发效率,由于分层调用,不能提高系统的运行效率。
结构化方法的分析结果:由以下几个部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
模块设计要求高内聚、低耦合,保持模块的相对独立性
模块的大小要适中
模块的扇入和扇出要合理
深度和宽度适当
软件工程
数据流图与数据字典
(2021年上)
数据字典包含4类条目:数据流、数据项、数据存储和基本加工。
其中基本加工条目是用来说明DFD中基本加工的处理逻辑的,由于下层的基本加工是由上层加工分解而来,只要有了基本加工的说明就可理解其他加工。对每一个基本加工,都应该有一个加工逻辑来说明。
加工描述了输入数据流到输出数据流之间的编号,也就是输入数据流经过什么处理后变成了输出数据流。加工逻辑对其进行说明,也就是描述了改过程的加工规则。
加工逻辑是位于需求分析阶段,此时具体的数据结构和算法并没有进行设计。
常用的加工逻辑描述方法有结构化语言、判定表和判定树三种。
(2020年下)
数据字典会对数据流图中元素进行定义说明。用数据字典来对数据流图的元素进行解释说明。
模块设计原则
(2021年上)
模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。
模块作用域:指受该模块内一个判定所影响的所有模块的集合。
模块的作用域应该在控制域范围之内。
(2020年下)
模块化设计要求高内聚、低耦合,模块独立体现的就是高内聚低耦合。
在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:
模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。不是越小越好。
模块的扇入和扇出要合理。模块的扇入指模块直接上级模块的个数。模块的直属下级模块个数即为模块的扇出。
深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。需要控制模块接口的复杂性。
尽力使模块的作用域在其控制域之内。模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。模块作用域:指受该模块内一个判定所影响的所有模块的集合。
开发模型
(2021年上)
螺旋模型
将风险分析加入到瀑布模型中
将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符
适合用于大规模、复杂且具有高风险的项目
支持用户需求的动态变化
要求开发人员具有风险分析能力
过多的迭代次数可能会增加开发成本,进而延迟提交时间
增量模型
可以快速提供一个初始化版本给用户测试
(2020年下)
喷泉模型
是面向对象的开发模型。特点是:迭代无间隙,以用户需求为动力。
耦合性
(2021年上)
数据耦合是通过参数表传递简单信息。
公共耦合是多个模块访问同一个公共数据环境。
外部耦合是一组模块访问同一个全局简单变量而没有通过参数表传递。
内容耦合是一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。
概要设计与详细设计
(2021年上)
软件详细设计阶段的主要任务包括:
对模块内的数据结构进行设计;对数据库进行物理设计;对每个模块进行详细的算法设计;代码设计、输入/输出设计、用户界面设计等其他设计。
软件概要设计阶段的主要任务包括:
(1)软件系统总体结构设计,将系统划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
(2)数据结构及数据库设计。
区别:概要设计强调模块外层接口调用的设计,详细设计则强调模块内的设计。
内聚性
(2020年下)
软件文档
(2021年上)
关于文档的叙述
文档也是软件产品的一部分,没有文档的软件就不能称之为软件
文档是开发中的重要工具,对开发有较大意义
软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
高质量文档对于发挥软件产品的效益有着重要的意义
白盒测试用例
(2021年上)
路径覆盖,给程序流程图每个结点进行标号,统计不同的路径
(2020年下)
语句覆盖:被测试程序中的每条语句至少执行一次
路径覆盖:覆盖被测试程序中所有可能的路径
条件覆盖:每一个判断语句中,每个逻辑条件的各种可能的值至少满足一次
分支覆盖:又叫做判定覆盖,被测程序每个判定表达式至少获得一次“真”值和“假”值。
软件维护相关概念
(2021年上)
在软件外部,可以用MTTR来度量软件的可维护性,它指出处理一个有错误的软件需要花费的平均时间。如果用M表示可维护性指标,那么M=1/(1+MTTR)。
MTTF/(1+MTTF)一般用来表示可靠性或可用性指标。
(2020年下)
MTBF/(1+MTBF)可以用来度量可用性。
软件维护类型
(2021年上)
在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:
(1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
(2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
(3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。更快地得到搜索结果,即提升了搜索引擎的性能,扩充功能或提升性能是完善性维护的工作。
(4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。
其他
(2020年下)
改写代码仅使其结构上更紧凑,并不能提高执行效率问题。
系统设计知识
(2019年上)耦合类型
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或者外部变量)来交换输入、输出信息的。
公共耦合:若一组模块都可以访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这一记录是某一个数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址。
直接耦合:两个模块之间没有直接联系,它们之间的联系完全是通过主模块的控制和调用来实现的。
控制耦合:如果一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合:
1、一个模块直接访问另一个模块的内部数据;
2、一个模块不通过正常入口转到另一个模块内部;
3、两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
4、一个模块有多个入口。
(2019年上)界面设计
人机交互“黄金三原则”包括:置于用户控制之下、减少用户的记忆负担、保持界面的一致性。
(2019年下)软件设计原则
(2019年下)内聚类型
过程内聚:如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行;
时间内聚:如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起;
顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入;
逻辑内聚:几个逻辑上相关的功能被放到同一模块中;例如一个模块读取各种不同类型外设的输入
项目管理
(2019年上)根据表格画出进度网络图,分析每个活动的最早开始和最早完成时间,完成该项目的最少时间即项目工期,最后结果
(2019年上)软件项目风险:
1、团队成员离职
2、团队成员缺乏某方面培训
3、招不到符合项目技术要求的团队成员
(2019年下)进度管理-单代号网络图 关键路径是时间最长和路过节点数最长的路径,可能有多条关键路径
(2019年下、2021年上)软件风险
两个特性:不确定性:指风险可能发生也可能不发生,还有损失
评估风险的影响:风险的本质、范围和时间,可能会影响风险所产的后果
如果风险可以预测,可以避免其发生,有些风险可以预测但无法避免
风险控制的目的是辅助项目组建立处理风险的策略
(2019年下)各类文档撰写阶段的叙述:测试过程基本上与开发过程平行进行,在需求分析阶段,就需要对验收测试、系统测试设计相关测试,撰写相关测试设计文档。
Gant图与Pert图(2021年上、2020年下)
最早开始和完成时间、最晚开始和完成时间、持续时间和总时差
最长路径为关键路径,关键路径可以有多条,其时间为完成整个项目的最短时间(项目工期)
风险管理
(2021年上)
风险是可能发生的事件,并且可能会带来损失,预测到风险后,可以进行干预,以期减少损失,但是无法避免。
成本管理
(2020年下)
成本估算模型(COCOMOII):也需要使用规模估算信息,体系结构阶段,在模型层次结构中有3种不同规模估算选择,即:对象点、功能点和代码行。应用组装模型使用的是对象点;早期设计阶段模型使用的是功能点,功能点可以转换为代码行。体系结构模型把工作量表示为代码行数。
软件工程概述
(2019年下)I/O软件隐藏了I/O操作实现的细节。I/O软件向用户提供的是逻辑接口。I/O软件将硬件与较高层次的软件隔离开来,而最高层次软件向应用提供一个友好的、
(2019年下)清晰且统一的接口,方便用户使用。
存储管理
(2019年上)注意单位换算,能存多少个字
(2019年下)磁盘调度管理中,先进行移臂调度寻找磁道,再进行旋转调度寻找扇区
操作系统
磁盘管理
(2021年上)磁盘的转速提高一倍,则
磁盘的平均存取时间、数据传输速率与磁盘转速以及移臂调度事件都相关,所以无法直接通过磁盘的转速提高一倍就直接提高效率的。
磁盘的平均寻道时间与磁盘转速无法,只与移臂调度有感,也无法因此加倍。
磁盘的旋转延迟时间只与磁盘转速相关,转速提高一倍,其时间会减半。
位示图
(2021年上)
采用位示图记录磁盘使用情况,每个磁盘块占据1bit
页式存储
(2021年上)
被淘汰的页面首先必须在内存(状态位),优先淘汰访问位为0的页面,进一步淘汰的是修改位为0的页面。
(2020年下)
将逻辑地址转换为物理地址的过程。已知逻辑地址=页号+页内地址 物理地址=块号+页内地址,所以实质转换就是将页号转换成块号。
页内地址是根据页面大小来计算的
前趋图与PV操作
(2021年上)
对于前趋图,箭头表示前趋与后继关系,前趋进程完成需要通知后继进程(用V()操作通知),后继进程开始前需要检查前趋进程是否完成(用P()操作检查)。也就是说,在前趋图中,每一个箭头流出指向后继进程,都会有一个V()操作通知后继,每一个箭头的流入都是始于前趋进程,需要检查前趋进程是否完成,用P()操作进程检查。
进程资源图
(2020年下)
根据资源及进程进行分析得出选项
索引文件
(2020年下)
索引文件结构:直接索引、一级间接索引、二级间接索引
信号量的取值范围
(2020年下)
PV操作中信号量的分析
线程的概念
(2020年下)
线程共享的内容包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易实现相互之间的通信)、进程打开的文件描述符、信号的处理器、进程的当前目录、进程用户ID与进程组ID。
线程独有的内容包括:线程ID、寄存器组的值、线程的堆栈(比如,栈指针)、错误返回码、线程的信号屏蔽码。
操作系统定义、分类及功能
(2019年上)嵌入式操作系统的特点:
1、微型化,从性能和成本角度考虑,希望占用的资源和系统代码量少;
2、可定制,从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求;
3、实时性,嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及管件要害领域需要迅速响应的场合,所以对实时性要求较高;
4、可靠性,系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施;
4、易移植性,为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。
(2019年下)最短移臂调度算法,即优先响应距离较近磁道的申请。
软件过程管理
(2019年上)系统原型
1、原型方法适用于用户需求不清、需求经常变化的情况,可以帮助导出系统需求并验证需求的有效性;
2、探索原型的目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性,可以用来探讨特殊的软件解决方案;
3、原型法能够迅速地开发出一个让用户看得见的系统框架,可以用来支持用户界面设计。
(2019年上)极限编程(XP)
极限编程是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。
4大价值观:沟通、简单性、反馈和勇气。
5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
12个最佳实践:计划游戏(快速制定计划、随着细节的不断变化而完善)、小型发布(系统的设计要尽可能早的交付)、隐喻(找到合适的比喻传达信息)、简单设计(只处理当前的需求,使设计保持简单)、测试先行(先写测试代码,然后再编写程序)、重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、结队编程、集体代码所有制、持续集成(可以按日甚至按小时为客户提供可运行的版本)、每周工作40个小时、现场客户和编码标准。
(2019年下)敏捷开发方法scrum的步骤:Product Backlog(产品待办事项清单)、Sprint Backlog(Sprint代办事项清单)、Sprint(冲刺迭代)。
(2019年下)关于能力成熟度模型CMM的叙述:
CMM是指软件过程能力成熟度模型
CMM成熟度5个等级,1级最低,5级最高
CMM的任务是将已有的几个CMM模型结合在一起,使之构成“集成模型”
采用更成熟的CMM模型,一般来说可以提高最终产品的质量
连续式模型的6个过程域能力等级
CL0(未完成的):过程域未执行或者未得到CL1中定义的所有目标。
CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
CL2(已管理的):其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用那个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制、和评审。
CL3(已定义级的):其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程中裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。
CL4(定量管理的):其共性目标集中可定量管理的过程制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。
CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效。
阶段式模型
软件质量管理
(2019年上)软件质量模型中,功能性特性的质量子特性包括适合性、准确性、互用性、依从性和安全性。
(2019年下)ISO/IEC软件质量模型中,易使用性是指与使用所需的努力由一组规定或隐含的用户对这样使用所作的个别评价有关的一组属性,易使用性的特性包括易理解性。
(2019年下)易学性、易操作性,易分析属性属于可维护性的子特性。
软件质量模型 质量特性 质量子特性
功能性
适合性
准确性
互用性
依从性
安全性
可靠性
成熟性
容错性
已恢复性
易使用性
易理解性
易学性
易操作性
效率
时间特性
资源特性
可维护性
易分析性
易改变性
稳定性
易测试性
可移植性
适应性
易安装性
一致性
易替换性
系统的测试和维护
(2019年上)测试描述
(2019年上)测试用例 在设计测试用例时,一个好的无效等价类,应该只从一个角度违反规则。
(2019年上)改善性维护是为了扩充功能和改善性能而进行的修改。
(2018年下、2019年下)白盒测试,路径根据序号区分得出,根据环路复杂度计算公式V(G)=边数-节点数+2=M-N+2=13-11+2=4
(2019年下)软件维护:是软件生命周期最长的一段,相对软件开发任务而言,软件维护工作要更加复杂。
(2021年上)在软件外部,可以用MTTR来度量软件的可维护性,它指出处理一个有错误的软件需要花费的平均时间。如果用M表示可维护性指标,那么M=1/(1+MTTR)。MTTF/(MTTF)一般用来表示可靠性或者可用性指标。MTTF:平均无故障时间 MTTR:平均故障修复时间
面向对象
面向对象的基本概念
(2019年上)重载,简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
(2019年上)组成(组合)关系,指的是整体与部分的关系,并且整体与部分的生命周期并不相同。
(2019年上)聚合是关联关系的一种特例,它体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可以分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等。
(2019年下)类的成员变量即对应属性,成员函数即对应方法。
(2018年下)类可以分为3种:实体类、接口类(边界类)和控制类。实体类的对象表示现实世界中真实存在的实体,如人、物等。接口类(边界类)的对象为用户提供一种与系统合作交互的方式,分为人和系统两大类,其中人的接口可以是显示屏、窗口、Web窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口涉及到把数据发送到其他系统,或者从其他系统接收数据。控制类的对象用来控制活动流,充当协调者。
(2021年上)
JAVA是解释型语言,可以生成中间代码后再边解释为目标代码边执行,也就是即时编译,可以根据运行机器优化代码,采用的是动态优化编译。
Java程序最初都是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码”(Hot Spot Code),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成本地机器码,并以各种手段尽可能地进行代码优化,这个过程就叫即时编译,运行时完成这个任务的后端编译器被称为即时编译器。
JAVA的栈空间只存放基本类型、引用类型变量和方法,而堆中存储实例对象。
(2021年上)
多态:不同对象接收到相同消息给出不同结果,这是多态的描述。
(2020年下)
参数多态:应用广泛、最纯的多态。
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。 目前软设考查比较多的是过载多态。
封装:隐藏对象的属性和实现细节,仅对外公开接口(信息隐藏技术)。
继承与泛化:复用机制(单重继承和多重继承),子类可以继承父类的一些属性和方法。
消息和消息通信:对象之间进行通信的一种构造叫做消息。消息是异步通信的(消息传递:接收到信息的对象经过解释,然后予以响应)。
面向对象开发各阶段划分及任务
(2021年上)
面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。
认定对象是指:在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象。实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。
组织对象含义是:分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑;如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
描述对象间的相互作用是:描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
最后定义对象的操作和内部信息。
面向对象设计原则
(2021年上、2020年下)
单一职责原则:设计目的单一的类
开放-封闭原则:对扩展开放,对修改封闭
里氏替换原则:子类可以替换父类
依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
接口隔离原则:使用多个专门的接口比使用单一的总接口要好。不强迫客户依赖于他们不用的方法,即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。
共同封闭原则:包中的所有类对于同一种性质的变化,应该是共同封闭的。一个变化若对一个封闭的包产生影响,则将对该包中的所有类产生影响,而对于其他包则不造成任何影响。
共同重用原则:面向对象编程属于,指一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么也相当于重用了包中的所有类。
UML图的图示
(2021年上)
状态图:
当对系统、类或用例的动态方面建模时,通常是对反应型对象建模。
状态图通常包含简单状态和组合状态、转换(事件和动作)。
状态是指对象的生命周期中某个条件或者某个状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
嵌套在另外一个状态中的状态称为子状态(本题中的A、B为子状态),含有子状态的状态称为组合状态(也叫做超状态,C是组合状态)。状态C完成才会在when b=5[a>5]时,让D进入激活状态,当前状态为A,当A完成时进入状态B,状态B完成后才完成组合状态C。
转换是两个状态之间的一种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警戒(监护)条件满足时进入目标状态。动作是一个可执行的原子操作,是不可中断的,其执行时间可以忽略不计。转换由事件触发,而不是状态由事件触发。
(2020年下)
类图:
展示了一组对象、接口、协作和它们之间的关系
抽象类不能直接进行实例化,即没有直接对象,只能有非直接对象,即子类的对象。
对象图:
展示了某一时刻一组对象以及它们之间的关系
用例图:
展示了一组用例、参与者以及它们之间的关系
序列图:
是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动
设计模式的图
(2019年下)桥接模式:结构型对象模式
定义:将抽象部分与其实现部分分离,使他们都可以独立的变化。
结构:实现类接口,定义实现类的接口,这个接口不一定要与抽象类的接口完全一致,事实上这两个接口可以完全不同,一般的讲实现类接口仅仅给出基本操作,而抽象类接口则会给出很多更复杂的操作。
试用情况:不希望在抽象和它的实现部分之间有一个固定判断关系描述。
组合模式:
试用情况:想表示对象的部分-整体层次结构描述。
适配器模式:
试用情况:想使用一个已经存在的类,而它的接口不符合要求描述。
装饰模式:
试用情况:在不影响其他对象的情况下,以动态透明的方式给单个对象添加职责描述。
责任链模式:行为型对象模式
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。
迭代器模式:行为型对象模式
提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。
行为型对象模式:
命令模式:(2021年上)
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。
适用于:
抽象出待执行的动作以参数化某对象。
在不同的时刻指定、排列和执行请求。
支持取消操作。
支持修改日志。
用构建在原语操作上的高层操作构造一个系统。
解释器模式:
给定义一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。
观察者模式:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新。
适用于:
.一个对象必须通知其他对象,而它又不能假定其他对象是谁
状态模式:
适用于:
一个对象的行为决定于其状态且必须在运行时刻根据状态改变行为
中介者模式:
适用于:
一个对象引用其他对象并且直接与这些对象通信而导致难以复用该对象
创建型对象模式
生成器模式(2020年下)
概念:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用于:复杂对象构建,当创建复杂对象算法应该独立于该对象的组成部分以及它们的装配方式时。当构造过程必须允许被构造的对象有不同的表示时。
面向对象分析与设计方法
(2019年下)E-R图中的联系转换,多对多联系需要单独转换为一个关系模式,也需要重新建类。
设计原则
(2019年上)单一职责原则:设计目的单一的类;
里氏替换原则:子类可以替换父类;
接口隔离原则:使用多个专门的额接口比使用单一的总接口要好;
(2019年下)开放封闭:是所有面向对象原则的核心。两个方面:对扩展开放,对修改封闭。
UML
(2019年下)状态图
活动可以在状态内执行,也可以在迁移时执行
迁移可以包含事件触发器,监护条件和状态
事件触发迁移
若事件触发一个没有特定监护条件的迁移,则对象不能离开当前状态
(2019年上、下)类图:
类图:展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。
B依赖于A,A发生变化会影响B,但是反过来,当B的一个实例被删除,不会影响A的实例。
(2019年上)组件图:展现了一组组件之间的组织和依赖。
(2019年上)通信图:它强调收发消息的对象或参与者的结构组织。
(2019年上)部署图:是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。
(2019年上)序列图(顺序图):它由一组对象或参与者以及它们之间可能发送的消息构成。
(2019年下)对象图:对象图的对象名会有:标识,并且对象图的关联关系一般不会出现多重度。
程序设计语言
(2019年上)程序设计语言的基本成分包括数据、运算、控制和传输等;其中控制成分包括顺序、选择和循环3种结构。
(2019年下)运行时结合是动态绑定,编译时结合是静态绑定。
后缀表达式(逆波兰式)
(2021年上、2020年下)
后序遍历:对于该类树形结构判断,首先要找出它的根,根前二叉树分为左右两端
编译器工作过程
(2021年上)
词法分析阶段处理的错误:非法字符、单词拼写错误等
语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。
静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。
目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。
文法
(2021年上)
表达式和有限自动机(DFA)
利用推导式构造表达式
从初始状态开始,接收字符a可能会保持原状态不变,也可能会转入下一个状态,是不确定的,所以不确定的有限自动机。其次该自动机识别倒数第三个字符只有a,所以无法识别bab结尾的字符串。
(2020年下)
推导树
排除法排除选项
传值与传址
(2021年上、2020nai)
传值值不会变,传址值会变
编译与解释
(2020年下)
汇编语言执行过程:对于编译型语言,处理过程为:预处理->编译->汇编->链接
其他
(2020年下)递归调用
在递归调用中,需要在前期存储某些数据,并在后面又以存储的逆序恢复这些数据,以提供之后使用的需求,因此,需要用到栈来实现递归。简单的说,就是在前行阶段,对于每一层递归,函数的局部变量、参数值以及返回地址都被压入栈中。在退回阶段,位于栈顶的局部变量、参数值和返回地址被弹出,用于返回调用层次中执行代码的其余部分,也就是恢复了调用的状态。
汇编、编译、解释系统
(2019年上、2021年上)编译方式
词法分析阶段依据语言的词法规则,对源程序进行逐个字符地扫描,从中识别出一个个“单词”符号,主要是针对词汇的检查;
语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”“程序”等。语法规则就是各类语法单位的构成规则,主要是针对结构的检查。
语义分析阶段分析各语法结构的含义,检查源程序是否包含语义错误,主要针对句子含义的检查。
符号表:在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息一般以表格形式存储于系统中。
(2019年下)编译器的工作过程:
记号流,词法分析的输出流是记号流,也就是语法分析的输入
字符流,在Java中,根据处理的数据单位不同,分为字节流和字符流,字符流是由字符组成的
源程序,词法分析的任务是把源程序的字符串转换成单词符号序列
分析树,如果没有语法错误,语法分析后就能正确的构造出其语法树
括号不匹配是典型的语法错误,会在语法分析阶段检测出来
(2021年上)JAVA采用即时编译、栈空间只存放基本类型、引用类型变量和方法,而堆中存放实例对象。
关系数据库的规范化
(2019年下)传递函数依赖
数据库基础知识
SQL语言
(2019年上)授权 WITH GRANT OPTION 将授予用户相关权限外,用户还被授予了将相关权限授予其他用户的权利。
(2019年下)关系代数与SQL语句的结合
三层模式:视图、存储文件、基本表分别对应:视图-外模式,存储文件-内模式,基本表-模式。
控制功能
(2019年下)事务的ACID特性
原子性:事务是原子的,要么做,要么不做。
一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。
隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事务都是不可见的。
持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。
数据结构与算法基础
队列与栈
(2021年上)
队列先进先出,栈先进后出
树与二叉树的特性
(2019年上、下)二叉树:先序是根左右,中序是左根右,后序是左右根
(2019年下)树结点:以简单树为例子代入计算即可
(2021年上)完全二叉树,高度最小。
(2018年下)二叉排序树
(2021年上)
完全二叉树是让二叉树的每一层的结点都尽可能全满,除了最底层,此时树的高度一定是最小的。
排序二叉树可能会得到单枝树,每一层只有1个结点,此时树的高度可能最大。
线索二叉树与二叉树遍历序列相关,高度并没有确定性。
最优二叉树与结点的权值相关,构成的树的高度也是不确定的。
最优二叉树(哈夫曼树)
(2020年下)
构造过程,权值越大的叶子结点选择越靠后也就离根越近
每一次构造都会选择两个权值,不存在只有一个子树的结点
结点总数一定为奇数
权值相同的结点可能会因为构造的形态不同,导致构建结果不一样,权值不一样
数组与矩阵和广义表
(2019年上)三对角矩阵,可以直接用实例来排除错误选项,并注意读题 按行存储。
(2019年下)邻接矩阵定义:行列数都为结点个数。
(2019年下)邻接表定义:一个顶点的表结点个数为其邻接顶点的个数。
(2021年上)
存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。
稀疏矩阵若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。
稀疏矩阵的三元组表的顺序存储结构称为三元组顺序表,常用的三元组表的链式存储结构是十字链表。
散列表(哈希)
(2021年上)排除法
关键字e的同义词,指的是其他关键字利用哈希函数进行求值时,得到的函数结果与e是一致的,此时这些关键字就是e的同义词。
在哈希表查找关键字e时成功且经过多次比较,可以知道经过计算e的位置,此时该位置存放的并不是关键字e,并且这些关键字的顺序与原序列顺序相关,与大小无关。
由于本题采用的线性探测法解决哈希冲突,此时该位置对同义词开放,对非同义词也是开放的,也就是说,其他非同义关键字在使用线性探测法解决冲突时,也有可能直接占据该位置。所以对该位置进行比较的关键字,可能是e的同义词,也可能不是e的同义词。
顺序表与链表
(2020年下)
顺序储存:通过元素在存储空间中的相对位置来表示数据元素之间的逻辑关系,元素的逻辑相对位置与物理相对位置是一致的
链式存储:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的
索引存储:分别存放数据元素和元素间关系的储存方式
哈希存储:哈希存储的基本思想是以关键字key为自变量,通过一定的函数关系(散列函数或哈希函数),计算出对应的函数值(哈希地址),以这个值作为数据元素的地址,并将数据元素存入到相应地址的存储单元中
排序
(2019年下)插入、冒泡、快速 最坏情况下的时间复杂度都是O(n2),归并排序为O(nlog2n)
(2021年上、2020年下)
选择类排序(简单选择排序、堆排序),每一轮会选择最值(最大值或最小值)与第一个位置进行交换,此时确定第一个元素位置。③④都满足要求。
冒泡排序,每一轮会让最值相邻交换直至放到最终的位置,②满足要求。
快速排序,每一轮会根据基准元素划分左右数组,此时基准元素的位置可以确定,因此⑤也满足要求。
其他排序(直接插入排序、归并排序)方式每一轮只能确定元素的当前位置,不能确定该元素的最终位置。
大顶堆:先根据数组构建初始堆,然后从底层开始构建,然后逐层比较,最小的在下面,最后调整堆位置构建出最大堆。
分治法
(2021年上)
二分查找
(2020年下)
二分查找的前提条件是顺序存储,且有序排列。
图的遍历
(2020年下)
深度遍历
广度遍历
图的定义及存储
(2020年下)
简单画出一个无向连通图,比如两个顶点相连接,此时结点n=2,边最少为1,最多也为1,(n-1)和n(n-1)/2
时间复杂度与空间复杂度
(2020年下)时间复杂度 渐近分析 从低到高排序为
Ign, n2/3, 1000n(O(n)), n4, 2n, n!
其他
(2021年上)
要想直接解决一个较大的问题,有时是相当困难的,分治法的设计思想是将一个难以解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。
动态规划法与分治法类似,其基本思想也是将带求解问题分解为若干个子问题,先求解子问题再从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。此时用一个中间表记录重复子问题的解,可以避免大量的重复计算。这就是动态规划法的基本思路。动态规划法的应用场景一般会出现“最优子结构”的描述,并且针对重复子问题的计算通过记录-查表,可以提高效率。
贪心法也经常用于解决最优化问题,与之不同的是,贪心法在解决问题的策略上是仅根据当前已有的信息做出选择,而且一旦做出选择,无论未来如何都不会改变。也就是只考虑当前最优,不考虑全局最优。一般不涉及划分和求解重复子问题。
回溯法可以系统地搜索一个问题的所有解或任意解。它在包含问题的解空间树中,按照深度优先的策略的策略,从根结点出发搜索解空间树。
分支限界法类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法那,但在一般情况下,分支限界法与回溯法的求解目标不同。分支限界法的求解目标是找出满足约束条件的一个解即可。由于求解目标不同,其探索方式与回溯法也不同,分支限界法以广度优先或以最小耗费优先的方式搜索解空间树。
算法分析及常用算法
(2019年下)贪心算法:邻分(分数)背包
(2019年上、下)动态规划算法:0-1背包、矩阵链乘、最长公共子序列、最优子结构(根据存放结果的二维数组,确定空间复杂度为O(n^2))
(2019年下)霍夫曼树
(2021年上)稀疏矩阵
存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因此能够较容易地实现矩阵的各种运算。但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费了存储空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。
稀疏矩阵的三元组表的顺序存储结构称为三元组顺序表,常用的三元组表的链式存储结构是十字链表。
ISO/OSI网络体系结构
(2019年上)TCP和UDP均提供了端口寻址功能
(2019年下)TCP/IP 建立连接进行可靠通信是在传输层完成
(2019年下)OSI/RM同样是在传输层完成
网络协议
(2019年上)HTTP请求过程
(2019年下)无线通信技术 蓝牙通信距离最短,一般10m左右
(2019年下)邮件传输 使用MIME协议进行邮件传输
(2019年下)IPV4用32位二进制表示,能够表示的地址空间是2^32,IPV6用128位二进制表示,能够表示的地址空间是2^128,2^128/2^32=2^96
文法分析
(2019年上)沟通渠道公式如下:M=n*(n-1)/2。M表示沟通渠道数,n表示项目中的成员数
(2019年上)有限自动机(NFA)和DFA等价转换,通过识别字符串来分析。
(2019年上)引用调用、值调用的区别,引用调用会影响形参的取值。
(2019年下、2021年上)后缀式(逆波兰式)根据表达式得到语法树,左右根
对布尔表达式进行短路求值是指:无须对表达式中所有操作数或运算符进行计算就可确定表达式的值。
输入输出系统
(2019年上)直接主存存取DMA,指数据在主存与I/O设备间(即主存与外设之间)直接成块传送
(2020年上)DMA是直接内存存取,传送数据的时间只与内存相关,与CPU时间无关。
(2018年下)BIOS(基本输入输出系统)是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可以从CMOS中读写系统设置的具体信息。
进程管理
(2019年上)先来先服务调度算法,即按照申请的顺序来安排运行。
(2019年上)PV操作利用信号量机制,是一种有效的进程同步与互斥工具,可以实现资源的互斥使用。
前驱图:前驱就是指只有在前驱进程完成后,该进程才能开始执行。
文件管理
(2019年上)绝对路径从根目录\开始;相对路径从当前目录下一级开始
(2018年下)索引节点法
直接索引即索引直接指向物理块,可以表示逻辑块号范围:0~4号。
一级索引即索引节点指向的物理块用来存放地址项,可以表示256个地址项,即256个物理块,可以表示逻辑地址快号范围:5~258,259~515号
二级索引即索引节点指向的物理块,存放的是一级索引的地址块地址,一共有256个地址块用来存放一级索引,每个块可以存放256个地址项,共有256²=65536个地址项,因此可以表示逻辑块号范围:516~66052号
关系代数和关系模型
(2019年上)R-》《-S 自然连接的结果以左侧R为主,右侧关系S去除重复列。
(2019年上)首先判断候选码,先找入度为0的结点 主属性、非主属性,传递函数依赖、冗余函数依赖
数据库系统
(2021年上)
ER模型
其中1:1和1:*类型的联系可以归并到实体中,而*:*联系必须单独转换为1个独立的关系模式。
规划范理论基本概念
(2021年上、2020年下)
候选码入度为0,有两个入度为0的点,但是需要两者组合在一起可以遍历整个图,根据Armstrong公理得到分解式
关系代数
(2021年上、2020年下)
涉及3个关系表的联合使用,结合选项来看,可以快速找到答案
自然连接、左连接、右连接、完全连接
概念结构设计
(2020年下)
冲突
属性冲突。同一属性可能会存在于不同的分E-R图,由于设计人员不同或是出发点不同,对属性的类型、取值范围和数据单位等可能会不一致。
命名冲突。相同意义的属性在不同的分E-R图中有着不同的命名,或是名词相同的属性在不同的分E-R图中代表这不同的意义。
结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体,而在另一分E-R图中又被抽象为属性,需要统一。
分布式数据库(2020年下)
共享性是指数据库存储在不同的结点数据共享
自治性是指每个结点对本地数据都能独立管理
可用性是指当某一场地故障时,系统可以使用其他场地上的副本而不至于整个系统瘫痪
分布性是指在不同场地上的存储
数据库基础知识
共享锁(S锁):又称读锁,若事务T对数据对象A加上S锁,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
排它锁(X锁):又称写锁,若事务T对数据对象A加上X锁,其他事务不能再对A加任何锁,直到T释放A上的锁。
DDBS的基本特点:
1、物理分布性:数据不是存储在一个场地上,而是存储在计算机网络的多个场地上。
2、逻辑整体性:数据物理分布在各个场地,但逻辑上是一个整体,它们被所有用户(全局用户)共享,并由一个DDBMS统一管理。
3、场地自治性:各场地上的数据由本地的DBMS管理,具有自治处理能力,完成本场地的应用(局部应用)。
4、场地之间协作性:各场地虽然具有高度的自治性,但是又相互协作构成一个整体。
线性结构
双端队列
查找算法
散列函数 用线性探查法解决冲突构造的哈希表 首先根据关键码序列,分别求取H(key)=key%11,得到关键字散列值 (不太懂)
二分查找 有序表
Internet应用
浏览器无痕模式
Windows命令查看本机DHCP服务是否启用
Web方式收发电子邮件
专业英语
(2019年上)项目管理
(2019年下)系统开发
面向对象程序设计
(2021年上)组合(composite)模式
(2019年下)观察者模式
(2019年上)策略模式
(2018年下)状态 (State) 模式
(2018年上)生成器(Builder)模式
(2018年上)桥接 (Bridge)模式
计算机网络
其他
(2021年上)
公有云通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。
私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。
社区云一般指社群云。社群云(Community cloud),也称社区云,是由几个组织共享的云端基础设施,它们支持特定的社群,有共同的关切事项,例如使命任务、安全需求、策略与法规遵循考量等。
混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。我们已经知道私有云主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。
IPV6
(2021年上)
IPV6地址16字节,由128位二级制表示
URL
(2021年上)
在没有录入协议的情况下,URL默认是HTTP协议。
(2020年下)
URL格式:协议://主机名.域名.域名后缀或IP地址(:端口号)/目录/文件名
域名分类
常见的TCP/IP协议基础
(2021年上)
SMTP邮件传输协议。
POP3邮件收取协议。
IMAP4协议与POP3协议一样也是规定个人计算机如何访问网上的邮件的服务器进行收发邮件的协议,但是IMAP4协议同POP3协议相比更高级。
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
(2020年下)
协议应用提升
(2020年下)
DHCP协议 无效的IP地址:169.254.X.X(Windows)和0.0.0.0(Linux)
常用命令
(2021年上)
ipconfig/release :释放IP地址租约
ipconfig/ flushdns:清除本地DNS缓存。
ipconfig/ displaydns:显示本地DNS内容。
ipconfig/ registerdns:DNS客户端手工向服务器进行注册。
ipconfig /all:显示本机TCP/IP配置的详细信息。
ipconfig /renew:DHCP客户端手工向服务器刷新请求。
ipconfig /showclassid:显示网络适配器的DHCP类别信息。
ipconfig /setclassid:设置网络适配器的DHCP类别。
ipconfig /renew “Local Area Connection”:更新“本地连接”适配器的由DHCP分配IP地址的配置。
ipconfig /showclassid Local*:显示名称以Local开头的所有适配器的DHCP类别ID。
ipconfig /setclassid “Local Area Connection”TEST:将“本地连接”适配器的DHCP类别ID设置为TEST。
(2020年下)
ipconfig ( linux: ifconfig) (显示TCP/IP网络配置值,如:IP地址,MAC地址,网关地址等)。
tracert(linux: traceroute):用于确定 IP数据包访问目标所采取的路径,若网络不通,能定位到具体哪个结点不通。
netstat:用于显示网络连接、路由表和网络接口信息。
nslookup(查询DNS记录)。
网络规划与设计
(2021年上)
网络系统规划与设计的基本原则: 1.先进性和成熟性 2.安全性和可靠性 3.开放性和可扩充性 5.经济性和实用性 4.可管理性和可维护性
路由配置
(2020年下)
RIP:RIP(Routing Information Protocol,路由信息协议)是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。
OSPF:OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。
BGP:边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。
UDP:传输层协议。
收藏
0 条评论
下一页