2015年上半年 软件设计师 上午试卷 综合知识-2

2015年上半年 软件设计师 上午试卷 综合知识-2

 

与算术表达式"(a+(b-c))*d" 对应的树是(21)。

 

答案: B

 

本题考查程序语言与数据结构基础知识。

对算术表达式"(a+(b-c))*d"求值的运算处理顺序是:先进行b-c,然后与a相加, 最后再与d相乘。只有选项B所示的二叉树与其相符。

 

某进程有4个页面,页号为0~3,页面变换表及状态位、访问位和修改位的含义如下图所示。若系统给该进程分配了3个存储块,当访问前页面1不在内存时,淘汰表中页号为(26) 的页面代价最小。

A. 0 B. 1 C. 2 D. 3

 

 

答案: D

 

根据题意,页面变换表中状态位等于0和1分别表示页面不在内存或在内存,所以0、2和3号页面在内存。当访问的页面1不在内存时。系统应该首先淘汰未被访问的页面,因为根据程序的局部性原理最近未被访问的页面下次被访问的概率更小;如果页面最近都被访问过,应该先淘汰未修改过的页面。因为未修改过的页面内存与辅存一致,故淘汰时无须写回辅存,使系统页面置换代价小。经上述分析,0、2和3号瓦面都是最近被访问过的,但0和2号页面都被修改过而3号页面未修改过,故应该淘汰3号页面。

 

 

嵌入式系统初始化过程主要有3个环节,按照自底向上、从硬件到软件的次序依次为(27)。系统级初始化主要任务是(28)。

A. 片级初始化→系统级初始化→板级初始化

B. 片级初始化→板级初始化→系统级初始化

C. 系统级初始化→板级初始化→片级初始化

D. 系统级初始化→片级初始化→板级初始化

 

答案: B

 

本题考查应试者对嵌入式系统方面的基础知识。 

嵌入式系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。

片级初始化完成嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。

板级初始化完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。

系统初始化过程以软件初始化为主,主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。

 

 

嵌入式系统初始化过程主要有3个环节,按照自底向上、从硬件到软件的次序依次为(27)。系统级初始化主要任务是(28)。

 

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

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

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

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

 

答案: C

 

本题考查应试者对嵌入式系统方面的基础知识。 

嵌入式系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。

片级初始化完成嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。

板级初始化完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。

系统初始化过程以软件初始化为主,主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。

 

 

某公司计划开发一种产品,技术含量很高,与客户相关的风险也很多,则最适于采用(29)开发过程模型。

A. 瀑布 B. 原型 C. 增量 D. 螺旋

 

答案: D

 

 

本题考查软件过程模型的基础知识。

 

瀑布模型将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。

 

原型模型从初始的原型逐步演化成最终软件产品,特别适用于对软件需求缺乏准确认识的情况。

 

增量开发是把软件产品作为一系列的增量构件来设计、编码、集成和测试,可以在增量开发过程中逐步理解需求。

 

螺旋将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析,适用于复杂的大型软件。

 

 

在敏捷过程的方法中(30)认为每一个不同的项目都需要一套不同的策略、约定和方法论。

 

A. 极限编程(XP)

B. 水晶法(Crystal)

C. 并列争球法(Scrum)

D. 自适应软件开发(ASD)

 

答案: B

 

 

本题考查敏捷方法的基础知识。

在20世纪90年代后期,一些开发人员抵制产格化软件开发过程,试图强调灵活性在快速有效的软件生产中的作用,提出了敏捷宣言,即个人和交互胜过过程和工具;可 以运行的软件胜过面面俱到的文档;与客户合作胜过合同谈判;对变化的反应胜过遵循计划。基于这些基本思想,有很多敏捷过程的典型方法,其中:

 

极限编程XP是激发开发人员创造性、使得管理负担最小的一组技术.。

水晶法Crystal认为每—个不同的项目都需要一套不同的策略、约定和方法论。

并列争球法(Scram)使用迭代的方法,其中把每30天一次的迭代称为个冲刺, 并按需求的优先级来实现产品多个自组织和自治小组并行地递增实现产品,协调是通过简短的日常情况会议进行。

 

自适应软件开发(ASD)有六个基本的原则:

①在自适应软件开发中,有一个使命作为指导,它设立了项目的目标,但不描述如何达到这个目标;

②特征被视为客户键值的关键,因此,项目是围绕着构造的构件来组织并实现特征;

