2024-05-22
温故知新
00
请注意,本文编写于 108 天前,最后修改于 70 天前,其中某些信息可能已经过时。

目录

简介
面向对象
软件设计&架构设计
编程&编程理论
编程思想

简介

本文用于记录软考中,关于系统设计、架构设计、编程思想相关的题目。 包括但不限于:

  1. 面向对象
  2. 编程行为
  3. 编译语言、脚本语言
  4. 系统需求、行为分析

这部分知识点大多需要有一定的工作经验才好理解。如有想要记录的题目,欢迎评论补充!

关注公众号“月上老狗”,发送“软件设计师”,获取历年软件设计师软考真题。

image

面向对象

  1. 面向对象设计中,实体间的关系有哪些?
  • 关联关系:描述两个类之间的连接,表明它们之间存在某种联系,可以是一对一、一对多或多对多的关系。示例:订单类和客户类之间可以存在一对多的关联关系,一个客户可以有多个订单。
  • 聚合关系:表示整体与部分之间的关系,部分可以独立存在而不依赖于整体。示例:车辆和引擎之间存在聚合关系,引擎可以被多个车辆共享,但是引擎可以独立存在。
  • 组合关系:表示整体与部分之间的关系,但部分不能独立存在,它们的生命周期与整体相同。示例:汽车和轮胎之间存在组合关系,轮胎是汽车的一部分,没有汽车就不存在轮胎。
  • 继承关系:表示类与子类之间的关系,子类继承了父类的属性和方法,并可以添加新的属性和方法。示例:动物类作为父类,猫、狗等作为子类,继承了动物类的一般属性和方法。
  • 依赖关系:表示一个类使用另一个类的对象作为参数或局部变量。示例:订单类依赖于客户类,当创建订单时需要指定客户对象作为参数。
  • 实现关系:表示接口与实现类之间的关系,实现类实现了接口中定义的方法。示例:一个类实现了某个接口,需要实现接口中定义的所有方法。
  1. 在面向对象方法中,多态指的是( )
选项分析过程
A. 客户类无需知道所调用方法的特定子类的实现选A。在面向对象编程中,多态性允许我们将子类对象当作父类对象来处理,这样我们就可以在不知道对象具体类型的情况下调用相关方法
B. 对象动态地修改类描述的是反射的概念,与多态不直接相关。
C. 一个对象对应多张数据库表描述的是数据库设计中的模式,与多态无关。
D. 子类只能够覆盖父类中非抽象的方法这个说法本身就是错误的。
  1. 面向对象分析过程中,从给定需求描述中选择( )来识别对象
选项分析
A. 动词短语错误。动词短语通常用来识别对象的行为或方法,而不是对象本身。
B. 名词短语正确。名词短语通常用来识别对象。
C. 形容词错误。形容词通常用来识别对象的属性,而不是对象本身。
D. 副词错误。副词通常不用来识别对象。
  1. 采用继承机制创建子类时,子类中( )。
选项分析
A. 只能有父类中的属性
B. 只能有父类中的行为
C. 只能新增行为
D. 可以有新的属性和行为正确。在面向对象编程中,当我们采用继承机制创建子类时,子类不仅会继承父类的属性和行为,还可以有自己新的属性和行为。
  1. 面向对象分析过程中,从给定需求描述中选择( )来识别对象
选项分析
A. 动词短语错误。动词短语通常用来识别对象的行为或方法,而不是对象本身。
B. 名词短语正确。名词短语通常用来识别对象。
C. 形容词错误。形容词通常用来识别对象的属性,而不是对象本身。
D. 副词错误。副词通常不用来识别对象。
  1. 在面向对象系统设计中,如果重用了一个包中的某个类,那么就要重用该包中的所有类,这属于(40)原则。
