前言:
参加了2023年下半年的软考-软件设计师的考试,之所以参加这个考试,主要出于以下几个目的:
1.减税。虽然只有1500的额度,但是考虑到税率,其实也不少,而且也没有更好的省钱途径。
2.学习。备战软考的过程中,也会学习到一些和设计相关的知识点。虽然之前也能或多或少知道,但是并不擅长用更标注的词汇进行描述。
3.找感觉。后面还打算参加很多门考试,比如证券从业资格证,软考高级等等,拿这次锻炼考试的感觉,为后面做准备。
考完之后,有很多感悟,所以写下来做一个记录,方便后来人。
本系列分为上下两篇,上篇主要讲解软件设计师综合知识的题型,解题思路以及相关的文档。
下篇主要讲案例。
如果你要问本文和其它的辅导有什么区别?最大的区别就是本文是基于某些知识点进行扩展和讲解,并不是单单只讲题目本身的答案。
一.备战思路
作为一名工作十多年的老程序员,去报培训班肯定不是我的选择,我的选择就是刷历史真题。
1.不用太早进行准备,提前3周左右开始准备即可。
2.我的节奏是第一天做综合知识,第二天做设计师案例,每天做完之后进行总结。这样大约可以做七八套题,基本上就够了。
3.一定要先答题,然后再看正确答案,这样记忆性更强。否则单看题目容易忘。
4.使用excel进行答题记录,如下图所示:
5.整理错题集合,最后一天强化记忆。
6.最近5年的历史真题一定要做一遍。相关资源如果嫌搜索麻烦可以PDD上买,或者公众号上搜索。
二.综合知识题型分类
综合知识,一共是75道题,每题1分,答对45道题即可通过。一般练习的时候,要尽量达到55分左右,给自己留一些缓冲的空间。
题目分类如下:
类型 | 数量 | 解释 |
计算机系统的知识点 | 3 | 主存,硬盘,系统总线等等 |
加密算法 | 1-2 | 要记录几种加密类型的英文名 |
中断向量 | 1 | |
指令执行 | 1-2 | 指令流水线/复杂指令集/精简指令集特点 |
浮点类型 | 1 | |
著作权/专利相关的知识 | 2-3 | |
数据流图 | 1-2 | |
设计模式 | 2-3 | 23中设计模式 |
软件项目的活动图里程碑 | 1-2 | 求关键路径 |
C++中的值传递和引用传递 | 1 | |
磁盘空间计算 | 1-2 | |
进程/线程相关知识点 | 1 | |
前趋图 | 3 | 这个题一定要搞清楚的,理解之后分几乎是必得的。 |
开发方法 | 1-2 | 敏捷开发,极限编程,水晶法等等。 |
耦合/内聚类型 | 2 | |
白盒测试覆盖 | 2 | 路径覆盖,McCabe方法计算。 |
封装/集成/多态/重载/信息 | 1 | |
面向对象设计 | 2 | |
UML图 | 1 | |
python基本用法 | 2-3 | |
数据库设计/关系模式 | 2-3 | 有几个关键词,蕴涵关系等 |
SQL | 2 | 这个看命令对应的英文单词的意思即可 |
哈夫曼树 | 1 | 哈夫曼树是按照权重排序的 |
有向图/无向图/邻接矩阵/邻接表 | 1-2 | |
排序算法/二分查找 | 3-4 | 各种排序算法的时间复杂度,空间复杂度,稳定性等 |
Kruskal算法 | 2 | 使用贪心算法 |
各种网络通讯协议 | 4-5 | 比如www协议,OSI七层模型等等 |
英语题 | 5 | 英语题并不是粗略看懂就能答对的 |
三.综合知识知识点梳理
题目1:加密算法
X509 数字证书标准推荐使用的密码算法(8),而国密 SM2 数字证书采用的公钥密码 算法是(9)。
【来源于2022年下】
8)A. RSA B. DES C. AES D. ECC
9)A. RSA B. DES C. AES D. ECC
答案:8:A,9:D
解析:
RSA,非对称加密,
ECC,非对称加密,更短更安全
DSA,非对称加密
DES:密钥加密的块算法
AES 是一种(分组加密)算法。
ECC、DSA和RSA均属于公开密钥加密算法;DES是共享密钥加密算法。
题目2:网络安全
某单位网站首页被恶意篡改,应部署(10)设备阻止恶意攻击
(10)A. 数据库审计 B. 包过滤防火墙 C. web 应用防火墙 D. 入侵检测
【来源于2022年下】
答案:10:C
知识点:
数据库审计通常是监控并记录用户对数据库服务器的读、写、查询、添加、修改以及删除等操作,并可以对数据库操作命令进行回放。
包过滤是在 IP 层实现的防火墙技术,包过滤根据包的源 IP 地址、目的 IP 地址、源端口、目的端口及包传递方向等包头信息判断是否允许包通过。包过滤防火墙技术的优点是低负载、高通过率、对用户透明,但无法拦截应用层的攻击。
Web应用防火墙是一种用于保护Web服务器和Web应用的网络安全机制。其技术原理是根据预先定义的过滤规则和安全防护规则,对所有访问Web服务器的HTTP 请求和服务器响应,进行HTTP协议和内容过滤,进而对Web服务器和Web应用提供安全防护功能。
入侵检测通过收集操作系统、系统程序、应用程序、网络包等信息,发现系统中违背安全策略或危及系统安全的行为。具有入侵检测功能的系统称为入侵检测系统,简称为IDS。IDS能发现入侵行为并报警,但不能阻止恶意攻击。
题目3:著作权
《计算机软件保护条例》 第八条第一款第八项规定的软件著作权中的翻译权将原软 件由(13)的权利。
A. 源程序语言转换成目标程序语言
B. 一种程序设计语言转换成另一种程序设计语言
C. 一种汇编语言转换成一种自然语言
D. 一种自然语言文字转换成另一种自然语言文字
【来源于2022年下】
答案:D
知识点:
《计算机软件保护条例》第八条第一款原文:软件著作权人享有下列各项权利:
(一)发表权,即决定软件是否公之于众的权利;(终生+50年)
(二)署名权,即表明开发者身份,在软件上署名的权利;(永久)
(三)修改权,即对软件进行增补、删节,或者改变指令、语句顺序的权利;(永久)
(四)复制权,即将软件制作一份或者多份的权利;(终生+50年)
(五)发行权,即以出售或者赠与方式向公众提供软件的原件或者复制件的权利;(终生+50年)
(六)出租权,即有偿许可他人临时使用软件的权利,但是软件不是出租的主要标的的除外;(终生+50年)
(七)信息网络传播权,即以有线或者无线方式向公众提供软件,使公众可以在其个人选定的时间和地点获得软件的权利;(终生+50年)
(八)翻译权,即将原软件从一种自然语言文字转换成另一种自然语言文字的权利;(终生+50年)
(九)应当由软件著作权人享有的其他权利。
(十)作品完整权。(永久)
要记住哪些是永久的,那些是50年的。以及每种权利所对应的内容
题目4:耦合/内聚
若模块 A 和模块 B 通过外部变量来交换输入、输出信息,则这两个模块的耦合类型 是()耦合。
(31)A. 数据 B. 标记 C. 控制 D. 公共
【来源于2022年下】
答案:D
知识点
题目5:白盒测试
白盒测试技术的各种覆盖方法中,()具有最弱的错误发现能力。
(33)A. 判定覆盖 B. 语句覆盖 C. 条件覆盖 D. 路径覆盖
答案:D
知识点:
各种覆盖的强度
语句覆盖:每条语句至少执行一次(最弱的覆盖,1)。
判定/分支覆盖:每个判定的所有分支各出现一次。
条件覆盖:所有的条件,true和false各出现一次。
路径覆盖:所有的路径组合各一次。
答案解析:
这个有可能几句话讲不清,最好找个视频看一遍,找几个极端例子理一下即可。比如下图中几种覆盖各需要多少条用例。
题目6:设计模式
在某系统中,不同级别的日志信息记录方式不同,每个级别的日志处理对象根据信 息级别高低,采用不同方式进行记录。每个日志处理对象检查消息的级别,如果达到它的级别则进行记录,否则不记录然后将消息传递给它的下一个日志处理对象。针对此需求, 设计如下所示类图。
(45)A. 行为型类B. 行为型对象 C. 结构型类 D. 结构型对象
答案:B
知识点:
--创建型模式--
类模式:工厂方法模式
对象模式:抽象工厂模式,建造者模式,原型模式,单例模式
--结构型模式--
类模式:适配器模式
对象模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,享元模式,代理模式。
--行为型模式--
类模式:解释器模式,模版方法模式
对象模式:责任链模式,命令模式,迭代器,中介者,备忘录,观察者,状态模式,策略模式,访问着模式
--------------------------------
工厂方法:
抽象方法:
建造者模式:
单例:
原型:封装产生代码后减少代码的编写
适配器:将一个类的接口转换成客户希望的另外一个接口
代理:
装饰器:
外观:把复杂的内部逻辑封装,提供给外部简单的接口
桥接:将抽象部分与其实现部分分离,使他们都可以独立的变化
组合:
享元:
状态:
策略:策略模式可以将不同时期的促销活动定义为一个个算法,进行封装,它们彼此可以互相替换。
命令:将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化。
观察者:
访问者:表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义作用于这些元素的新操作。
中介者:
迭代器:主要意图是提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示
解释器:
备忘录:
责任链:很多对象由每一个对象对其下家的引用而连接起来形成一条链
模版方法
答案解析:无
题目7:排序算法
下列排序算法中,占用辅助存储空间最多是(61)
A. 归并排序 B. 快速排序 C. 堆排序 D. 冒泡排序
答案:B
知识点:
排序算法 | 平均时间复杂 | 最坏时间复杂 | 最好时间复杂 | 空间复杂 | 稳定性 |
冒泡排序 | O(n2) | O(n2) | O(n) | O(1) | 稳定 |
直接插入 | O(n2) | O(n2) | O(n) | O(1) | 稳定 |
直接选择 | O(n2) | O(n2) | O(n) | O(1) | 不稳定 |
快速排序 | O(nlogn) | O(n2) | O(nlogn) | O(logn) | 不稳定 |
堆堆排序 | O(nlogn) | O(n2) | O(n)O(1) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
答案解析
题目8:网络通讯协议
答案:C
知识点:
五层结构:
应用层:使用数据
传输层:TCP/UDP,保证完整性。
网络层:把分组发到目的主机
数据链路层:向该层用户提供透明的和可靠的数据传送基本服务。虚拟局域网(VLAN)
物理层:为数据端设备提供传送数据通路、传输数据
OSI/RM分为七层结构
应用层:实现具体的应用功能
表示层:数据的格式与表达,加密,压缩。
会话层:建立,管理,终止会话,在OSI中属于会话层的任务。
传输层:端到端的连接
网络层:分组传输和路由选择
数据链路层:传送以帧为单位的信息
物理层:二进制传输
题目9:动态/静态存储器
以下关于 SRAM 和 DRAM 储存器的叙述中正确的是(2)
A. 与 DRAM 相比,SRAM 集成率低,功率大、不需要动态刷新
B. 与 DRAM 相比,SRAM 集成率高,功率小、需要动态刷新
C. 与 SRAM 相比,DRAM 集成率高,功率大、不需要动态刷新
D. 与 SRAM 相比,DRAM 集成率高,功率大、需要动态刷新
答案:D
知识点:
DRAM是动态,动态集成率高,功率小,需要动态刷新
SRAM是静态,静态集成率低,功率大,不需要动态刷新
题目10:面向对象设计
面向对象分析的第一项活动是(18);面向对象程序设计语言为面向对象(19)。
A. 组织对象 B. 描述对象间的相互作用 C. 认定对象 D. 确定对象的操作
A. 用例设计 B. 分析 C. 需求分析 D. 实现
答案:A,D
知识点:
面向对象分析的活动是:
1.认定对象,
2.组织对象,
3.对象间的相互作用,
4.给予对象的操作。
面向对象设计的活动:
1.识别类及对象
2.定义属性
3.定义服务
4.识别关系
5.识别包
题目11:磁盘管理
某文件管理系统采用位示图(bitmap))记录磁盘的使用情况。如果系统的字长为 32 位,磁盘物理块的大小为 4MB,物理块依次编号为:0、1、2、位示图字依次编号为:0、1、2、那么 16385 号物理块的使用情况在位示图中的第(37)个字中描述;如果磁盘的容 量为 1000GB,那么位示图需要(38)个字来表示
(37)A. 128 B. 256 C. 512 D. 1024
(38)A. 1200 B. 3200 C. 6400 D. 8000
答案:C,D
知识点:
16385/32=512个字
1000GB*1024/4MB/32=8000
这个其实直接按照固定的公式算即可,不需要理解。
题目12:嵌入式操作系统
答案:A
知识点:
嵌入式操作系统的特点:
(1)微型化,从性能和成本角度考虑,希望占用的资源和系统代码量少;
(2)可定制性,从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求;
(3)实时性,嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高;
(4)可靠性,系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施;
(5)易移植性,为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。
题目13:开发过程模型
答案:A
知识点:
---特点---
瀑布:线性顺序的开发流程,阶段之间有明确的交付物和依赖关系
演化:重点在于逐步完善系统,从一个基本版本开始逐渐增加功能
螺旋:强调循环迭代,每个循环包括风险评估和规划。等于分拆成几个瀑布。
增量:将项目分为多个独立的部分(增量),每个增量添加新功能或改进。
敏捷:以小而自足的团队工作,强调合作、快速交付和需求的灵活性。
喷泉:面向对象,以需求为动力,支持软件重用
原型:开发人员快速地构造整个系统或者系统的一部分以理解或澄清问题。
---优点---
瀑布:易于理解和管理
演化:允许灵活地适应需求变化
螺旋:风险管理强化,可以及早发现和解决问题
增量:允许快速交付部分功能,以便用户可以尽早使用
敏捷:强调快速适应需求变化,提高用户满意度
喷泉:
---缺点---
瀑布:不适用需求变化
演化:需要更多的时间和资源,以及良好的项目管理。
螺旋:较复杂,需要更多的资源和时间,不适用于小型项目
增量:可能需要更多的计划和协调,因为多个增量同时进行
敏捷:不适用于所有项目,尤其是需要严格合规性的项目
喷泉:不利于项目管理,严格管理文档
题目14:指令寻址
计算机指令系统采用多种寻址方式。立即寻址是指操作数包含在指令中:寄存器寻 址是指操作数在寄存器中,直接寻址是指操作数的地址在指令中。这三种寻址方式操作数 的速度(5)。
A. 立即寻址最快;寄存器寻址次之,直接寻址最慢
B. 寄存器寻址最快,立即寻址次之,直接寻址最慢
C. 直接寻址最快, 寄存器寻址次之,立即寻址最慢
D. 寄存器寻址最快,直接寻址次之,立即寻址最慢
答案:A
知识点:
速度上:立即寻址>寄存器寻址>直接寻址
立即寻址:直接在指令中
寄存器寻址:在寄存器中
直接寻址:在内存中
题目15:精简复杂指令
以下关于 RISC 和 CISC 计算机的叙述中,正确的是( )。
(2) A. RISC 不采用流水线技术,CISC 采用流水线技术
B. RISC 使用复杂的指令,CISC 使用简单的指令
C. RISC 采用很少的通用寄存器,CISC 采用很多的通用寄存器
D. RISC 采用组合逻辑控制器,CISC 普遍采用微程序控制器
答案:D
知识点:
正确的是:
RISC:精简指令集系统计算机,指令数量少,少量寻址类型,适合流水线,,多寄存器
CISC:复杂指令集系统计算机,指令数量多,多种寻址类型,不适合流水线,微程序控制,研制周期长;
题目16:数据库设计
某高校信息系统设计的分 E-R 图中,人力部门定义的职工实体具有属性:职工号、 姓名、性别和出生日期;教学部门定义的教师实体具有属性:教师号、姓名和职称。这种
情况属于(51),在合并 E-R 图时,(52)解决这一冲突。
(51)A. 属性冲突 B. 命名冲突 C. 结构冲突 D. 实体冲突
答案:C
知识点:
本题考查数据库设计的基础知识。 面向不同的应用设计E-R图,在构建实体时只需要考虑应用中所需要的属性。
结构冲突是指同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性,需要统一。
本题试题中,人力部门将职工抽象为“职工号” 属性,教学部门将教师抽象为“教师”实体,从而产生了结构冲突。因此,为了解决结构冲突的问题,应该在合并E-R图时,在职工实体中加入“职称”属性,删除教师实体。
题目17:UML图
下图所示 UML 图为(42)。
(42)A. 对象图 B. 类图 C. 组件图 D. 部署图
答案:B
知识点:
本题考查统一建模语言(UML)的基本知识。 UML对象图、类图、组件图和部署图各自刻画系统的不同方面。其中,
类图展现了一组对象、接口、协作及其之间的关系;
对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照;
组件图展示一组组件之间的组织和依赖,它与类图相关,通常可以把组件映射为一个或多个类、接口或协作;
部署图展现了运行时处理结点以及其中构件的配置。
题图所示为在面向对象系统的建模中所建立的最常见的图,即UML类图。图中A和B分别表示两个类。类A和类B之间◆——表示聚集关系,是一种特殊类型的关联,描述了整体和部分间的结构关系,聚集上的多重度表示关联的实例的个数,即类A的一个实例为整体,由不同个数类B的实例聚集而成。A的一个实例可以与B的一个或多个实例关联;而B的一个实例仅与A的一个实例关联,只作为A的一个实例的部分;如果A的一个实例被删除,则所包含的B的实例都被删除。图中类B上存在一元关联,其上多重度表示B的一个实例可与B的其他一个或多个实例关联。