2021年下半年软件设计师上午真题答案及解析(三)

21、下图所示为一个非确定有限自动机(NFA),S0为初态,S3为终态。该NFA识别的字符串( )。
在这里插入图片描述
A、不能包含连续的字符“0”
B、不能包含连续的字符“1”
C、必须以“101”开头
D、必须以“101”结尾
参考答案:D
答案解析:

  • 有限自动机(FA)是对状态图的形式化描述
    也就是说,有限自动机可以等价地表示为状态图,一个状态图也可以表示成等价的FA
  • 有限自动机分为:
    1. 确定有限自动机(Deterministic Finite Automata)
      在这里插入图片描述
      由DFA的定义,DFA的状态图有且仅有一个初态,同一个状态发出的弧上的字符不重复(单值映射,这也是DFA中D含义),实现一个DFA即是实现与其等价的状态图

    2. 非确定有限自动机(Nondeterministic Finite Automata)
      在这里插入图片描述

  • NFA相对于DFA的不同
    1. NFA可以有多个初态
    2. 弧上的标记可以是Σ*上的字,甚至可以是正规式,而不一定是单个字符
    3. 同一状态上射出的弧上的字可以重复,也就是说接受同一个字,可以到达多个状态

从定义上可以看出,DFA是NFA的特例

  • DFA与NFA在识别能力上是相同的
    对于每一个NFA M,存在一个DFA M’,使得L(M)=L(M’)
    由于NFA与DFA的不同,DFA易于程序实现,NFA易于词法规则的人工设计
    那么在设计编程语言时,就需要将NFA转化为等价的DFA,而对于每一个NFA M,存在一个DFA M’,使得L(M)=L(M’)

  • 任何一个NFA都可以转换为等价的DFA

本题考查NFA有限自动机相关问题。
针对这类问题,可以采取找出对应反例的形式表示。
S0是初态,S3是终态,识别出从S0为初态到S3为终态的路径。
可以看到无论如何到达S3终态都需要经过S1-S2,即末尾必须存在”101“结尾的。
对于A和B选项不能包含连续字符的”0“和“1”,我们可以看到在S0初态中,有1个字符串0和1自循环,是可以包含连续的”0“和”1“的,所以错误。
对于C选项必须以“101”开头,说法错误,可以任意10的字符开头。

22、在单处理机计算机系统中有1台打印机、1台扫描仪,系统采用先来先服务调度算法。假设系统中有进程P1、P2、P3、P4,其中P1为运行状态,P2为就绪状态,P3等待打印机,P4等待扫描仪。此时,若P1释放了扫描仪,则进程P1、P2、P3、P4的状态分别为( )。
A、等待、运行、等待、就绪
B、运行、就绪、等待、就绪
C、就绪、就绪、等待、运行
D、就绪、运行、等待、就绪
参考答案:B
答案解析:
考查三态模型相关问题。
在这里插入图片描述
就绪→运行
运行→就绪
运行→等待
等待→就绪

在题干提示有相关进程P1,P2,P3,P4,两个资源打印机和扫描仪,三个状态:运行,就绪,等待。
首先题干已经明确说明P1处于运行态,释放了扫描仪,此时P1还有打印机没有运行完成,应该仍处于运行状态。
对于P2而言,单处理机计算机系统只允许拥有1个运行状态,P1此时还未运行完成,未分配对应的CPU,仍处于就绪态。
对于P3而言,等待打印机,处于等待状态,此时没有关于打印机的资源释放,仍处于等待状态。
对于P4而言,等待扫描仪,处于等待状态,有相关的扫描仪资源释放,应该得到相应的资源发生,从等待状态变成了就绪状态。

