软件设计师高频真题-2

在这里插入图片描述
解析:
串行的计算公式为:(取值时间+分析时间+执行时间) x 指令的个数;
流水线的计算公式为:(取值时间+分析时间+执行时间) + (n-1) x 流水线周期;
n的意思为指令的个数,流水线周期的意思为取值,分析,执行三条执行过程中花费时间最多的那条;

此题流水线:(5+2+3)△t + (500-1) x 5△t = 10△t + 2495△t = 2505△t

参考:串行和流水线两种方式计算指令的执行时间


在这里插入图片描述
解析:考查程序语言基础知识。函数调用与函数本身的关联,以及成员访问与变量内存地址间的联系,称为绑定。在计算机语言中有两种主要的绑定方式︰静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,程序执行之前。静态绑定发生于编译期,编译时绑定,通过对象调用,因此不能运用任何运行期的信息。它针对函数调用与函数的主体,或变量与内存中的区块。动态绑定则是运行时绑定,通过地址实现,只用到运行期的可用信息。题目中把过程调用和响应调用所需要执行的代码加以结合发生在编译后,所以属于动态绑定。

在这里插入图片描述

解析: 程序计数器(Program Counter,简称PC)是用于存放下一条指令所在单元的地址的地方。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。


在这里插入图片描述
解析: 本题对于R资源可用数为8,分配到3个进程中,为了让最后的i值最小,所以每个进程尽量平均分配,可以得到3、3、2的分配情况,此时如果假设i的取值为3,则必定不会形成死锁。当i>3时系统会形成死锁,此时取整,即最小i值为4。


例题
某文件系统采用索引节点管理,其磁盘索引块和磁盘数据块大小均为 1KB 字节且每个文件索引节点有 8 个地址项 iaddr[0]~iaddr[7],每个地址项大小为 4 字节,其中 iaddr[0]~iaddr[4]采用直接地址索引,iaddr[5]和 iaddr[6]采用一级 间接地址索引,iaddr[7] 采用二级间接地址索引。若用户要访问文件 userA 中 逻辑块号为 4 和 5 的信息,则系统应分别采用(25 ), 该文件系统可表示的单 个文件最大长度是( 26)KB。

A、直接地址访问和直接地址访问

B、直接地址访问和一级间接地址访问

C、一级问接地址访问和一级间接地址访问

D、一级间接地址访问和二级间接地址访问

A、517 B、1029 C、65797 D、66053

解析:BD

在这里插入图片描述
在这里插入图片描述

5 + 2256 + 1256*256 = 66053

参考链接: 磁盘块,索引节点管理,直接地址访问,一级间接地址访问,二级间接地址访问

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

解析: 本题考查软件设计的相关知识。耦合和内聚是衡量软件模块独立性的重要指标。其中耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。
数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
标记耦合:指两个模块之间传递的是数据结构。
控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能。因此,被调用模块内应具有多个功能,选择哪个功能起作用受调用模块控制。
内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。


在这里插入图片描述
解析:
快速排序: 快速排序通过一次排序将待排序数组分割成独立的两部分,其中一部分的所有元素比另一部分的所有元素要小,再按这种方式对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到整个数组有序。具体分析
冒泡排序: 基本思想是对待排序的元素从前向后依次比较相邻的两个元素,如果顺序不对则交换它们的位置,一轮比较下来,最大的元素就会“冒泡”到数组的末尾。重复这个过程,直到没有需要交换的元素为止,排序完成。具体分析
插入排序: 基本思想是将一个元素插入到已经排好序的部分数组中,从而逐步扩大有序部分。具体分析


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

解析:

白盒测试法的覆盖标准有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
语句覆盖发现错误能力最弱。
语句覆盖用于确保软件代码的每一行都经过了测试。简单来说,就是检查程序中的每一个语句(或代码行)都被至少执行了一次。

判定覆盖包含了语句覆盖,但它可能会使一些条件得不到测试。

条件覆盖对每一条件进行单独检查,一般情况它的检错能力较判定覆盖强,但有时达不到判定覆盖的要求。