③过程中的迭代是很重要的,因此重做与做同样重要,变化也包含其中;

④变化不视为是一种更正,而是对软件开发实际情况的调整;

⑤确定的交付时间迫使开发人员认真考虑每一个生产版本的关键需求;

⑥风险也包含其中,它使开发人员首先跟踪最艰难的问题。

 

 

某模块实现两个功能:向某个数据结构区域写数据和从该区域读数据。该模块的内聚类型为(32)内聚。

A. 过程

B. 时间

C. 逻辑

D. 通信

 

答案: D

 

本题考查软件设计的基础知识。

模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合程度越低,内聚程度越高,则模块的独立性越好。

 

存在多种模块内聚类型,从高到低依次为功能、通信、顺序、过程、时间、逻辑和偶然内聚。

一个模块内的几个操作是相关的,而且必须以特定的次序执行,则该模块的内聚类型为过程内聚。

模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行, 则该模块的内聚类型为时间内聚。

若一个模块的各个部分只是通过代码的逻辑结构相关联,则该模块的内聚类型为逻辑内聚。

把访问或操作在同一数据结构的操作放在一个模块中,则该模块的内聚类型为通信内聚。

 

 

正式技术评审的目标是(33)。

 

A. 允许高级技术人员修改错误

B. 评价程序员的工作效率

C. 发现软件中的错误

D. 记录程序员的错误情况并与绩效挂钩

 

答案: C

 

本题考查软件评审的基础知识。

软件评审的内容包括设计质量评审、程序质量评审和与运行环境接口的评审。评审的主要目标是为了发现软件中的错误。

 

 

自底向上的集成测试策略的优点包括(34)。

 

A. 主要的设计问题可以在测试早期处理

B. 不需要写驱动程序

C. 不需要写桩程序

D. 不需要进行回归测试

 

答案: C

 

本题考查软件测试的基础知识。

软件测试分为单元测试、集成测试和系统测试。集成测试把模块按系统设计说明书的要求组合起来进行测试。

存在多种组合的集成测试策略:自底向上、自顶向下、一次性集成、明治集成等。

其中,自底向上策略通过不断合并底层模块来测试更高层模块的方式进行。在该方法中,需要写驱动程序来调用待测试的底层模块,主要的设计问题需要到测试后期才能发现。由于从最底层的模块开始测试,因此过程中不需要写桩模块。当测试过程中发现错误时,需要进行回归测试。

 

 

采用McCabe度量法计算下列程序图的环路复杂性为(35)。

A. 2 B. 3 C. 4 D. 5

 

答案: C

 

本题考查软件度量的基础知识。

软件复杂性主要表现在程序的复杂性,而程序的复杂性主要指模块内程序的复杂性。McCabe度量法是一种度量程序复杂性的方法,该方法用程序图来表示实际的程序, 如上图所示,用环路数来表示程序复杂性,即V(G) = m-n + 2p,其中m和n分别表示图中的边数和顶点数,p为1。本题中,m=10, n=8,因此V(G) = 10-8+2=4。

 

 

向对象(38)选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织。

 

A. 分析 B. 设计 C. 程序设计 D. 测试

 

答案: C

 

 

本题考查面向对象的基本知识。

在采用面向对象技术开发系统时,主要步骤有面向对象分析、面向对象设计、面向对象程序设计和面向对象测试。

面向对象分析主要包括:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。

面向对象设计是设计分析模型和实现相应源代码。

面向对象程序设计选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织。

面向对象测试是尽可能早的开始进行系统测试,以发现系统中可能存在的错误并进行修复,进而保证系统质量。

 

 

UML中有4种关系:依赖、关联、泛化和实现。(40)是一种结构关系,描述了一组链,链是对象之间的连接;(41)是一种特殊/一般关系,使子元素共享其父元素的结构和行为。

 

A. 依赖 B. 关联 C. 泛化 D. 实现

 

答案: B

 

本题考査统一建模语言(UML)的基本知识。

UML是面向对象软件的标准化建模语言,

由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制

UML的词汇表包含三种构造块:事物、关系和图

事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。其中关系包括4种:依赖、关联、泛化和实现。

 

