笔记 笔记
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

EasT-Duan

Java 开发
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

购买兑换码请添加

添加时候请写好备注,否则无法通过。

  • Java 核心技术面试精讲

  • Java 业务开发常见错误 100 例

  • MySQL 实战 45 讲

  • OAuth 2.0 实战课

  • Redis 核心技术与实战

  • 软考专栏

    • 计算机系统
    • 程序设计语言
    • 数据结构
    • 知识产权
    • 数据库
    • 面向对象
    • UML
    • 设计模式
    • 操作系统
    • 结构化开发
    • 软件工程
    • 计算机网络
    • 上午题错题

      • 2023年上半年
      • 2022年下半年
        • 2022年上半年
        • 2021年下半年
        • 2021年上半年
        • 2020年下半年
    • 专栏
    • 软考专栏
    • 上午题错题
    EasT-Duan
    2023-11-03
    目录

    2022年下半年

    欢迎来到我的 ChatGPT 中转站,极具性价比,为付费不方便的朋友提供便利,有需求的可以添加左侧 QQ 二维码,另外,邀请新用户能获取余额哦!最后说一句,那啥:请自觉遵守《生成式人工智能服务管理暂行办法》。

    # 一、计算机系统中采用补码表示有符号的数值,(6)。

    A. 可以保持加法和减法运算过程与手工运算方式一致

    B. 可以提高运算过程和结果的精准程度

    C. 可以提高加法和减法运算的速度

    D. 可以将减法运算转换为加法运算从而简化运算器的设计

    # 二、X.509 数字证书标准推荐使用的密码算法是 (8) ,而国密 SM2 数字证书采用的公钥 密码算法是 (9) 。

    (8) A. RSA B. DES C. AES D. ECC

    (9) A. RSA B. DES C. AES D. ECC

    # 三、某零件厂商的信息系统中,一个基本加工根据客户类型、订单金额、客户信用等信息的 不同采取不同的行为,此时最适宜采用 (15) 来描述该加工规格说明。

    (15) A. 自然语言 B. 流程图 C. 判定表 D. 某程序设计语言

    # 四、优化模块结构时, (16) 不是适当的处理方法。

    A. 使模块功能完整

    B. 消除重复功能,改善软件结构

    C. 只根据模块功能确定规模大小

    D. 避免或减少模块之间的病态连接

    # 五、当函数调用执行时,在栈顶创建且用来支持被调用函数执行的一段存储空间称为活动记 录或者栈帧,栈帧中不包括 (20) 。

    (20) A. 形参变量 B. 全局变量 C. 返回地址 D. 局部变量

    笔记

    当函数被调用时,会在栈顶创建一个栈帧来存储函数执行所需的信息。这个栈帧通常包括以下内容:

    A. 形参变量:这是函数调用时传递给函数的参数,它们会被存储在栈帧中。

    C. 返回地址:当函数执行完毕后,程序需要知道接下来应该跳转到哪里继续执行,这个地址就是返回地址,它也会被存储在栈帧中。

    D. 局部变量:这些是在函数内部声明的变量,它们只在函数执行期间存在,因此也会被存储在栈帧中。

    然而,B. 全局变量并不包含在栈帧中。全局变量在整个程序执行期间都是存在的,它们通常被存储在一个全局内存区域中,而不是存储在特定的函数栈帧中。

    # 六、对高级语言源程序进行编译或解释的过程中需要进行语法分析,递归子程序分析属于 (22) 的分析法。

    (22) A. 自上而下 B. 自下而上 C. 从左至右 D. 从右至左

    笔记

    递归子程序分析是一种自上而下的分析方法。

    # 七、在计算机系统中,若 P1 进程正在运行,操作系统强行撤下 P1 进程所占用的 CPU,让 具有更高优先级的进程 P2 运行,这种调度方式称为 (23) 。

    (23) A. 中断方式 B. 先进先出方式 C. 可剥夺方式 D. 不可剥夺方式

    笔记

    可剥夺方式是一种调度方式,当一个进程正在运行时,如果有更高优先级的进程需要运行,操作系统可以强行撤下当前正在运行的进程所占用的 CPU,让具有更高优先级的进程运行。这就是题目描述的情况。

    其他选项 A、B 和 D 都不符合题目描述的情况。

    中断方式通常指的是当外部事件(如 I/O 操作完成)发生时,CPU 会暂停当前正在执行的进程,转而去处理这个事件。

    先进先出方式是一种调度策略,它按照进程到达的顺序来决定哪个进程应该先运行。

    而不可剥夺方式则是指一旦一个进程开始运行,除非它自己放弃 CPU 或者完成执行,否则其他进程不能剥夺它的 CPU。

    # 八、以下关于快速原型模型优点的叙述中,不正确的是 (29) 。

    A. 有助于满足用户的真实需求

    B. 适用于大型软件系统的开发

    C. 开发人员快速开发出原型系统,因此可以加速软件开发过程,节约开发成本

    D. 原型系统已经通过与用户的交互得到验证,因此对应的规格说明文档能正确描述用户需求

    笔记

    A. 有助于满足用户的真实需求:这是正确的。通过创建一个原型,开发人员可以更早地获取用户的反馈,从而更好地理解用户的需求,并在最终产品中满足这些需求。

    B. 适用于大型软件系统的开发:这是不正确的。快速原型模型通常更适合小到中型的项目,因为在大型项目中,原型可能会变得过于复杂和难以管理。

    C. 开发人员快速开发出原型系统,因此可以加速软件开发过程,节约开发成本:这是正确的。通过早期创建原型,可以避免在项目后期进行昂贵的大规模修改。

    D. 原型系统已经通过与用户的交互得到验证,因此对应的规格说明文档能正确描述用户需求:这是正确的。原型可以作为一种验证工具,帮助确保规格说明文档准确地反映了用户的需求。

    # 九、以下关于三层 C/S 结构的叙述中,不正确的是 (30) 。

    A. 允许合理划分三层结构的功能,使之在逻辑上保持相对独立性,提高系 统的可维护性和可扩展性

    B. 允许更灵活有效地选用相应的软硬件平台和系统

    C. 应用的各层可以并发开发,但需要相同的开发语言

    D. 利用功能层有效地隔离表示层和数据层,便于严格的安全管理

    笔记

    解释如下: 三层 C/S 结构通常包括表示层(客户端)、业务逻辑层(服务器)和数据层(数据库)。这种结构的优点包括:

    A. 允许合理划分三层结构的功能,使之在逻辑上保持相对独立性,提高系统的可维护性和可扩展性:这是正确的。每一层都有其特定的职责,可以独立地进行修改和扩展,而不会影响其他层。

    B. 允许更灵活有效地选用相应的软硬件平台和系统:这也是正确的。由于每一层都是相对独立的,因此可以根据需要选择最适合每一层的技术和平台。

    D. 利用功能层有效地隔离表示层和数据层,便于严格的安全管理:这也是正确的。业务逻辑层在表示层和数据层之间起到了桥梁的作用,可以实现对数据访问的严格控制,提高系统的安全性。

    然而, C. 应用的各层可以并发开发,但需要相同的开发语言:这是不正确的。虽然三层 C/S 结构确实允许各层并发开发,但并不要求所有层都使用相同的开发语言。实际上,由于每一层都可以独立选择最适合其需求的技术和平台,因此它们可以使用不同的开发语言。

    # 十、《计算机软件保护条例》第八条第一款第八项规定的软件著作权中的翻译权是将原软件 由 (13) 的权利。

    A. 源程序语言转换成目标程序语言

    B. 一种程序设计语言转换成另一种程序设计语言

    C. 一种汇编语言转换成一种自然语言

    D. 一种自然语言文字转换成另一种自然语言文字

    # 十一、若模块 A 和模块 B 通过外部变量来交换输入、输出信息,则这两个模块的耦合类型是 (31) 耦合。

    (31) A. 数据 B. 标记 C. 控制 D. 公共

    笔记

    • 如果模块 A 和模块 B 通过外部变量来交换输入和输出信息,这种耦合类型被称为公共耦合。公共耦合表示模块之间共享变量或数据,并且一个模块的改动可能会影响到其他模块的功能。这种耦合类型可能会使代码难以维护和修改,因为对一个模块的修改可能会导致意想不到的结果或导致其他模块的故障。为了减少耦合,推荐使用更加独立和封闭的方法来实现模块间的通信和数据交换,例如通过函数参数传递或使用接口来定义模块之间的接口。

    • A. 数据耦合(Data Coupling):模块 A 和模块 B 之间的耦合是通过共享数据实现的。这意味着模块 A 传递数据给模块 B,或者两个模块共享一些公共的数据结构。这种耦合形式通常是较弱的,因为模块直接依赖于特定的数据格式和内容。

    • B. 标记耦合(Stamp Coupling):模块 A 和模块 B 之间的耦合是通过共享标记或标识符实现的。标记可以是共享的常量、枚举值或某种代码标签。这种耦合形式也较弱,因为模块之间仅需对标记达成共识即可,而无需对具体实现细节进行了解。

    • C. 控制耦合(Control Coupling):模块 A 和模块 B 之间的耦合是通过共享控制信息或传递控制命令实现的。这意味着一个模块在执行过程中会影响另一个模块的行为,例如通过函数调用或回调函数来传递控制信息。这种耦合形式较强,模块之间的关联较紧密,一个模块的改动可能会影响到另一个模块的行为。

    拓展:内容耦合:如果模块 A 通过非正常入口转入模块 B 内部,那么这两个模块之间的耦合被称为内容耦合。

    # 十二、白盒测试技术的各种覆盖方法中, (33) 具有最弱的错误发现能力。

    (33) A. 判定覆盖 B. 语句覆盖 C. 条件覆盖 D. 路径覆盖

    # 十三、文档是软件的重要因素,关于高质量文档,以下说法不正确的是 (34) 。

    A. 不论项目规模和复杂程度如何,都要用统一的标准指定相同类型和相同要素的文档

    B. 应该分清读者对象

    C. 应当是完整的、独立的、自成体系的

    D. 行文应十分确切,不出现多义性描述

    # 十四、采用面向对象方法进行某游戏设计,游戏中有野鸭、红头鸭等各种鸭子边游泳戏水边呱呱叫,不同种类的鸭子具有不同颜色,设计鸭子类负责呱呱叫和游泳方法的实现,显示颜色设计为抽象方法,由野鸭和红头鸭各自具体实现,这一机制称为 (37) 。当给这些类型的 一组不同对象发送同一显示颜色消息时,能实现各自显示自己不同颜色的结果,这种现象称 为 (38) 。

    (37) A. 继承 B. 聚合 C. 组合 D. 多态

    (38) A. 覆盖 B. 重载 C. 动态绑定 D. 多态

    # 十五、UML 活动图用于建模 (41) 。

    A. 系统在它的周边环境的语境中所提供的外部可见服务

    B. 某一时刻一组对象以及它们之间的关系

    C. 系统内从一个活动到另一个活动的流程

    D. 对象的生命周期中某个条件或者状态

    笔记

    A. 系统在它的周边环境的语境中所提供的外部可见服务:这是描述系统交互的外部视图,通常用于分析系统的边界和外部接口,称为系统顺序图或者系统交互图。

    B. 某一时刻一组对象以及它们之间的关系:这是描述对象及其关系的图,通常用于分析和设计系统的结构和组成,称为类图。

    C. 系统内从一个活动到另一个活动的流程:这是描述系统的行为和流程的图,通常用于分析和设计系统的业务流程,称为活动图。

    D. 对象的生命周期中某个条件或者状态:这是描述对象生命周期的图,通常用于分析和设计对象的状态变化和转换,称为状态图或者状态转换图。

    # 十六、UML 构件图(component diagram)展现了一组构件之间的组织和依赖,专注于系统的静态 (43) 图,图中通常包括构件、接口以及各种关系。

    (43) A. 关联 B. 实现 C. 结构 D. 行为

    # 十七、在某系统中,不同级别的日志信息记录方式不同,每个级别的日志处理对象根据信息级 别高低,采用不同方式进行记录。每个日志处理对象检查消息的级别,如果达到它的级别则 进行记录,否则不记录;然后将消息传递给它的下一个日志处理对象。针对此需求,设计如 下所示类图。该设计模式采用 (44) 模式使多个前后连接的对象都有机会处理请求,从而 避免请求的发送者和接收者之间的耦合关系。该模式属于(45)模式,该模式适用于(46)。

    (44) A. 责任链 B. 策略(Strategy) C. 过滤器(Filter) D. 备忘录(Memento)

    (45) A. 行为型类 B. 行为型对象 C. 结构型类 D. 结构型对象

    (46) A. 不同的标准过滤一组对象,并通过逻辑操作以解耦的方式将它们链接起来

    B. 可处理一个请求的对象集合应被动态指定

    C. 必须保存一个对象在某一个时刻的状态,需要时它才能恢复到先前的状态

    D. 一个类定义了多种行为,并且以多个条件语句的形式出现

    笔记

    A. 这是过滤器模式(Filter Pattern)的定义,也被称为标准(Criteria)模式,这种模式是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,然后通过逻辑操作以解耦的方式将它们链接起来。

    B. 这是责任链模式(Chain of Responsibility Pattern)的定义,它为请求创建了一个接收者对象的链。这种模式给予请求和处理之间的解耦,允许多个对象处理同一请求,或者为自动传递给链中的下一个对象提供隐式的接收者。

    C. 这是备忘录模式(Memento Pattern)的定义,这种模式在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可将该对象恢复到原先保存的状态。

    D. 这是策略模式(Strategy Pattern)的定义,策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

    # 十八、在 Python3 中, (48) 不是合法的异常处理结构。

    (48) A. try...except... B. try...except...finally C. try...catch... D. raise

    # 十九、Python3 中,表达式 list (range (11))[10:0:-2] 的值为 (49) 。

    (49) A. [10, 8, 6, 4, 2, 0] B. [10, 8, 6, 4, 2] C. [0, 2, 4, 6, 8, 10] D. [0, 2, 4, 6, 8]

    笔记

    range (11) 生成一个从 0 到 10 的序列,然后 list () 函数将其转化为列表。接着,列表切片 [10:0:-2] 从索引 10 开始(也就是最后一个元素),到索引 0(不包含 0)结束,步长为 - 2,所以取出的元素是 10,8,6,4,2。

    # 二十、设 m 和 n 是某二叉树上的两个结点,中序遍历时,n 排在 m 之前的条件是 (58) 。

    (58) A. m 是 n 的祖先结点 B. m 是 n 的子孙结点 C. m 在 n 的左边 D. m 在 n 的右边

    笔记

    在二叉树的中序遍历中,遍历的顺序是左子树 -> 根节点 -> 右子树。所以,如果 n 排在 m 之前,那么应该是 m 在 n 的右边,所以答案选 D。

    对于选项 B,m 是 n 的子孙节点并不一定能保证 n 在 m 之前。因为在中序遍历中,虽然子孙节点会在祖先节点之后遍历,但这只适用于左子树中的子孙节点。如果 m 是 n 的右子树中的节点,那么在中序遍历中,m 会在 n 之前遍历,因此 B 选项是错误的。

    # 二十一、折半查找在有序数组 A 中查找特定的记录 K:通过比较 K 和数组中的中间元素 A [mid] 进行比较,如果相等,则算法结束;如果 K 小于 A [mid],则对数组的前半部分进行折半查 找;否则对数组的后半部分进行折半查找。根据上述描述,折半查找采用了 (62) 算法设 计策略。对有序数组(3,14,27,39,42,55,70,85,93,98),成功查找和失败查找所 需要的平均比较次数分别是 (63) (假设查找每个元素的概率是相同的)。

    (62) A. 分治 B. 动态规划 C. 贪心 D. 回溯

    (63) A. 29/10 和 29/11 B. 30/10 和 30/11 C. 29/10 和 39/11 D. 30/10 和 40/11

    笔记

    首先要把这个有序数组(3,14,27,39,42,55,70,85,93,98)转成一棵树。

    步骤:

    1. 将数组标上下标,从 0 开始到 9。
    2. 将 0 和 9 标上 l 和 r ,然后找中间元素0+92=4\frac{0+9}{2} = 4​2​​0+9​​=4(向下取整)42 标上 m。
    3. 先从左边开始,r=m−1=4−1=3r = m - 1 = 4 - 1 = 3r=m−1=4−1=3,然后再找中间元素0+32=1\frac{0+3}{2}= 1​2​​0+3​​=1 = 14。因为 14 左边还有元素,然后继续 14 的左边,r=m−1=1−1=0r = m -1 = 1 -1 = 0r=m−1=1−1=0,中间元素就是0+02=0\frac{0+0}{2} = 0​2​​0+0​​=0 = 3。至此 14 的左边元素已经找齐,开始找 14 的右边元素,和上述一样的道理,只不过不变的是 r 了,l = m + 1,然后再找中间元素。
    4. 右半边和左半边一样只不过不变的是 r 了,l = m + 1,然后按照上述继续。
              42
           /     \
         14      85
       /   \    /   \
      3    27  55   93
              \   \    \
              39   70  98
    
    1
    2
    3
    4
    5
    6
    7
    • 第一层查找一次,第二层查找两次,第三层.........

    • 平均成功查找: 1×1+2×2+3×4+4×3=291\times1+2\times2+3\times4+4\times3 = 291×1+2×2+3×4+4×3=29

    • 平均失败查找:在叶子结点后补全子结点然后相加,比如 3 有两个子结点,27 有一个子结点.........,最终5×3+6×4=395\times3+6\times4 = 395×3+6×4=39,失败就是有序序列后面加一个所以为 11。

      gpt 这么说:对于失败查找,我们需要考虑查找路径最终落在每个元素之间、或者在所有元素之前或之后的情况,这样就有 11 个可能的失败查找的位置,所以平均比较次数为 39/11。

    # 二十二、采用 Dijkstra 算法求解下图 A 点到 E 点的最短路径,采用的算法设计策略是 (64) 。 该最短路径的长度是 (65) 。

    (64) A. 分治法 B. 动态规划 C. 贪心算法 D. 回溯法

    (65) A. 5 B. 6 C. 7 D. 9

    笔记

    第二问中:对于每一个邻居,哪个短就走哪个。

    二十三、VLAN tag 在 OSI 参考模型的 (66) 实现。

    (66) A. 网络层 B. 传输层 C. 数据链路层 D. 物理层

    笔记

    VLAN 标签(VLAN Tag)是在数据链路层实现的。VLAN(Virtual Local Area Network,虚拟局域网)是一种网络设备(如交换机)的配置策略,它可以将任意集合的 LAN 节点组织成一个逻辑上的局域网,无论它们在物理上是否相邻。VLAN 标签就是用于标识数据包所属的 VLAN。

    #软考
    上次更新: 2025/04/12, 05:37:39
    2023年上半年
    2022年上半年

    ← 2023年上半年 2022年上半年→

    最近更新
    01
    Reactor 核心
    02-24
    02
    前置条件
    10-30
    03
    计算机网络
    09-13
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 powered by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式