判定/条件覆盖包含了判定覆盖和条件覆盖的要求,但由于计算机系统软件实现方式的限制,实际上不一定达到条件覆盖的标准。

条件组合覆盖发现错误能力较强,凡满足其标准的测试用例,也必须满足前四种覆盖标准。

前五种覆盖标准把注意力集中在单个判定或判定的各个条件上,可能会使程序某些路径没有执行到。

路径覆盖根据各判定表达式取值的组合,使程序沿着不同的路径执行,查错能力强。但由于它是从各判定的整体组合出发设计测试用例的,可能使测试用例达不到条件组合覆盖的要求。根据各判定表达式取值的组合;使程序沿着不同的路径执行,查错能力强。但由于它是从各判定的整体组合出发设计测试用例的,可能使测试用例达不到条件组合覆盖的要求。

在这里插入图片描述

正确答案:B
解析:
非对称密钥也叫公开密钥加密,它是用两个数学相关的密钥对信息进行编码的。在此系统中,其中一个密钥叫公开密钥,可随意发给期望同密钥持有者进行安全通信的人。公开密钥用于对信息加密。第二个密钥是私有密钥,属于密钥持有者,此人要仔细保存私有密钥。密钥持有者用私有密钥对收到的信息进行解密。
对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密、解密密钥是相同的。

简而言之,对称加密是使用相同的密钥加密和解密消息,而非对称加密则是使用不同的密钥对进行加密和解密。对称加密速度快,但密钥分发不安全;非对称加密相对较慢,但更安全,因为不需要共享密钥。

DES算法(Data Encryption Standard,又称数据加密标准): 对称加密算法。在设计上,DES采用了Feistel结构。 DES是一个分组密码算法,明文和密文的长度相同,分组长度为64位。
RSA算法:非对称加密算法 ,原理是根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。为提高保密强度,RSA密钥至少为500位长。
AES加密算法(Advanced Encryption Standard,又称高级加密标准): 对称加密算法,也称为高级加密标准。AES加密算法使用128位、192位或256位密钥对数据进行加密和解密,具有高强度、高速度和易于实现等优点。
MD5信息摘要算法(MD5 Message-Digest Algorithm): MD5实际上既不是对称加密算法,也不是非对称加密算法。它是消息摘要(安全散列)算法。它是 一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。


在这里插入图片描述
解析:
词法分析阶段处理的错误:非法字符、单词拼写错误等。

语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。
静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。本题选择语义错误。
目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。


在这里插入图片描述

解析: 在软件外部,可以用MITR来度量软件的可维护性,它指出处理一个有错误的软件需要花费的平均时间如果用M表示可维护性指标,那么M=1/(1+MTTR)。本题选择D选项。
A选项一般用来表示可靠性或可用性指标。


在这里插入图片描述

解析:
完全二叉树是让二叉树的每一层的结点都尽可能全满,除了最底层,此时树的高度一定是最小的

二叉排序树可能会得到单枝树,每一层只有1个结点,此时树的高度可能最大
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。
给定一个二叉树,如果满足以下条件,那就是二叉排序树:
若它的左子树不空,则左子树上所有结点的值均小于它根结点的值。
若它的右子树不空,则右子树上所有结点的值均大于它根结点的值。
它的左、右子树都满足为⼆叉排序树。
在这里插入图片描述

参考:数据结构-----二叉排序树

线索二叉树与二叉树遍历序列相关,高度并没有确定性
线索二叉树(或引线二叉树,Threaded BinaryTree)是添加了直接指向节点的前驱和后继指针的二叉树。我们知道在二叉树中每个节点都有两个指针,分别指向左子树和右子树。如果某个节点只有一个子节点,那么它有一个指针是指向空的,如果某个节点是叶子节点,那么他的两个指针都指向空。这些空的指针能不能被利用起来呢?当然是可以的。
如果一个节点的左指针为空,就让他左指针指向他的前驱节点,如果一个节点的右指针为空,就让他右指针指向他的后继节点。这样构造的二叉树就是线索二叉树。

