软件设计模式试题集 含答案
- 格式:pdf
- 大小:649.52 KB
- 文档页数:22
20秋学期《软件设计模式》在线平时作业3
学校:东北大学学期:2020年秋季
一、单选题 (共 10 道试题,共 50 分)
1.C#中每个int 类型的变量占用_______个字节的内存。
A.1
B.2
C.4
D.8
[本题正确选择]:C
2.while语句循环语句结构和do…while语句循环结构的区别在于:
A.while语句的执行效率比较高
B.do…while语句编写程序较为复杂
C.do…while循环是先执行循环体,后判定条件表达式是否成立,而while语句是先判定条件表达式,再决定是否执行循环体
D.无论条件是否成立,while语句都要执行一次循环体
[本题正确选择]:C
3.如有定义:
class class1
{
Public virtual void test(){}
}
Class class2: class1
{
Public overrice void test()
{
Console.Write(“class2”);
}
}
Class class3: class2
{
Public override void test()
{
Console.Write(“class3”);
}
}
则下列语句的输出是什么?
Class2 x = new class3(); x.test();
A.class3 class2
B.class3
C.class2 class3。
软件设计师考试题型一、在软件设计过程中,以下哪个阶段主要负责确定系统的功能及性能需求?A. 需求分析B. 系统设计C. 编码实现D. 测试与维护(答案:A)二、以下哪种设计模式主要用于创建一个对象的唯一实例,并确保整个系统中只有一个该对象的实例?A. 工厂模式B. 单例模式C. 观察者模式D. 策略模式(答案:B)三、在数据库设计中,用于描述数据实体及其之间关系的是?A. 数据流图B. E-R图(实体-关系图)C. 状态转换图D. 用例图(答案:B)四、关于软件测试,下列哪一项描述是不正确的?A. 单元测试是对单个模块或组件进行的测试B. 集成测试是在单元测试之后,对多个模块组合进行测试C. 系统测试是验证整个系统是否满足用户需求D. 验收测试由开发团队内部完成,以确保软件质量(答案:D)五、在面向对象编程中,继承机制的主要作用是?A. 实现代码复用和多态性B. 提高程序的执行效率C. 简化数据结构的定义D. 增强程序的安全性(答案:A)六、下列哪一项不是敏捷开发宣言中强调的价值?A. 个体与交互重于流程和工具B. 可以工作的软件重于详尽的文档C. 客户合作重于合同谈判D. 严格遵循计划重于响应变化(答案:D)七、在软件项目管理中,用于估算项目成本、时间和资源的一种常用技术是?A. PERT图B. 甘特图C. 功能点分析D. 用例点分析(答案:C)(注:虽然用例点分析也是估算方法,但功能点分析更为常用作为此题答案)八、关于软件架构风格,以下哪种风格最适合需要高度可扩展性和灵活性的系统?A. 分层架构B. 微服务架构C. 客户端-服务器架构D. 管道-过滤器架构(答案:B)。
软件设计模式与应用复习题集附答案软件设计模式是软件工程领域的重要概念之一,它为程序员提供了一种可以重用的解决方案。
通过使用设计模式,程序员可以更加高效地开发出可靠且可维护的软件系统。
本文将对软件设计模式与应用进行复习,并附带一些题目和答案,以便读者检验自己的掌握程度。
1. 设计模式的概念及分类设计模式是指在软件设计中常见的问题,并提供了相应的解决方案。
根据其目的和使用方式,设计模式可以分为三类:创建型模式、结构型模式和行为型模式。
- 创建型模式:主要关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。
- 结构型模式:主要关注对象之间的组合关系,包括适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式和享元模式。
- 行为型模式:主要关注对象之间的通信和协作方式,包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。
2. 设计模式的使用场景设计模式可以在特定的场景中被应用,以解决相应的问题。
- 简单工厂模式:当需要根据输入参数来决定创建哪个具体对象时,可以使用简单工厂模式。
- 观察者模式:当一个对象的改变需要通知其他对象进行相应处理时,可以使用观察者模式。
- 模板方法模式:当要定义一组算法中的某个步骤,并且允许子类为该步骤提供实现细节时,可以使用模板方法模式。
- 代理模式:当需要为一个对象提供一个代理,以控制对象的访问时,可以使用代理模式。
- 中介者模式:当多个对象之间的交互需要进行解耦时,可以使用中介者模式。
3. 题目与答案以下是一些与软件设计模式与应用相关的题目,附带了答案供读者参考。
题目一:简述工厂方法模式的原理及应用场景。
答案一:工厂方法模式是一种创建型模式,它通过定义一个用于创建对象的接口,由子类决定具体实例化的对象类型。
工厂方法模式可以在不暴露具体创建逻辑的情况下,实现对象的实例化。
一、选择题(每题2分,共24分)1.以下关于构造函数的说法,其中错误的是( B )A.构造函数的函数名必须与类名相同B.构造函数可以指定返回类型C.构造函数可以带有参数D.构造函数可以重载2.类的构造函数是在( B )调用的。
A. 类创建时B. 创建对象时C. 删除对象时D. 不自动调用3.在以下关于方法重载的说法,其中错误的是( D )A.方法可以通过指定不同的返回值类型实现重载B.方法可以通过指定不同的参数个数实现重载C.方法可以通过指定不同的参数类型实现重载D.方法可以通过指定不同的参数顺序实现重载4.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应该将该方法声明为( D )A.sealedB.publicC.virtualD.override5.( D )表示了对象间的is-a的关系。
A. 组合B. 引用C. 聚合D. 继承6.关于单一职责原则,以下叙述错误的是( C )。
A.一个类只负责一个功能领域中的相应职责B.就一个类而言,应该有且权有一个引起它变化的原因C.一个类承担的职责越多,越容易复用,被复用的可能性越大D.一个类承担的职责过多时需要将职责进行分离,将不同的职责封装在不同的类中7.某系统通过使用配置文件,可以在不修改源代码的情况下更换数据库驱动程序,该系统满足( B )A. 里氏代换原则B. 接口隔离原则C. 单一职责原则D. 开闭原则8.一个软件实体应尽可能少地与其他软件实体发生相互作用,这样,当一个模块修改时,就会尽量少的影响其他模块,扩展会相对容易。
这是( A )的定义。
A. 迪米特法则B. 接口隔离原则C. 里氏代换原则D. 合成复用原则9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( A )模式。
A.创建型B.结构型 C行为型 D.以上都可以10.在观察者模式中,表述错误的是( C )A.观察者角色的更新是被动的。
1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相 B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承B.封装C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。
A.创建型B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。
即针对接口编程,不要针对实现编程,是( d )的表述A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。
A, 委派 B.继承 C创建 D.以上都不对复用方式:继承和组合聚合(组合委派)7、设计模式的两大主题是( d )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8、单例模式中,两个基本要点( a b )和单子类自己提供单例A .构造函数私有 B.唯一实例C.静态工厂方法D.以上都不对9、下列模式中,属于行为模式的是( b )A.工厂模式 B观察者 C适配器以上都是10、“不要和陌生人说话” 是( d )原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并( c )角色完成退化的。
A.抽象产品 B产品 C创建者 D使用者12、单子(单例,单态)模式类图结构如下:下列论述中,关于”0..1”表述的不正确的是( d )A.1表示,一个单例类中,最多可以有一个实例.B.”0..1”表示单例类中有不多于一个的实例C.0表示单例类中可以没有任何实例D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是( a )原则的典型应用。
一:单选题1.在c#程序中,入口函数的正确声明为:BA. static int main(){…..}B. static void Main(){……}void main(){……}Main(){……}2.在C#中,表示一个字符串的变量应使用以下哪条语句定义?BA. CString str;B. string str;C. Dim str as stringD. char * str;3.结构化程序设计的3种结构是:DA. 顺序结构、if结构、for结构B. if结构、if…else结构、else if结构C. while结构、do…while结构、foreach结构D. 顺序结构、分支结构、循环结构4.能正确表示逻辑关系“a>=10 或a<=0”的C#语言表达式是____。
DA. a>=10 or a<=0B. a>=10|a<=0C. a>=10&&a<=0D. a>=10||a<=05.在类的外部可以被访问的成员是:AA. public成员B. private成员C. protected成员D. protected internal成员6.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成_________。
CA. sealed 方法B. public 方法C. visual 方法D. override 方法7.关于结构类型,下列说法哪些是正确的?AA. 结构是值类型B. 结构中不允许定义带参数的实例构造函数;C. 结构中不允许定义析构函数D. 结构中可以定义成员方法,但是方法内不能使用this 指针8.下面是几条动态初始化二维数组的语句,指出其中正确的:DA. int arr5[][]=new int[4,5];B. int[][] arr6 = new int[4, 5];C. int arr7[,]=new int[4,5];D. int[,] arr8=new int[4,5];9.下面有关析构函数的说法中,不正确的是:DA. 析构函数中不可以包含return语句B. 一个类中只能有一个析构函数C. 析构函数在对象被撤销时,被自动调用D. 用户可以定义有参析构函数10.下列说法哪个正确?BA. 不需要定义类,就能创建对象B. 属性可以定义为抽象的C. 对象中必须有属性和方法D. 常量不能作为类成员11.下面有关静态方法的描述中,正确的是:CA. 静态方法属于类,不属于实例B. 静态方法可以直接用类名调用C. 静态方法中,可以访问非静态的局部变量D. 静态方法中,可以访问静态的变量12.以下描述错误的是()AA.在C++中支持抽象类,但在C#中不支持抽象类。
软件设计师试题及答案一、单项选择题(每题2分,共10题,共20分)1. 在软件开发过程中,需求分析阶段的主要任务是()。
A. 确定软件的功能需求B. 编写软件代码C. 进行软件测试D. 部署软件答案:A2. 下列关于软件生命周期的描述,不正确的是()。
A. 软件生命周期包括需求分析、设计、编码、测试和维护B. 软件生命周期的每个阶段都有明确的目标和任务C. 软件生命周期的每个阶段都是独立的,不需要与其他阶段交互D. 软件生命周期的每个阶段完成后,都需要进行评审答案:C3. 在面向对象编程中,封装的目的是()。
A. 提高代码的重用性B. 隐藏对象的实现细节C. 提高程序的执行效率D. 简化程序的复杂度答案:B4. 下列关于软件测试的描述,错误的是()。
A. 软件测试的目的是发现软件中的错误B. 软件测试可以证明软件没有错误C. 软件测试是软件开发过程中的一个重要环节D. 软件测试应该贯穿于软件开发的整个周期答案:B5. 在软件开发中,模块化设计的主要优点是()。
A. 降低软件的复杂性B. 提高软件的运行速度C. 增加软件的可读性D. 以上都是答案:D6. 下列关于数据库管理系统的描述,正确的是()。
A. 数据库管理系统是用于管理数据的软件B. 数据库管理系统可以提高数据的安全性C. 数据库管理系统可以提高数据的一致性D. 以上都是答案:D7. 在软件开发过程中,迭代开发模式的主要优点是()。
A. 可以快速得到软件原型B. 可以减少开发周期C. 可以提高软件的稳定性D. 以上都是答案:D8. 在面向对象编程中,继承的主要用途是()。
A. 实现代码的重用B. 实现多态性C. 实现封装性D. 实现抽象化答案:A9. 在软件开发中,敏捷开发方法的核心思想是()。
A. 以文档为中心B. 以人为中心C. 以过程为中心D. 以工具为中心答案:B10. 在软件开发过程中,版本控制的主要作用是()。
A. 管理软件的发布版本B. 跟踪软件的变更历史C. 管理软件的测试版本D. 以上都是答案:D二、多项选择题(每题3分,共5题,共15分)1. 下列关于软件设计的描述,正确的是()。
一、选择题1.( A )模式的关键是将一个对象定义为原型,并为其提供复制自己的方法。
A.原型B.创建者C.工厂方法D.迭代2.下面的类图表示的是哪个设计模式?(B )A装饰模式(Decorator) B策略模式(Strategy)C桥接模式(Bridge) D观察者模式(Observer)3.Strategy(策略)模式的意图是:(A)。
A.定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换。
B.为一个对象动态连接附加的职责。
C.你希望只拥有一个对象,但不用全局对象来控制对象的实例化。
D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。
4.下面不属于创建型模式的有( C )。
A.抽象工厂模式( Abstract Factory ) B.工厂方法模式(Factory Method) C.适配器模式(Adapter) D.单例模式(Singleton)5.将一个类的接口转换成客户希望的另一个接口。
这句话是对下列哪种模式的描述(C )。
A.策略模式(Strategies) B.桥接模式(Bridge)C.适配器模式(Adapter) D.单例模式(Singleton)6.下面的类图表示的是哪个设计模式?( A )。
A装饰模式(Decorator) B适配器模式(Adapter)C策略模式(Strategies) D桥接模式(Bridge)7.下面属于结构模式的有(D )。
A.策略模式(Strategies)B.单例模式(Singleton)C.抽象工厂模式(Abstract Factory)D.装饰模式(Decorator8.下图可以使用( A )模式进行设计。
A.组合B.模板C.责任链D.状态9.( B )将抽象部分与它的实现部分分离,使它们都可以独立地变化。
A.组合B.桥接C.责任链D.状态10.下图是关于房间状态的描述,可以使用( D )模式进行设计。