选项分析
A. 共同封闭共同封闭原则指的是同一个包中的类应该在同一次更改中被修改,即它们有相同的变化原因和方向。
B. 共同重用正确。共同重用原则指的是如果重用包中的某个类,那么就要重用包中的所有类。
C. 开放—封闭开放—封闭原则指的是软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。它强调的是设计的扩展性和稳定性。
D. 接口分离接口分离原则指的是客户端不应该被强迫依赖于它们不使用的接口,即将大的接口拆分成更小、更具体的接口。

软件设计&架构设计

  1. 采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的( )
选项分析
A. 技术
B. 部署
C. 实现
D. 行为正确。这个阶段的目标是理解系统应该做什么,而不是如何做。这通常涉及到识别系统的主要功能,以及这些功能如何相互作用。
  1. 在设计软件的模块结构时,( )不能改进设计质量。
选项分析过程
A. 尽量减少高扇出结构高扇出结构意味着一个模块依赖于许多其他模块,这会增加复杂性和出错的可能性。
B. 模块的大小适中适中的模块大小可以使模块更易于理解和维护,从而改进设计质量。
C. 将具有相似功能的模块合并选C。虽然在某些情况下,将具有相似功能的模块合并可以提高效率,但这并不总是改进设计质量。
事实上,过度的合并可能导致模块过大和功能过于复杂,这可能降低设计质量。
D. 完善模块的功能完善模块的功能可以使模块更加强大和灵活,从而改进设计质量。
  1. 模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为( )耦合。
选项分析
A. 数据选A。数据耦合是指模块之间通过参数传递数据进行交互,这是耦合度最低的一种形式。
B. 标记标记耦合是指一个模块通过控制信息(如标记)来影响另一个模块的行为,这与问题描述不符。
C. 控制控制耦合是指一个模块控制另一个模块的执行流程,这与问题描述不符。
D. 内容内容耦合是指一个模块直接访问或修改另一个模块的内部数据,这是耦合度最高的一种形式,这与问题描述不符。
  1. 以下关于C/S(客户机/服务器)体系结构的优点的叙述中,不正确的是( )。
选项分析
A. 允许合理地划分三层的功能,使之在逻辑上保持相对独立性正确。C/S体系结构确实允许将系统划分为独立的层次,每个层次都有其特定的功能。
B. 允许各层灵活地选用平台和软件正确。在C/S体系结构中,每一层都可以根据需要选择最适合的平台和软件。
C. 各层可以选择不同的开发语言进行并行开发正确。由于各层的独立性,可以选择不同的开发语言进行开发,这有助于提高开发效率。
D. 系统安装、修改和维护均只在服务器端进行控制不正确。在C/S体系结构中,虽然服务器端确实负责大部分的处理任务,但客户端也需要进行一些安装、修改和维护的工作。
  1. 某企业财务系统的需求中,属于功能需求的是( )。
选项分析
A. 每个月特定的时间发放员工工资选A。这是一个功能需求,因为它描述了系统应该执行的特定任务或功能。
B. 系统的响应时间不超过3秒这是一个性能需求,因为它描述了系统在执行任务时应达到的性能标准。
C. 系统的计算精度符合财务规则的要求这是一个质量需求,因为它描述了系统在执行任务时应达到的质量标准。
D. 系统可以允许100个用户同时查询自己的工资这是一个性能需求,因为它描述了系统在执行任务时应达到的性能标准。
  1. 以下关于管道过滤器体系结构的优点的叙述中,不正确的是( )。
选项分析
A. 软件构件具有良好的高内聚、低耦合的特点正确。在管道过滤器体系结构中,每个过滤器都是独立的,只负责一项特定的任务,因此具有高内聚性。
B. 支持重用正确。由于每个过滤器都是独立的,因此可以在不同的管道中重复使用。
C. 支持并行执行正确。如果系统资源允许,多个过滤器可以同时处理数据,从而实现并行执行。
D. 提高性能不正确。虽然管道过滤器体系结构可以支持并行执行,从而在某些情况下提高性能,但是它也可能引入额外的开销,比如过滤器之间的数据传输开销。因此,是否能提高性能取决于具体的应用场景和实现方式。
  1. 某高校信息系统设计的分 E-R 图中,人力部门定义的职工实体具有属性:职工号、姓名、性别和出生日期;教学部门定义的教师实体具有属性:教师号、姓名和职称。这种情况属于(),在合并 E-R 图时,()解决这一冲突。