23、进程P1、 P2、P3、P4、P5和P6的前趋图如下所示。用PV操作控制这6个进程之间同步与互斥的程序如下,程序中的空①和空②处应分别为(1),空③和空④处应分别为(2), 空⑤和空⑥处应公别为(3)在这里插入图片描述(1)
A、V(S1)和P(S2)P(S3)
B、V(S1)和V(S2)V(S3)
C、P(S1)和P(S2)V(S3)
D、P(S1)和V(S2)V(S3)
(2)
A、V(S3)和P(S3)
B、V(S4)和P(S3)
C、P(S3)和P(S4)
D、V(S4)和P(S4)
(3)
A、V(S6)和P(S5)
B、V(S5)和P(S6)
C、P(S5)和V(S6)
D、P(S5)和V(S5)
参考答案:D、B、A
答案解析:
本题考查P,V操作前驱图相关问题。
对于这种问题,根据箭头的指向判断相应的PV操作,先理清楚前趋图中的逻辑关系:P1没有前驱,P2的前驱是P1,P3的前驱是P2,P4的前驱是P2,P5的前驱是P3,P6的前驱是P4,P5。
前驱就是指只有在前驱进程完成后,该进程才能开始执行。
由图可知,这里进程之间有6条有向弧,分别表示为P1→P2,P2→P3,P2→P4,P3→P5,P4→P6,P5→P6,各个进程间的逻辑关系,那么我们需要设定6个信号量(S1、S2、S3、S4、S5、S6),利用PV操作来控制这些过程。
对于进程P1,完成之后,需要通知P2,所以在P1执行了之后,实现了V(S1)操作。
对于进程P2,开始之前需要申请资源S1,实现P(S1),P2执行完成之后,需要通知P3和P4,实现两个V操作,分别是V(S2)和V(S3)
对于进程P3,开始之前需要申请资源S2,实现P(S2),P3执行完成之后,需要通知P5,实现V操作,为V(S4)
对于进程P4,开始之前需要申请资源S3,实现P(S3),P4执行完成之后,需要通知P6,实现V操作,为V(S5)
对于进程P5,开始之前需要申请资源S4,实现P(S4),P5执行完成之后,需要通知P6,实现V操作,为V(S6)
对于进程P6,开始之前需要申请资源S5和S6,实现两个P操作,分别为P(S5)和P(S6)

24、在磁盘上存储数据的排列方式会影响I/O服务的总时间。假设每个磁道被划分成10个物理块,每个物理块存放1个逻辑记录。逻辑记录R1,R2…R10存放在同一个磁道上,记录的排列顺序如下表所示。
在这里插入图片描述
假定磁盘的旋转速度为10ms/周,磁头当前处在R1的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为2ms,则处理这10个记录的最长时间为(1);若对存储数据的排列顺序进行优化,处理10个记录的最少时间为(2)。
(1)
A、30ms
B、60ms
C、94ms
D、102ms
(2)
A、30ms
B、60ms
C、102ms
D、94ms
参考答案:D、A
答案解析:

  • 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。
  • 盘面中一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区。扇区是磁盘的最小组成单元,通常是512字节。(由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节)
  • 硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。
  • 存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
  • 磁盘块/簇(虚拟出来的)是操作系统中最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘块。通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。
  • 为什么存在磁盘块?
    1. 读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作
    2. 分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。
  • 操作系统经常与内存和硬盘这两种存储设备进行通信,类似于“块”的概念,都需要一种虚拟的基本单位。所以,与内存操作,是虚拟一个页的概念来作为最小单位。
  • 扇区: 硬盘的最小读写单元
  • 块/簇: 是操作系统针对硬盘读写的最小单元
  • page: 是内存与操作系统之间操作的最小单元
  • 扇区 <= 块/簇 <= 页

分析本题

  • 读取速度 = 10 / 10 = 1ms
  • 最长时间情况:
    1)第一条记录 = 1【读取】+ 2【处理】 = 3ms
    2)第二条记录,此时磁头走了 1ms 读取时间,2ms 处理时间,走了 3 块距离,来到第4块 R4 的开始位置,如果需要到 R2 必须走一圈,也就是需要经过 R4,R5,R6,…,R10,R1 共 8 块。每块要花 1ms,因此 1* 8 = 8 ms。再加上读取时间和处理时间,也就是等于 = 8 + 1 + 2 = 11ms
    3)剩下的每一个都需要走一圈再读取和处理,就是花11ms,所以 t R 2 − R 10 = 9 ∗ 11 = 99ms
    4)总的时间 = 3 + 99 = 102ms
  • 优化分布:
    磁头读取和处理之后,直接读取下一块R2,以此顺序类推如图:
    在这里插入图片描述因此每个记录处理情况与第一条记录一致,为 1 + 2 = 3ms,总时间 = 3 * 10 = 30ms

