[高频考点]2024年10月软件水平考试考试《(中级) 软件设计师》高频考点学习打卡

|类别:软件水平考试

【单选题】机器字长为n位的二进制数可以用补码来表示( )个不同的有符号定点小数

A、2n

B、2n-1

C、(2n)-1

D、2n-1+1

答案:A

解析:本题考查计算机体系结构中计算机科学基础内数据的表示知识点。各种码制下带符号数的表示范围如下表所示。补码表示定点小数,范围是:[-1,(1-2^(-n+1))],这个范围一共有2n个数


【单选题】当执行函数时,其局部变量的存储一般采用( )进行存储。

A、树形结构

B、静态链表

C、栈结构

D、队列结构

答案:C

解析:调用函数时,系统会为调用者构造一个由参数表和返回地址组成的活动记录,并将记录压入系统提供的栈中,若被调用者有局部变量,也要压入栈中。


【单选题】用某排序方法对一元素序列进行非递减排序时,若该方法可保证在排序前后排序码相同者的相对位置不变,则称该排序方法是稳定的。简单选择排序法排序方法是不稳定的,(61)可以说明这个性质。

A、21 48 21*63 17

B、17 21 21*48 63

C、63 21 48 21*17

D、21*17 48 63 21

答案:A

解析:本题考查数据结构基础知识。简单选择排序算法的思想是:首先在所有记录中选出码最小的记录,把它与第1个记录交换,然后在其余的记录内选出排序码最小的记录,与第2个记录交换…依次类推,直到所有记录排好序。直接选择排序的平均时间复杂度O(n2),是不稳定的排序。第一趟下来,第一个一定是最小的或者最大关键字。算法程序: /*将数组data中n个整数按非递减有序的方式进行排序*/ void SelectSort(intdate[],intn) { inti,j,k,temp; for(i=0;i<n-1;i++){ k=i;//data[k]表示当前找到的最小数 for(j=i+1;j<n;j++){if(data[j]<data[k])k=j;} if(k!=i){temp=data[i];data[i]=data[k];data[k]=temp;} } } 根据以上算法,A选项的数序列经过4次排序,i=4,使用i<n-1(n-1值为4)不成立而退出整个排序算法。从最终结果看,21*排序之前位于21之后,而排序之后则位于21之前,故A选项可说明简单选择排序是不稳定的算法。同理B、C、D三个选项,排序结果中21*与21的先后顺序与排序前一样,本题选择A选项。


【单选题】设栈S和队列Q的初始状态为空,元素a b c d e f g依次进入栈S。要求每个元素出栈后立即进入队列Q,若7个元素出队列的顺序为b d f e c a g,则栈S的容量最小应该是(58)。

A、5

B、4

C、3

D、2

答案:B

解析:本题考查数据结构基础知识。栈的特点是数据在栈顶后进先出,而队列的特点是数据先进先出,队头出,队尾进。根据题目意思,元素abcdefg必须依次进入栈S,出栈后立即进入队列Q。 1.根据7个元素出队列的顺序为bdfecag,可知元素b是第一个出栈的,b出栈之前,栈中肯定有两个元素a与b(b要进栈,a必须先进栈),到此可推出栈的容量至少为2; 2.元素b出栈后栈中还有a,根据7元素出队列顺序,接下来是d出栈,d出栈之前,栈中肯定有三个元素a、c、d(d要进栈,c必须先进栈,而a之前就在栈底),到此可推出栈的容量至少为3; 3.元素d出栈后栈中还有a、c(从栈底至栈顶方向),根据7元素出队列顺序,接下来是f出栈,f出栈之前,栈中肯定有三个元素a、c、e、f(f要进栈,e必须先进栈,而a、c之前就在栈中),到此可推出栈的容量至少为4; 4.元素f出栈后栈中还有a、c、e(从栈底至栈顶方向),根据7元素出队列顺序,接下来是e出栈; 5.元素e出栈后栈中还有a、c(从栈底至栈顶方向),根据7元素出队列顺序,接下来是c出栈; 6.元素c出栈后栈中还有a,根据7元素出队列顺序,接下来是a出栈; 7.元素a出栈后栈为空,根据7元素出队列顺序,接下来是g入栈,然后出栈。根据以上分析,栈的容量最小应为4。


【单选题】在设计软件的模块结构时,( )不能改进设计质量

A、尽量减少高扇出结构

B、尽量减少高扇入结构

C、将具有相似功能的模块合并

D、完善模块的功能

答案:D

解析:在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则: (1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小使其实现代码在1~2页纸之内,或者其实现代码行数在50~200行之间,这种规模的模块易于实现和维护。 (2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3或4,不应该超过7,否则会增大出错的概率。 (3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。 在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则: (1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小使其实现代码在1~2页纸之内,或者其实现代码行数在50~200行之间,这种规模的模块易于实现和维护。 (2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3或4,不应该超过7,否则会增大出错的概率。 (3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。


【单选题】嵌入式系统初始化过程主要有3个环节,系统级初始化主要任务是( )

A、完成嵌入式微处理器的初始化

B、完成嵌入式微处理器以外的其他硬件设备的初始化

C、以软件初始化为主,主要进行操作系统的初始化

D、设置嵌入式微处理器的核心寄存器和控制寄存器工作状态

答案:C

解析:系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。 系统初始化:该初始化过程以软件初始化为主,主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口


【单选题】In a world where it seems we already have too much to do, and too many things to think about, it seems the last thing we need is something new that we have to learn. But use cases do solve a problem with requirements:with (71) declarative requirements it"s hard to describe steps and sequences of events. Use cases, stated simply, allow description of sequences of events that, taken together, lead to a system doing something useful.As simple as this sounds,this is important. When confronted only with a pile of requiements, it"s often(72)to make sense of what the authors of the requirements really wanted the system to do.In the preceding example, use cases reduce the ambiguity of the requirements by specifying exactly when and under what conditions certain behavior occurs;as such, the sequence of the behaviors can be regarded as a requirement. Use cases are particularly well suited to capture approaches. Although this may sound simple, the fact is that (73) requirement capture approaches, with their emphasis on declarative requirements and "shall" statements,completely fail to capture fail to capture the (74) of the system"s behavior. Use cases are a simple yet powerful way to express the behavior of the system in way that all stakeholders can easily understand. But,like anything, use cases come with their own problems, and as useful as they are,they can be (75). The result is something that is as bad, if not worse, that the original problem.Therein it"s important to utilize use cases effectively without creating a greater problem than the one you started with.

A、statics

B、nature

C、dynamics

D、originals

答案:C

解析:在这个世界上,似乎我们有太多的事情要去做,有太多的事情要去思考,那么需要做的最后一件事就是必须学习新事物。 而用例恰恰可以解决带有需求的问题:如果具有严格声明的需求,则很难描述事件的步骤和序列。 简单地说,用例可以将事件序列的说明放在一起,引导系统完成有用的任务。正如听起来一样简单---这很重要。在面对很多需求的时候,通常不太可能理解需求的作者真正想要系统做什么。在前面的例子中,通过指定特定行为发生的时间和条件,用例减少了需求的不确定性。这样的话,行为的顺序就可以当作是一种需求。用例特别适用于捕捉这类需求。尽管听起来可能很简单,但事实情况是由于常规的需求捕捉方法所侧重的是声明需求和“应该怎么样”的陈述,因此完全无法捕捉系统行为的动态方面。用例是一种简单而有效的表达系统行为的方式,使用这种方式所有参与者都很容易理解。 但是与任何事物一样,用例也存在自己的问题---在用例非常有用的同时,人们也可能误用它,结果就产生了比原来更为糟糕的问题。因此重点在于:如何有效地使用用例,而又不会产生比原来更严重的问题


【单选题】设有一个包含n个元素的有序线性表。在等概率情况下删除其中的一个元素,若采用顺序存储结构,则平均需要移动(请作答此空)个元素;若采用单链表存储,则平均需要移动( )个元素。

A、1

B、(n-1)/2

C、Logn

D、n

答案:B


【单选题】

A、A

B、B

C、C

D、D

答案:B

解析:串联系统可靠性公式为:R=R1×R2×...×Rn 并联系统可靠性公式为:R=1-(1-R1)×(1-R2)×...×(1-Rn)


【单选题】编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,( )并不是每个编译器都必需的

A、词法分析和语法分析

B、语义分析和中间代码生成

C、中间代码生成和代码优化

D、代码优化和目标代码生成

答案:C

解析:在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的