最优二叉树与结点的权值相关,构成的树的高度也是不确定的
当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。
在构建哈弗曼树时,要使树的带权路径长度最小,只需要遵循一个原则,那就是:权重越大的结点离树根越近。
参考:哈夫曼树(赫夫曼树、最优树)详解
本题选择B选项。


在这里插入图片描述
在这里插入图片描述

解析:
要想直接解决一个较大的问题,有时是相当困难的,分治法的设计思想是将一个难以解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。

动态规划法与分治法类似,其基本思想也是将带求解问题分解为若干个子问题,先求解子问题再从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。此时用一个中间表记录重复子问题的解,可以避免大量的重复计算。这就是动态规划法的基本思路。动态规划法的应用场景一般会出现“最优子结构”的描述,并且针对重复子问题的计算通过记录-查表,可以提高效率。本题第一空描述的是c选项动态规划法。

贪心法也经常用于解决最优化问题,与之不同的是,贪心法在解决问题的策略上是仅根据当前已有的信息做出选择,而且一旦做出选择,无论未来如何都不会改变。也就是只考虑当前最优,不考虑全局最优。一般不涉及划分和求解重复子问题。

回溯法可以系统地搜索一个问题的所有解或任意解。它在包含问题的解空间树中,按照深度优先的策略的策略,从根结点出发搜索解空间树。

分支限界法类似子回溯法,也是一种在问题的解空间树T上搜索问题解的算法,但在一般情况下,分支限界法与回溯法的求解目标不同。分支限界法的求解目标是找出满足约束条件的一个解即可。由于求解目标不同,其探索方式与回溯法也不同,分支限界法以广度优先或以最小耗费优先的方式搜索解空间树。本题第二空描述的是D选项分支限界法。


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
解析: 我国著作权法在第10条对权利内容作了较为详尽而具体的规定,指明著作权的内容包括人身权利和财产权利。著作人身权是指作者享有的与其作品有关的以人格利益为内容的权利,也称为精神权利,包括发表权、署名权、修改权和保护作品完整权。 著作人身权与作者的身份紧密联系,永远属于作者本人,即使作者死亡,其他任何人不能再拥有它。 所以,我国著作权法第20条规定"“作者的署名权、修改权、保护作品完整权的保护期不受限制。”

发表权是属于人身权利,但发表权是一次性权利,即发表权行使一次后,不再享有发表权。 发表权是指决定作品是否公之于众的权利,作品一经发表,就处于公知状态,对处于公知状态的作品,作者不再享有发表权,以后再次使用作品与发表权无关,而是行使作品的使用权。


在这里插入图片描述

解析: 这篇文章解释得很清楚,力推!=>【操作系统】资源分配图化简法—死锁的检测方法
进程分为5种状态:创建状态、就绪状态、运行状态、阻塞状态、终止状态。
在这里插入图片描述

在这里插入图片描述
解析:
插入排序: 基本思想是将一个元素插入到已经排好序的部分数组中,从而逐步扩大有序部分。具体分析
计数排序算法:基本思想是利用数组索引号有序的原理。具体分析


在这里插入图片描述

解析: 计算机系统中的CPU内部对通用寄存器的存取速度最快,其次是Cache,内存的存取速度再次,选项中访问速度最慢的就是作为外存的硬盘。 它们共同组成分级存储体系来解决存储容量、成本和速度之间的矛盾。

在这里插入图片描述


在这里插入图片描述

解析: 其实各种高级语言全局变量存储空间分配差不太多,以C语言为例:
在这里插入图片描述
参考:C语言程序内存四区——栈区,堆区,全局区,代码区

在这里插入图片描述
在这里插入图片描述

解析: UML中的时候含有的四种关系是:

依赖Dependency: 依赖关系描述两个模型(类、用例等)之间的语义关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变,将影响依赖于它的元素。

关联Association: 是一种结构化的关系,指一种对象和另一种对象有联系,给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象。