25、以下关于增量模型优点的叙述中,不正确的是( )。
A、强调开发阶段性早期计划
B、第一个可交付版本所需要的时间少和成本低
C、开发由增量表示的小系统所承担的风险小
D、系统管理成本低、效率高、配置简单
参考答案:D
答案解析:

  • 增量模型也称为渐增模型,把软件产品作为一些列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。分解时唯一必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的。增量模型作为瀑布模型的一个变体,具有瀑布模型的所有优点。
  • 优点:
    1)第一个可交付版本所需要的成本和时间很少;
    2)开发由增量表示的小系统所承担的风险不大;
    3)由于很快发布了第一个版本,因此可以减少用户需求的变更;
    4)运行增量投资,即在项目开始时,可以仅对一个或两个增量进行投资。-- - 缺点:
    1)如果没有对用户变更的要求进行规划,那么产生的初始量可能会造成后来增量的不稳定;
    2)如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;
    3)管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

26、以下关于敏捷统一过程(AUP) 的叙述中,不正确的是( )。
A、在大型任务上连续
B、在小型活动上迭代
C、每一个不同的系统都需要一套不同的策略、约定和方法论
D、采用经典的UP阶段性活动,即初始、精化、构建和转换
参考答案:C
答案解析:
敏捷统一过程(AUP)采用“在大型上连续”以及在“小型上迭代”的原理来构建软件系统。采用经典的UP阶段性活动(初始、精化、构建和转换),提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流。在每个活动里,一个团队迭代了使用敏捷,并将有意义的软件增量尽可能快地交付给最终用户。

27、在ISO/IEC软件质量模型中,可移植性是指与软件可从某环境行移到另一环境的能力有关的一组属性,其子特性不包括( )。
A、适应性
B、易测试性
C、易安装性
D、易替换性
参考答案:B
答案解析:在这里插入图片描述
28、在软件开发过程中,系统测试阶段的测试目标来自于( )阶段。
A、需求分析
B、概要设计
C、详细设计
D、软件实现
参考答案:A
答案解析:
测试的目标是从需求分析开始。从需求开始时就已经确定了产品的功能、用户场景、用户使用的功能。

29、信息系统的文档是开发人员与用户交流的工具。在系统规划和系统分析阶段,用户与系统分析人员交流所使用的文档不包括( )。
A、可行性研究报告
B、总体规划报告
C、项目开发计划
D、用户使用手册
参考答案:D
答案解析:
本题考查软件开发工程需求分析相关问题。

用户与系统分析人员交流所使用的文档可以包括以下:

  • 可行性研究报告:可行性研究报告是从事一种经济活动(投资)之前,双方要从经济、技术、生产、供销直到社会各种环境、法律等各种因素进行具体调查、研究、分析,确定有利和不利的因素、项目是否可行,估计成功率大小、经济效益和社会效果程度,为决策者和主管机关审批的上报文件。
  • 总体规划报告:至少包括市场/客户、新产品、人(引进、培养)、设备、成本等方面,也是需求分析和客户人员之间交流所使用或参考的文档。
  • 项目开发计划:是指通过使用项目其他专项计划过程所生成的结果(即项目的各种专项计划),运用整合和综合平衡的方法,制定出用于指导项目实施和管理的整合性、综合性、全局性、协调统一的整合计划文件。

用户使用手册是详细描述软件的功能、性能和用户界面,使用户了解到如何使用该软件的说明书,一般是开发完成之后交付给客户的。

30、如下所示代码(用缩进表示程序块),要实现语句覆盖,至少需要(1)个测试用例。采用McCabe度量法计算该代码对应的程序流程图的环路复杂性为(2)。

 input A,n

for i = 2 to n

        key = A[i]

        j = i-1

        while j > 0 and A[j]>key

                  A[j+1]=A[j]

                  j = j-1

        A[j+1] = key

(1)
A、1
B、2
C、3
D、4

(2)
A、2
B、1
C、3
D、4
参考答案:A、C
答案解析:
针对于伪代码而言,我们具体能够根据其关系判断,做得应该是将一组数据,按照从小到大的顺序进行排序的过程,实质是属于插入排序的算法。

首先对于第一个问题,要实现语句覆盖,至少需要多少个测试用例,我们只需要一组数据就能够得到不断重复排序后的输出结果。

流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
V(G)=13-12+2=3
在这里插入图片描述

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@ZhangJun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值