A.属性冲突 B.命名冲突 C.结构冲突 D.实体冲突

A.职工和教师实体保持各自属性不变
B.职工实体中加入职称属性,删除教师实体
C.教师也是学校的职工,故直接将教师实体删除
D.将教师实体所有属性并入职工实体,删除教师实体

参考答案:CB 解析:

  • 属性冲突。同一属性可能会存在于不同的分 E- R 图,由于设计人员不同或是出发点不同,对属性的类型、取值范围和数据单位等可能会不一致。
  • 命名冲突。相同意义的属性在不同的分 E- R 图中有着不同的命名,或是名词相同的属性在不同的分 E-R 图中代表这不同的意义。
  • 结构冲突。同-实体在不同的分 E-R 图中有不同的属性,同-对象在某一分E-R 图中被抽象为实体 ,而在另-分 E-R 图中又被抽象为属性, 需要统一。

本题属于结构冲突没有实体冲突的说法。

编程&编程理论

  1. 以下关于字符串的叙述中,正确的是( )。
选项分析
A. 包含任意个空格字符的字符串称为空串错误。在大多数编程语言中,一个空串是指一个没有任何字符的字符串,即使是空格字符也不包含。
B. 字符串不是线性数据结构错误。字符串是一种线性数据结构,因为它的元素(字符)之间有一种线性的顺序关系。
C. 字符串的长度是指串中所含字符的个数正确。字符串的长度通常是指它包含的字符的数量,包括所有的可见字符和空格。
D. 字符串的长度是指串中所含非空格字符的个数错误。如上所述,字符串的长度通常包括所有的字符,包括空格。
  1. 将高级语言源程序通过编译或解释方式进行翻译时,可以先生成与源程序等价的某种中间代码。以下关于中间代码的叙述中,正确的是( )。
选项分析
A. 中间代码常采用符号表来表示不正确。
符号表是编译过程中存储标识符及其属性的结构,不是用来表示中间代码的。中间代码是一种独立于机器的中间表示。
B. 后缀式和三地址码是常用的中间代码正确。
后缀式(也称逆波兰表示法)和三地址码(包括四元式、三元式等)确实是常用的中间代码表示形式。
C. 对中间代码进行优化要依据运行程序的机器特性不正确。
中间代码的优化通常是在不依赖具体机器特性的基础上进行的,目的是在生成目标代码前进行更高层次的优化。特定机器的优化是在后期生成目标代码时进行的。
D. 中间代码不能跨平台不正确。
中间代码的设计初衷之一就是要独立于具体的机器,以便于跨平台移植和优化。
  1. 在高级语言源程序中,常需要用户定义的标识符为程序中的对象命名,常见的命名对象有( )。①关键字(或保留字) ②变量 ③函数 ④数据类型 ⑤注释
选项解析
关键字(或保留字)不需要用户命名。关键字是编程语言中预先定义好的,具有特殊含义的标识符,如if、else、for等。
变量需要用户命名。
函数需要用户命名。
数据类型需要用户命名。在高级语言中,一般会自行定义很多实体类型的数据体。
注释不需要命名。注释是不需要名字的。
  1. 编译过程中进行的语法分析主要是分析( )。
选项分析
A. 源程序中的标识符是否合法
B. 程序语句的含义是否合法
C. 程序语句的结构是否合法正确。编译过程中进行的语法分析主要是分析 程序语句的结构是否合法。
语法分析是编译过程中的一个重要步骤,它的主要任务是根据编程语言的语法规则,
检查源程序中的语句是否满足这些规则,也就是说,它主要分析程序语句的结构是否合法。
D. 表达式的类型是否合法
  1. 以下关于程序设计语言的叙述中,不正确的是( )。
