本文用于记录软考中,关于系统设计、架构设计、编程思想相关的题目。 包括但不限于:
这部分知识点大多需要有一定的工作经验才好理解。如有想要记录的题目,欢迎评论补充!
关注公众号“月上老狗”,发送“软件设计师”,获取历年软件设计师软考真题。
选项 | 分析过程 |
---|---|
A. 客户类无需知道所调用方法的特定子类的实现 | 选A。在面向对象编程中,多态性允许我们将子类对象当作父类对象来处理,这样我们就可以在不知道对象具体类型的情况下调用相关方法 |
B. 对象动态地修改类 | 描述的是反射的概念,与多态不直接相关。 |
C. 一个对象对应多张数据库表 | 描述的是数据库设计中的模式,与多态无关。 |
D. 子类只能够覆盖父类中非抽象的方法 | 这个说法本身就是错误的。 |
选项 | 分析 |
---|---|
A. 动词短语 | 错误。动词短语通常用来识别对象的行为或方法,而不是对象本身。 |
B. 名词短语 | 正确。名词短语通常用来识别对象。 |
C. 形容词 | 错误。形容词通常用来识别对象的属性,而不是对象本身。 |
D. 副词 | 错误。副词通常不用来识别对象。 |
选项 | 分析 |
---|---|
A. 只能有父类中的属性 | |
B. 只能有父类中的行为 | |
C. 只能新增行为 | |
D. 可以有新的属性和行为 | 正确。在面向对象编程中,当我们采用继承机制创建子类时,子类不仅会继承父类的属性和行为,还可以有自己新的属性和行为。 |
选项 | 分析 |
---|---|
A. 动词短语 | 错误。动词短语通常用来识别对象的行为或方法,而不是对象本身。 |
B. 名词短语 | 正确。名词短语通常用来识别对象。 |
C. 形容词 | 错误。形容词通常用来识别对象的属性,而不是对象本身。 |
D. 副词 | 错误。副词通常不用来识别对象。 |
选项 | 分析 |
---|---|
A. 共同封闭 | 共同封闭原则指的是同一个包中的类应该在同一次更改中被修改,即它们有相同的变化原因和方向。 |
B. 共同重用 | 正确。共同重用原则指的是如果重用包中的某个类,那么就要重用包中的所有类。 |
C. 开放—封闭 | 开放—封闭原则指的是软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。它强调的是设计的扩展性和稳定性。 |
D. 接口分离 | 接口分离原则指的是客户端不应该被强迫依赖于它们不使用的接口,即将大的接口拆分成更小、更具体的接口。 |
选项 | 分析 |
---|---|
A. 技术 | |
B. 部署 | |
C. 实现 | |
D. 行为 | 正确。这个阶段的目标是理解系统应该做什么,而不是如何做。这通常涉及到识别系统的主要功能,以及这些功能如何相互作用。 |
选项 | 分析过程 |
---|---|
A. 尽量减少高扇出结构 | 高扇出结构意味着一个模块依赖于许多其他模块,这会增加复杂性和出错的可能性。 |
B. 模块的大小适中 | 适中的模块大小可以使模块更易于理解和维护,从而改进设计质量。 |
C. 将具有相似功能的模块合并 | 选C。虽然在某些情况下,将具有相似功能的模块合并可以提高效率,但这并不总是改进设计质量。 事实上,过度的合并可能导致模块过大和功能过于复杂,这可能降低设计质量。 |
D. 完善模块的功能 | 完善模块的功能可以使模块更加强大和灵活,从而改进设计质量。 |
选项 | 分析 |
---|---|
A. 数据 | 选A。数据耦合是指模块之间通过参数传递数据进行交互,这是耦合度最低的一种形式。 |
B. 标记 | 标记耦合是指一个模块通过控制信息(如标记)来影响另一个模块的行为,这与问题描述不符。 |
C. 控制 | 控制耦合是指一个模块控制另一个模块的执行流程,这与问题描述不符。 |
D. 内容 | 内容耦合是指一个模块直接访问或修改另一个模块的内部数据,这是耦合度最高的一种形式,这与问题描述不符。 |
选项 | 分析 |
---|---|
A. 允许合理地划分三层的功能,使之在逻辑上保持相对独立性 | 正确。C/S体系结构确实允许将系统划分为独立的层次,每个层次都有其特定的功能。 |
B. 允许各层灵活地选用平台和软件 | 正确。在C/S体系结构中,每一层都可以根据需要选择最适合的平台和软件。 |
C. 各层可以选择不同的开发语言进行并行开发 | 正确。由于各层的独立性,可以选择不同的开发语言进行开发,这有助于提高开发效率。 |
D. 系统安装、修改和维护均只在服务器端进行控制 | 不正确。在C/S体系结构中,虽然服务器端确实负责大部分的处理任务,但客户端也需要进行一些安装、修改和维护的工作。 |
选项 | 分析 |
---|---|
A. 每个月特定的时间发放员工工资 | 选A。这是一个功能需求,因为它描述了系统应该执行的特定任务或功能。 |
B. 系统的响应时间不超过3秒 | 这是一个性能需求,因为它描述了系统在执行任务时应达到的性能标准。 |
C. 系统的计算精度符合财务规则的要求 | 这是一个质量需求,因为它描述了系统在执行任务时应达到的质量标准。 |
D. 系统可以允许100个用户同时查询自己的工资 | 这是一个性能需求,因为它描述了系统在执行任务时应达到的性能标准。 |
选项 | 分析 |
---|---|
A. 软件构件具有良好的高内聚、低耦合的特点 | 正确。在管道过滤器体系结构中,每个过滤器都是独立的,只负责一项特定的任务,因此具有高内聚性。 |
B. 支持重用 | 正确。由于每个过滤器都是独立的,因此可以在不同的管道中重复使用。 |
C. 支持并行执行 | 正确。如果系统资源允许,多个过滤器可以同时处理数据,从而实现并行执行。 |
D. 提高性能 | 不正确。虽然管道过滤器体系结构可以支持并行执行,从而在某些情况下提高性能,但是它也可能引入额外的开销,比如过滤器之间的数据传输开销。因此,是否能提高性能取决于具体的应用场景和实现方式。 |
A.属性冲突 B.命名冲突 C.结构冲突 D.实体冲突
A.职工和教师实体保持各自属性不变
B.职工实体中加入职称属性,删除教师实体
C.教师也是学校的职工,故直接将教师实体删除
D.将教师实体所有属性并入职工实体,删除教师实体
参考答案:CB 解析:
- 属性冲突。同一属性可能会存在于不同的分 E- R 图,由于设计人员不同或是出发点不同,对属性的类型、取值范围和数据单位等可能会不一致。
- 命名冲突。相同意义的属性在不同的分 E- R 图中有着不同的命名,或是名词相同的属性在不同的分 E-R 图中代表这不同的意义。
- 结构冲突。同-实体在不同的分 E-R 图中有不同的属性,同-对象在某一分E-R 图中被抽象为实体 ,而在另-分 E-R 图中又被抽象为属性, 需要统一。
本题属于结构冲突没有实体冲突的说法。
选项 | 分析 |
---|---|
A. 包含任意个空格字符的字符串称为空串 | 错误。在大多数编程语言中,一个空串是指一个没有任何字符的字符串,即使是空格字符也不包含。 |
B. 字符串不是线性数据结构 | 错误。字符串是一种线性数据结构,因为它的元素(字符)之间有一种线性的顺序关系。 |
C. 字符串的长度是指串中所含字符的个数 | 正确。字符串的长度通常是指它包含的字符的数量,包括所有的可见字符和空格。 |
D. 字符串的长度是指串中所含非空格字符的个数 | 错误。如上所述,字符串的长度通常包括所有的字符,包括空格。 |
选项 | 分析 |
---|---|
A. 中间代码常采用符号表来表示 | 不正确。 符号表是编译过程中存储标识符及其属性的结构,不是用来表示中间代码的。中间代码是一种独立于机器的中间表示。 |
B. 后缀式和三地址码是常用的中间代码 | 正确。 后缀式(也称逆波兰表示法)和三地址码(包括四元式、三元式等)确实是常用的中间代码表示形式。 |
C. 对中间代码进行优化要依据运行程序的机器特性 | 不正确。 中间代码的优化通常是在不依赖具体机器特性的基础上进行的,目的是在生成目标代码前进行更高层次的优化。特定机器的优化是在后期生成目标代码时进行的。 |
D. 中间代码不能跨平台 | 不正确。 中间代码的设计初衷之一就是要独立于具体的机器,以便于跨平台移植和优化。 |
选项 | 解析 |
---|---|
关键字(或保留字) | 不需要用户命名。关键字是编程语言中预先定义好的,具有特殊含义的标识符,如if、else、for等。 |
变量 | 需要用户命名。 |
函数 | 需要用户命名。 |
数据类型 | 需要用户命名。在高级语言中,一般会自行定义很多实体类型的数据体。 |
注释 | 不需要命名。注释是不需要名字的。 |
选项 | 分析 |
---|---|
A. 源程序中的标识符是否合法 | |
B. 程序语句的含义是否合法 | |
C. 程序语句的结构是否合法 | 正确。编译过程中进行的语法分析主要是分析 程序语句的结构是否合法。 语法分析是编译过程中的一个重要步骤,它的主要任务是根据编程语言的语法规则, 检查源程序中的语句是否满足这些规则,也就是说,它主要分析程序语句的结构是否合法。 |
D. 表达式的类型是否合法 |
选项 | 分析 |
---|---|
A. 脚本语言中不使用变量和函数 | 不正确。脚本语言,如Python、JavaScript等,都广泛地使用变量和函数。 |
B. 标记语言常用于描述格式化和链接 | 正确。标记语言,如HTML和XML,常用于描述文档的结构和格式,包括格式化和链接。 |
C. 脚本语言采用解释方式实现 | 正确。脚本语言通常是解释执行的,而不是编译执行的。 |
D. 编译型语言的执行效率更高 | 正确。编译型语言,如C和Java,通常比解释型语言有更高的执行效率,因为它们的代码在运行前已经被编译成机器语言。 |
选项 | 分析 |
---|---|
A. 词法分析 | |
B. 语法分析 | 正确。法分析阶段主要是检查源代码是否符合编程语言的语法规则,也就是判断程序语句的形式是否正确。 |
C. 语义分析 | |
D. 代码生成 |
在极限编程(XP)中,结对编程是一种核心实践。两名程序员坐在同一台计算机前协作完成代码,其中一人写代码(称为司机),另一人审查代码(称为导航员)。
选项 | 解析 |
---|---|
A. 支持共同代码拥有和共同对系统负责 | 正确。 结对编程鼓励团队成员之间共享代码的所有权和对系统的责任。这促进了知识共享,减少了代码孤岛现象。 |
B. 承担了非正式的代码审查过程 | 正确。 在结对编程中,导航员会实时审查司机写的代码,这相当于一种非正式的代码审查,帮助立即发现和纠正错误。 |
C. 代码质量更高 | 正确。 结对编程通常能提高代码质量,因为两个人一起工作能够减少错误,提高代码的设计和可维护性。 |
D. 编码速度更快 | 不正确。 尽管结对编程有许多好处,但通常情况下,结对编程的编码速度不会比单独编程更快。由于两个人协作编写代码,这可能会比单独编写代码花费更多的时间。然而,通过提高代码质量、减少缺陷和降低未来维护成本,结对编程可以在整体开发效率和项目成功率上有所提升。 |
选项 | 分析 |
---|---|
A. 小的发布 | 正确。还可称为小型发布、小步快走。 |
B. 结对编程 | 正确。 |
C. 持续集成 | 正确。 |
D. 精心设计 | 错误。极限编程时敏捷开发思维,精心设计不符合敏捷开发思维。 |
解析:为了计算沟通路径,我们需要了解计算沟通路径的公式。
- 对于无主程序员的小组,沟通路径数量可以表示为:
𝐶(𝑛,2)
=𝑛(𝑛−1)/2
,所以𝐶(8,2)
=8×(8−1)/2
=28。- 对于有主程序员的小组,我们需要分别计算主程序员和每个成员之间的沟通路径,以及成员之间的沟通路径。由于成员之间没有直接沟通,主程序员和每个成员之间的沟通路径为 n - 1。所以 8 -1 = 7。
选项 | 分析 |
---|---|
A. 版本控制 | 属于。版本控制是配置管理的重要组成部分,用于管理软件的不同版本和变更情况。 |
B. 风险管理 | 不属于。风险管理主要涉及识别、评估和应对项目开发中的风险,与配置管理无直接关系。 |
C. 变更管理 | 属于。变更管理是配置管理的重要内容,负责管理软件配置项的变更过程。 |
D. 配置状态报告 | 属于。配置状态报告用于记录和报告配置项的状态和变化,是配置管理的组成部分。 |
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!