泛化Generalization: 泛化关系体现的是一种继承关系。子类泛化出父类,而父类特化出的子类拥有父类所有的属性和方法。

实现realization: 将一种模型元素和另一种模型元素连接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。

参考:UML四种关系

在这里插入图片描述

用例图: 描述的是外部执行者(Actor)所理解的系统功能。用例图用于需求分析阶段。
在这里插入图片描述

状态图(State Diagram ):
在这里插入图片描述

部署图:
在这里插入图片描述


在这里插入图片描述
解析:
词法分析阶段处理的错误:非法字符、单词拼写错误等。

语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。
静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。本题选择语义错误。
目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。

编译∶ 在编译方式中,将高级语言的源程序翻译成目标程序的软件称为"编译程序”,这种翻译过程称为“编译”。在翻译过程中,编译程序将源程序翻译成“目标程序”,“目标程序"经过连接和定位后生成“可执行文件”,通过执行“可执行文件”得到编译结果。

编译型语言: 常见的编译型语言包括C、C++、Java。
编译过程:编译型语言的源代码需要先经过编译器的处理,将其转换为目标平台的机器码或字节码。这个编译过程发生在程序运行之前,生成的可执行文件可以独立地在目标平台上运行。

解释︰ 在解释方式中,将高级语言的源程序翻译和执行的软件称为“解释程序"。解释程序不是对整个源程序进行翻译,也不生成目标程序,而是将源程序逐句解释,边解释边执行。如果发现错误,给出错误信息,并停止解释和执行;如果没有错误,解释执行到最后一条语句。解释方式对初学者较有利,便于查找错误,但效率较低。

解释型语言: 常见的解释型语言包括Python、Ruby、JavaScript等。
解释过程:解释型语言的源代码在运行时逐行被解释器解释执行,无需显式的编译过程。解释器将源代码逐行翻译成机器码或字节码,并立即执行。


在这里插入图片描述
**解析:**递归下降法是一种自顶向下的语法分析方法,通过构建递归子程序来解析输入的语法串。该方法可以分为两个步骤:构建语法树和构建语法分析器。

在这里插入图片描述
在这里插入图片描述
解析:
二叉树的四种遍历详解(先序,中序,后序,层次)
满二叉树与完全二叉树的区别

判断平衡二叉树:数据结构-----平衡二叉树

  1. 是二叉排序树
  2. 任何一个节点的左子树或者右子树都是平衡二叉树,而且左右高度差小于等于 1。
    (1)这个不是平衡二叉树, 因为右子树比左子树高度差大于2。
    在这里插入图片描述

(2)这个不是平衡二叉树,因为没有符合二叉排序树的要求。
在这里插入图片描述

(3)这个是平衡二叉树,既满足二叉排序树的要求,而且左右子树高度差小于2。
在这里插入图片描述


在这里插入图片描述

解析: 程序计数器、指令寄存器和指令译码器都是CPU中控制单元的部件,加法器是算术逻辑运算单元的部件。


在这里插入图片描述

解析: 不同机器有不同的指令系统从计算机指令系统设计角度,可将计算机分为复杂指令系统计算机CISC(Complex InstrucTIon Set Computer)和精简指令系统计算机RISC(Reduced InstrucTIon Set Computer),CISC是为了弥补高级语言程序和机器语言程序之间的差异,RISC指令系统是CISC指令系统的改进。

在这里插入图片描述
参考:计组 | RISC与CISC


在这里插入图片描述

解析: 软件系统可以划分为若干个小的简单的功能模块,每个模块可以独立开发、测试。
内聚是指模块内部各元素之间联系的紧密程度。内聚度越低,模块的独立性越差。
内聚按紧密程度由低到高排列依序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内骤、功能内聚。 其中,偶然内聚也称为巧合内聚,是指完成一组没有关系或松散关系的任务。

依题意,模块D中的5条语句相互之间没有联系,因此模块D的内聚类型为偶然内聚(或巧合内聚)。

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值