选项分析
A. 脚本语言中不使用变量和函数不正确。脚本语言,如Python、JavaScript等,都广泛地使用变量和函数。
B. 标记语言常用于描述格式化和链接正确。标记语言,如HTML和XML,常用于描述文档的结构和格式,包括格式化和链接。
C. 脚本语言采用解释方式实现正确。脚本语言通常是解释执行的,而不是编译执行的。
D. 编译型语言的执行效率更高正确。编译型语言,如C和Java,通常比解释型语言有更高的执行效率,因为它们的代码在运行前已经被编译成机器语言。
  1. 在以阶段划分的编译过程中,判断程序语句的形式是否正确属于( )阶段的工作。
选项分析
A. 词法分析
B. 语法分析正确。法分析阶段主要是检查源代码是否符合编程语言的语法规则,也就是判断程序语句的形式是否正确。
C. 语义分析
D. 代码生成

编程思想

  1. 以下关于极限编程(XP)中结对编程的叙述中,不正确的是( )。

在极限编程(XP)中,结对编程是一种核心实践。两名程序员坐在同一台计算机前协作完成代码,其中一人写代码(称为司机),另一人审查代码(称为导航员)。

选项解析
A. 支持共同代码拥有和共同对系统负责正确。
结对编程鼓励团队成员之间共享代码的所有权和对系统的责任。这促进了知识共享,减少了代码孤岛现象。
B. 承担了非正式的代码审查过程正确。
在结对编程中,导航员会实时审查司机写的代码,这相当于一种非正式的代码审查,帮助立即发现和纠正错误。
C. 代码质量更高正确。
结对编程通常能提高代码质量,因为两个人一起工作能够减少错误,提高代码的设计和可维护性。
D. 编码速度更快不正确。
尽管结对编程有许多好处,但通常情况下,结对编程的编码速度不会比单独编程更快。由于两个人协作编写代码,这可能会比单独编写代码花费更多的时间。然而,通过提高代码质量、减少缺陷和降低未来维护成本,结对编程可以在整体开发效率和项目成功率上有所提升。
  1. 极限编程(XP)的十二个最佳实践不包括( )
选项分析
A. 小的发布正确。还可称为小型发布、小步快走。
B. 结对编程正确。
C. 持续集成正确。
D. 精心设计错误。极限编程时敏捷开发思维,精心设计不符合敏捷开发思维。
  1. 在进行软件开发时,采用无主程序员的开发小理,成员之间相互平等;而主程序员负责制的开发小姐,由一个主程序员和若干成员组成,成员之间没有的通。在一个由8名开发人员构成的小组中,无主程序员组和主程序员组的沟语路径分别是( ?)

解析:为了计算沟通路径,我们需要了解计算沟通路径的公式。

  • 对于无主程序员的小组,沟通路径数量可以表示为: 𝐶(𝑛,2)=𝑛(𝑛−1)/2,所以 𝐶(8,2)=8×(8−1)/2=28。
  • 对于有主程序员的小组,我们需要分别计算主程序员和每个成员之间的沟通路径,以及成员之间的沟通路径。由于成员之间没有直接沟通,主程序员和每个成员之间的沟通路径为 n - 1。所以 8 -1 = 7。
  1. 配置管理贯穿软件开发的整个过程。以下内容中,不属于配置管理的是( )。
选项分析
A. 版本控制属于。版本控制是配置管理的重要组成部分,用于管理软件的不同版本和变更情况。
B. 风险管理不属于。风险管理主要涉及识别、评估和应对项目开发中的风险,与配置管理无直接关系。
C. 变更管理属于。变更管理是配置管理的重要内容,负责管理软件配置项的变更过程。
D. 配置状态报告属于。配置状态报告用于记录和报告配置项的状态和变化,是配置管理的组成部分。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!