依赖(Dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。

关联(Association)是一种结构关系,它描述了一组链,链是对象之间的连接。

泛化(Generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为。

实现(Realization)是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。

 

 

UML图中,对新开发系统的需求进行建模,规划开发什么功能或测试用例,采用(42)最适合。而展示交付系统的软件组件和硬件之间的关系的图是(43)。

 

A. 类图 B. 对象图 C. 用例图 D. 交互图

 

答案: C B

 

 

本题考查统一建模语言(UML)的基本知识。

UML中提供了多种建模系统需求的图,体现系统的静态方面和动态方面。

 

类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。

在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。

 

对象图(Object Diagram)展现了某一时刻一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照,给出系统的静态设计视图或静态进程视图。

 

用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。用例图用于对一个系统的需求进行建模,包括说明这个系统应该做什么(从系统外部的一个视点出发), 而不考虑系统应该怎样做。交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图表现为序列图、通信图、交互概览图和时序图,每种针对不同的目的,能适用于不同的情况。序列图是强调消息时间顺序的交互图;通信图是强调接收和发送消息的对象的结构组织的交互图;交互概览图强调控制流的交互图。

 

时序图(Timing Diagram)关注沿着线性时间轴、生命线内部和生命线之间的条件改变。

 

部署图(Deployment Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。

 

组件图(Component Diagram)展现了一组组件之间的组织和依赖。

 

下图所示为(44)设计模式,属于(45)设计模式,适用于(46)。

A. 代理(Proxy)

B. 生成器(Builder)

C. 组合(Composite)

D. 观察者(Observer)

 

 

A. 创建型 B. 结构型 C. 行为 D. 结构型和行为

 

 

 

A. 表示对象的部分一整体层次结构时

B. 当一个对象必须通知其它对象,而它又不能假定其它对象是谁时

C. 当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时

D. 在需要比较通用和复杂的对象指针代替简单的指针时

 

 

答案: C B A

 

 

 

 

 

 

本题考查设计模式的基本概念。

每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时 候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍。按照设计模式的目的可以分为创建型、结构型和行为型三大类。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行为型模式对类或对象怎样交互和怎样分配职责进行描述。每种设计模式都有其适应性,描述适用于解决的问题场合。

创建型模式包括 Factory Method、Abstract Factory、Builder、Prototype 和 Singleton。

结构型模式包括 Adapter (类)、Adapter (对象)、Bridge、Composite、Decorator、Fafade、 Flyweight 和 Proxy。

行为型模式包括 Interpreter、Template Method、Chain of Responsibility、 Command、Iterator、Mediator、Memento Observer State Strategy 和 Visitor。

 

Proxy模式的结构图如下所示:

Proxy模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有:远程代理(Remote Proxy)为一个对象在不同地址空间提供据不代表;虚代理 (Virtual Proxy)根据需要创建开销很大的对象;保护代理(Protection Proxy)控制对原始对象的访问,用于对象应该有不同的访问权限的时候;智能指引(Smart Reference) 取代了简单的指针,它在访问对象时执行一些附加操作。

Builder模式的结构图如下所示:

Builder模式适用于当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;当构造过程必须允许被构造的对象有不同的表示时。

Composite模式的结构图如下所示:

Composite模式适用于:想表示对象的部分-整体层次结构;希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

Observer模式的结构图如下所示:

Observer模式适用于:.当一个抽象模型有两个方面,其中一个方面依赖于另一个方 面。将这两者封装在独立地对象中以使它们可以各自独立地改变和复用;当对一个对象的改变需要同时改变其他对象.而不知道具体有多少对象有待改变时;当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的。

 

 

 

 

某些设计模式会引入总是被用作参数的对象。例如(47)对象是一个多态accept 方法的参数。

 

A. Visitor B. Command C. Memento D. Observer

 

答案: A

 

 

本题考查设计模式的概念,对行为模式进行比较。

很多行为模式注重封装变化。当一个程序的某个方面的特征经常发生改变时,这些模式就定义一个封装这个方面的对象。这样,当该程序的其他部分依赖于这个方面时,它们都可以与此对象协作。一些模式引入总是被用作参数的对象。有些模式定义一些可作为令牌进行传递的对象,这些对象将在稍后被调用。

在Visitor模式中,一个Visitor对象是一个多态的accept操作的参数,这个操作作用于该Visitor对象访问的对象。

 

在Command模式中,令牌代表一个请求;.在Memento模式中,它代表在一个对象在某个特定时刻的内部状态。在这两种情况下,令牌都可以有一个复杂的内部表示,但客户并不会倉识到这一点。.在Observer .模式中,通过引入Observer和Subject对象来分布通信。

posted @ 2017-09-14 13:07  孙中明  阅读(279)  评论(0编辑  收藏  举报