当前位置:文档之家› java设计模式选择题复习

java设计模式选择题复习

java设计模式选择题复习
java设计模式选择题复习

工厂系列模式的优缺点:

1.让用户的代码和某个特定类的子类的代码解耦

用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法

2.抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦

MVC模式是不是一种设计模式?为什么

MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。

举出一个生活中使用装饰者模式的例子,用程序实现思路

举个生活中的例子,俗话说“人在衣着马在鞍”,把这就话用装饰者模式的语境翻译一下,“人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;”。对应上面的类图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorator;

设计模式如何分类,每一个类别都有什么特征?

设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。

创建型特点:避免用户直接使用new运算符创建对象。

行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职

结构型特点:主要用于处理类或对象的组合

Java jdk中使用了哪些设计模式

1.单例

2.静态工厂

3.工厂方法

4.抽象工厂

5.构造者

6.原型

7.适配器8桥接9.组

合10.装饰器11.外观12.享元14.代理15.迭代器16.观察者17.协调者18.模板

方法19.策略20.责任链21.命令22.空对象25.解释器

面向对象的设计原则有哪些?

开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚-低耦合原则。

观察者模式的推拉有什么不同?使用场景

推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者需要这些变换后的数据时,往往采用推数据方式;

拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景:当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式。

策略模式和工厂模式有什么不同?

策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换;工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类

5观察者模式的推拉有什么不同?适用场景

现在要说的分歧在这里:

“推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。

“拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。

“推”的好处包括:

1、高效。如果没有更新发生,不会有任何更新消息推送的动作,即每次消息推送都发生在确确实实的更新事件之后,都是有意义的。

2、实时。事件发生后的第一时间即可触发通知操作。

3、可以由Subject确立通知的时间,可以避开一些繁忙时间。

4、可以表达出不同事件发生的先后顺序。

缺点:精确性较差,不能保证能把信息送到客户器。

“拉”的好处包括:

1、如果观察者众多,Subject来维护订阅者的列表,可能困难,或者臃肿,把订阅关系解脱到Observer去完成。

2、Observer可以不理会它不关心的变更事件,只需要去获取自己感兴趣的事件即可。

3、Observer可以自行决定获取更新事件的时间。

4、拉的形式可以让Subject更好地控制各个Observer每次查询更新的访问权限。缺点:不能够及时获取系统的变更。

6策略模式和工厂模式有什么不同?

一般情况下,策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于

使用策略的客户。可以应用的场景有优惠系统、工资计算系统等。而工厂模式主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。很明显的是策略模式是开放的,作为一个主体你的活动范围是全程的,大多数事情要你自己亲力亲为。而工厂模式作是封闭的,作为主体的你的活动范围是有限的,很多事情都帮组你做好了,你直接“点”就可以了。

7装饰者模式和适配器模式的比较

1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模式主要是给被装饰者增加新职责的。

2.关于原接口:适配器模式是用新接口来调用原接口,原接口对新系统是不可见或者说不可用的。装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完成使用。(增加新接口的装饰者模式可以认为是其变种--“半透明”装饰者)

3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或那个接口)。装饰者只知道其接口是什么,至于其具体类型(是基类还是其他派生类)只有在运行期间才知道。

8为什么要用设计模式,设计模式有哪些优点

设计模式的优点:

1、设计模式融合了众多专家的经验,并以标准的形式给广大群众使用,她提供了一中通用的设计词汇,和一种通用的设计语言,以方便开发人员之间开发和交流,使得设计方案更加通俗易懂;

2、设计模式使人们可以方便简单的复用设计模式;

3、设计模式是设计方案易于修改;

4、设计模式的使用将提高软件开发效率与质量,节约成本;

5、设计模式有助于初学者理解面向对象的思想。

9学过的每一种模式的适用场景和优缺点

职责链模式

优点:

1.将请求的发送者和接收者解耦

2.可以简化你的对象,因为它不需要知道链的结构

3.通过改变链内的成员或调动他们的次序,允许你动态地新增或删除责任

缺点:

1.并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能会落到链尾端

之外

2.可能不容观察运行时的特征,有碍于除错。

用途:

经常被使用在窗口系统中,处理鼠标和键盘之类的事件。

当算法牵涉到一种链型运算,而且不希望处理过程中有过多的循环和条件选择语句,并且希望比较容易的扩充文法,可以采用职责链模式。

1)有多个对象处理请求,到底怎么处理在运行时确定。

2)希望在不明确指定接收者的情况下,向多个对象中的一个提交请求。

3)可处理一个请求的对象集合应该被动态指定。

典型例子:

一个请求发送给前台,前台表示我无权管理,将请求传递给财务部门,财务部门再……简单工厂模式

优点:

工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

缺点:

由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;

用途:

工厂类负责创建的对象比较少;

客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。经典例子:没啥好说的,这不是一个真正的设计模式

策略模式

优点:

1.提供了一种替代继承的方法,而且保持了继承的优点,比继承更独立(算法独立,可

以任意扩展)

2.避免程序使用多重条件转移语句,使系统更灵活,并易于扩展

3.遵守大部分常用设计原则,高内聚,低耦合

缺点:

1.每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。可以使

用工厂方法来解决。

用途:

各个不同地区不同的纳税方法,HF中不同鸭子的方法。有多种鸭子,每个鸭子都有自己的行为,fly,quaak之类的。行为有行为类,继承同一接口实现不同操作,以此实现算法互换。

装饰模式

优点:

1.装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承

更多的灵活性。

2.通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不

同行为的组合。

3.有着比继承更加灵活的特性

缺点:

由于使用装饰模式,可以比使用继承关系需要较少数目的类。使用较少的类,当然使设计比较易于进行。但是,在另一方面,使用装饰模式会产生比使用继承关系更多的对象。更多的对象会使得查错变得困难,特别是这些对象看上去都很相像。

用途:

当需要给一个类添加新的行为的时候,但基于开闭原则,就使用装饰模式。

经典例子:

我穿衣服使用draw()方法,在我穿好衣服后,我还打算再寄领带,而寄领带就是装饰类,我们可以把装饰类和对象(穿衣服类)继承于同一个接口,在装饰类的draw()方法中调用super.draw(),然后再在这个方法里加上自己的特征。

工厂方法模式

优点:

1.良好的封装性,代码结构清晰。一个对象创建是有条件约束的,如一个调用者需要

一个具体的产品对象,只要知道这个产品的类名(或约束字符串)就可以了,不用

知道创建对象的艰辛过程,减少模块间的耦合。

2.工厂方法模式的扩展性非常优秀。在增加产品类的情况下,只要适当地修改具体的

工厂类或扩展一个工厂类,就可以完成“拥抱变化”。例如在我们的例子中,需要

增加一个棕色人种,则只需要增加一个BrownHuman类,工厂类不用任何修改就可

完成系统扩展。

3.屏蔽产品类。这一特点非常重要,产品类的实现如何变化,调用者都不需要关心,

它只需要关心产品的接口,只要接口保持不表,系统中的上层模块就不要发生变化,因为产品类的实例化工作是由工厂类负责,一个产品对象具体由哪一个产品生成是

由工厂类决定的。在数据库开发中,大家应该能够深刻体会到工厂方法模式的好处:如果使用JDBC连接数据库,数据库从MySql切换到Oracle,需要改动地方就是切

换一下驱动名称(前提条件是SQL语句是标准语句),其他的都不需要修改,这是

工厂方法模式灵活性的一个直接案例。

4.工厂方法模式是典型的解耦框架。高层模块值需要知道产品的抽象类,其他的实现

类都不用关心,符合迪米特原则,我不需要的就不要去交流;也符合依赖倒转原则,只依赖产品类的抽象;当然也符合里氏替换原则,使用产品子类替换产品父类,没

问题!

缺点:待补充

用途:

第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。

第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

典型例子:

车子继承vehicle(车)类,有小汽车卡,公交车bus等,车子工厂实现工厂接口,工厂接口有抽象方法vehicle produce vehicle(String type)方法,车子工厂中实现工厂方法vehicle produce vehicle(String Type),方法中根据需要new新的车子。

观察者模式

优点:

1.观察者和被观察者之间是松耦合的,分别可以各自独立改变。

2.Subject在发送广播通知的时候,无须指定具体的Observer,Observer可以自己决定

是否要订阅Subject的通知。

3.遵守大部分GRASP原则和常用设计原则,高内聚、低耦合。

缺点:

1.松耦合导致代码关系不明显,有时可能难以理解。

2.如果一个对象被大量观察者订阅的话,在广播通知的时候可能会有效率问题。(毕

竟只是简单的遍历)

使用场景

1、对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。

2、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。

经典例子:

看电视,天气预报

看新闻联播,观众们是观察者,新闻联播是对象,每个观察者都继承于一个统一的接口。而被观察的对象是新闻联播,新闻联播可以添加新的观察者,或者当移除观察者(关电视不看),新闻联播对象有个通知用户信息变更方法,当达到某种条件是,新闻联播对象会将信息都通知给观察者。

抽象工厂模式

优点:

1.抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建

2.当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一

个产品族中的对象

3.增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”

缺点:

增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。

用途:

1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类

型的工厂模式都是重要的。

2、系统中有多于一个的产品族,而每次只使用其中某一产品族。

3、属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。

4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于

具体实现。

经典例子:

抽象工厂在我的理解就是抽象工厂有两个或两个个以上的工厂方法模式结合,有一个工厂接口类,这个接口有中的产品家族有发动机和轮胎两个产品。有两个具体工厂,米其林工厂和倍耐力工厂实现了抽象工厂。

米其林工厂生产的轮胎都继承于米其林轮胎,同理米其林发动机和倍耐力产品。适配器模式

优点:

1.将目标类和适配者类解耦

2.增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说

是透明的,而且提高了适配者的复用性

3.灵活性和扩展性都非常好,符合开闭原则

缺点:

一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。

用途:

想使用一个已经存在的类,但如果它的接口和你的要求不相同时。可以使用适配器模式。两个类所做的事情相同或相似,但接口不同时可以使用。

经典例子:

不同牌子电视机和不同牌子遥控器,里皮翻译用汉语布置恒大队员战术,不同牌子手机的软件。

球员都继承于中国人,都会说汉语,而里皮并不会说汉语。在不知战术的时候,我们需要给里皮一个翻译,这个翻译就是里皮的适配器。翻译可以和球员一样,也继承于中国人,也有说汉语这个方法。而翻译认识里皮,翻译在说汉语()这个方法的时候,实际上是在说里面用意大利语的内容。

单例模式

优点:

1.实例控制,单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所

有对象都访问唯一实例。

2.灵活性,因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点:

1.可能的开发混淆,使用单例对象(尤其在类库中定义的对象)时,开发人员必须记

住自己不能使用new 关键字实例化对象。因为可能无法访问库源代码,因此应用

程序开发人员可能会意外发现自己无法直接实例化此类。

2.不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework

的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。

在某些语言中(如C++),其他类可以删除对象实例,但这样会导致单例类中出现

悬浮引用。

用途:

系统只需要一个实例的对象,而这个对象又会被经常创建。

典型例子:

数据库类里的Model,例如User,表单中显示用户信息会经常使用User.Update之类的方法,此时使用单例模式可以节省效率。

题号题目 A B C D

1 抽象方法:()可以有方法

可以出现在非

抽象类中

是没有方法

体的方法

抽象类中的

方法都是抽

象方法

C

2 设计模式的两大

主题是( )。

系统的维护

与开发

对象组合与类

的继承

系统架构与

系统开发

系统复用与

系统扩展

D

3 要依赖于抽象,不

要依赖于具体。即

针对接口编程,不

要针对实现编程,

是( )的表述

开-闭原则依赖倒转原则

组合优于继

承原则

继承优于组

合原则

B

4 对于模式的表述

错误的是()

模式其实就

是解决某一

类问题的方

法论。

把解决某类问

题的方法总结

归纳到理论高

度,那就是模

式。

模式对问题

的描述以及

对问题的解

答应具有高

度的抽象性

和代表性。

模式只是一

个模型

D

5 设计模式具有的

优点()。选出

最合适的一项。

适应需求变

程序易于理

减少开发过

程中的代码

开发工作量

简化软件系

统的设计

A

6 Design pattern

is to program as:

Metal is to

car

Park is to

tree

Blueprint is

to building

Mountain

Dew is to

soda

C

7 对继承层次太深继承层次太继承层次太深继承层次太继承层次太A

可能导致的问题的叙述不正确的是()。深导致紧内

导致弱内聚深导致紧耦

深会产生冗

余,并使测

试困难

8 在观察者模式中,

表述错误的是()

观察者角色

的更新是被

动的。

被观察者可以

通知观察者进

行更新

观察者可以

改变被观察

者的状态,再

由被观察者

通知所有观

察者依据被

观察者的状

态进行。

以上表述全

部错误。

C

9 在Java中,下列

关于方法重载的

说法中错误的是

()。

方法重载要

求方法名称

必须相同

重载方法的参

数列表必须不

一致

重载方法的

返回类型必

须一致

一个方法在

所属的类中

只能被重载

一次

D

1 0 对观察者模式,以

下叙述不正确的

是()。

必须找出所

有希望获得

通知的对象。

所有的观察者

对象有相同的

接口。

如果观察者

的类型相同,

目标就可以

轻易地通知

它们。

在大多数情

况下,观察

者负责了解

自己观察的

是什么,目

标需要知道

有哪些观察

者依赖自

己。

A

1 1 关于模式适用性,

在以下情况不适

合使用CHAIN OF

RESPONSIBILITY(

职责链) 模式?

有多个的对

象可以处理

一个请求,哪

个对象处理

该请求运行

时刻自动确

定。

在需要用比较

通用和复杂的

对象指针代替

简单的指针的

时候

你想在不明

确指定接收

者的情况下,

向多个对象

中的一个提

交一个请求。

可处理一个

请求的对象

集合应被动

态指定。

B

1 2 关于接口哪个正

确?()

实现一个接

口必须实现

接口的所有

方法

一个类只能实

现一个接口

接口间不能

有继承关系

接口和抽象

类是同一回

A

1 3 Sun公司在设计

java.io包中的类

时使用了()模式。

装饰策略观察者模式责任链模式 A

1 4 关于Java中的静

态,下列说法错误

的是()。

如果某些操

作不依赖具

体实例,那它

就是静态的。

静态方法与类

相关,与对象

无关

需要创建一

个对象来调

用静态方法

静态方法是

使用公共内

存空间的

C

1 5 对象适配器模式

是()原则的典

型应用。

合成聚合复

用原则

依赖倒转原则接口回调单一职责 A

1 6 如果在一个系统

里面有许多类,它

们之间的区别仅

在于它们之间的

行为,那么使用()

模式可以动态地

让一个对象在许

多行为中选择一

种行为。

装饰者模式观察者模式策略模式以上都不对 C

1 7 以下对"开-闭"原

则的一些描述错

误的是?

"开-闭"原则

与"对可变性

的封装原则"

没有相似性.

找到一个系统

的可变元素,

将它封装起

来,叫"开-闭"

原则

对修改关闭:

是其原则之

从抽象层导

出一个或多

个新的具体

类可以改变

系统的行

为,是其原

则之一

A

1 8 Adapter(适配器)

模式的意图是

()。

希望简化现

有系统的使

用方法。你需

要定义自己

的接口

将一个无法控

制的现有对象

与一个特定接

口相匹配

将一组实现

部分从另一

组使用它们

的对象中分

离出来

你需要为特

定的客户

(或情况)

提供特定系

列的对象

B

1 9 保证一个类仅有

一个实例,并提供

一个访问它的全

局访问点。这句话

是对下列哪种模

式的描述()。

Strategies Adapter Singleton Decorator C

2 0 下列关于开闭原

则说法错误的是

()。

将可变的元

素封装起来,

防止改变扩

散到整个应

通过扩展已有

的软件系统,

可以提供新的

行为,以满足

对软件的新需

求,使变化中

的软件系统有

一定的适应性

和灵活性。

已有的软件

模块,特别是

最重要的抽

象层模块不

能再修改,这

就使变化中

的软件系统

有一定的稳

定性和延续

性。

最好将多个

可变性都封

装到一个抽

象类或接口

D

2 1 网站开发中的过

滤器属于()模式。

策略装饰者观察者责任链 D

2 2 关于抽象工厂模

式,以下叙述不正

确的是()

客户对象不

需要知道向

谁请求所需

的对象和如

何使用这些

对象

抽象工厂类通

过为每个不同

类型的对象定

义一个方法,

来指定实例化

哪个对象

具体工厂对

象负责指定

哪些对象要

实例化

将抽象工厂

模式和适配

器模式结合

在一起,可

以将概念相

似的对象当

作同种对象

处理

A

2 3 Which of the

following

programming

languages is

best suited to

design patterns?

Java C HTML XML A

2 4 在职责链模式里,

很多对象由每一

个对象对其()对

象的引用而连接

起来形成一条链。

下家上家周围自身 A

2 5 系统中的文本显

示类(TextView)

和图片显示类

(PictureView)

都继承了组件类

(Component),

分别显示文本和

图片内容,现需要

构造带有滚动

条、或者带有黑色

边框、或者既有滚

动条又有黑色边

框的文本显示控

件和图片显示控

件,但希望最多只

增加三个类,()

设计模式可以实

现该目的。

外观装饰单件模板方法 B

2 6 面向对象系统中

的“黑盒复用”

是指()。

类继承封装对象组合关联 C

2 7 Decorator模式的

描述正确的是

该模式的意

图是动态地

适用于在不影

响其他对象的

该模式的意

图是将对象

该模式适用

性是你想表

B

()。给一个对象

添加一些额

外的职责。就

增加功能来

说,该模式相

比生成子类

不够灵活。情况下,以动

态、透明的方

式给单个对象

添加职责。

组合成树形

结构以表示

“部分-整

体”的层次

结构。该模式

使得用户对

单个对象和

组合对象的

使用具有一

致性。

示对象的部

分-整体层

次结构。

2 8 java.util包中的

Observable类相

当于观察者模式

中的()。

主题接口具体主题观察者接口具体观察者 A

2 9 Java的异常处理

机制可理解为哪

一种设计模式。

观察者

(Observer)

模式

职责链(Chain

of

Responsibili

ty)模式

策略

(Strategy)

模式

装饰者

(Decorato

r)模式

B

3 0 如果我们的课程

改变时间或地点,

就应该通知所有

选修了这门课程

的同学。这样的问

题最好用什么模

式来解决?

工厂模式适配器模式桥接模式观察者模式 D

3 1 对象组合是通过

获得()而在运

行时刻动态定义

的。

对象

对其它对象的

引用

继承构造函数 B

3 2 观察者模式有时

被称作( )。

发布/订阅模

油漆工模式MVC模式以上都对 A

3 3 以下意图那个是

用来描述CHAIN

OF

RESPONSIBILITY(

职责链)?

为子系统中

的一组接口

提供一个一

致的界面,本

模式定义了

一个高层接

口,这个接

口使得这一

子系统更加

容易使用。

提供一种方法

顺序访问一个

聚合对象中各

个元素, 而又

不需暴露该对

象的内部表

示。

在不破坏封

装性的前提

下,捕获一个

对象的内部

状态,并在该

对象之外保

存这个状态。

这样以后就

可将该对象

恢复到原先

保存的状态。

使多个对象

都有机会处

理请求,从

而避免请求

的发送者和

接收者之间

的耦合关

系。

D

3 4 以下哪一个模式

是对算法的封装,

它把算法的责任

和算法本身分割

开,委派给不同的

对象管理()。

策略模式模版方法模式解释器模式迭代器模式A

3 5 以下关于继承的

叙述正确的是

()。

在Java中类

只允许单一

继承

在Java中一

个类只能实现

一个接口

在Java中一

个类不能同

时继承一个

类和实现一

个接口

子类将继承

父类所有的

属性和方

法。

A

3 6 设计模式的原理?

面对实现编

面向对象编程

面向接口编

面向组合编

C

3 7 策略模式不包括

哪种角色()

环境类抽象策略类具体策略类抽象命令类 D

3 8 A design pattern

is:

an algorithm

used in

object-orie

nted

programming

a data

structure

used in

object-orien

ted

programming

a solution

to a common

problem in

object-orie

nted

programming

a

blueprint

for a

particular

kind of

class

C

3 9 ()是把对象的

属性和操作结合

在一起,构成一个

独立的对象,其内

部信息对外界是

隐蔽的,外界只

能通过有限的接

口与对象发生联

系。

多态性继承封装消息 C

4 0 以下关于策略模

式叙述错误的是

( )。

策略模式是

对算法的包

装,是把算法

的责任和算

法本身分隔

开,委派给不

同的对象管

在Context类

中,维护了对

各个

ConcreteStra

tegy的引用实

例,提供了一

个接口供

ConcreteStra

tegy存储数据

策略模式让

算法独立于

使用它的客

户而变化

策略模式

中,定义一

系列算法,

并将每一个

算法封装起

来,并让它

们可以相互

替换

B

4 1 下列关于构造方

法的叙述中,错误

的是 ( )

Java语言规

定构造方法

名与类名必

Java语言规定

构造方法没有

返回值,但不

Java语言规

定构造方法

不可以重载

Java语言

规定构造方

法只能通过

C

须相同用void声明new自动调

4 2 JAVA中如何实现

多重继承()。

继承接口重载覆盖 B

4 3 关于继承表述错

误的是:()

继承是一种

通过扩展一

个已有对象

的实现,从而

获得新功能

的复用方法

泛化类(超类)

可以显式地捕

获那些公共的

属性和方法。

特殊类(子类)

则通过附加属

性和方法来进

行实现的扩

展。

破坏了封装

性,因为这会

将父类的实

现细节暴露

给子类。

继承本质上

是“白盒复

用”,对父

类的修改,

不会影响到

子类。

D

4 4 关于模式适用性,

在以下情况不适

合使用DECORATOR

(装饰)模式?

在不影响其

他对象的情

况下,以动

态、透明的方

式给单个对

象添加职责。

处理那些可以

撤消的职责。

客户程序与

抽象类的实

现部分之间

存在着很大

的依赖性。

当不能采用

生成子类的

方法进行扩

充时。一种

情况是,可

能有大量独

立的扩展,

为支持每

一种组合将

产生大量的

子类,使得

子类数目呈

爆炸性增

长。另一种

情况可能是

因为类定

义被隐藏,

或类定义不

能用于生成

子类。

C

4 5 以下不适合使用

装饰模式的是()。

装饰某个对

象时需要修

改该类的对

在不影响其他

对象的情况

下,以动态、

透明的方式给

单个对象添加

职责

需要动态地

给一个对象

增加功能,这

些功能也可

以动态地被

撤销

只需要对某

个对象进行

外观修饰而

不需要修改

其内在属性

A

4 6 java.util.Obser

vable中的()方

法用来设置一个

setChange() update() notify() register() A

内部标志位注明数据发生了变化。

4 7 Decorator(装饰)

模式的意图是:

()。

定义一系列

的算法,把它

们一个个的

封装起来,并

且使它们可

相互替换。

为一个对象动

态连接附加的

职责。

你希望只拥

有一个对象,

但不用全局

对象来控制

对象的实例

化。

在对象之间

定义一种一

对多的依赖

关系,这样

当一个对象

的状态改变

时,所有依

赖于它的对

象都将得到

通知并自动

更新。

B

4 8 抽象工厂模式的

意图是()

希望简化现

有系统的使

用方法。你需

要定义自己

的接口

将一个无法控

制的现有对象

与一个特定接

口相匹配

将一组实现

部分从另一

组使用它们

的对象中分

离出来

提供一个创

建一系列相

关或相互依

赖对象的接

口,而无需

指定它们具

体的类

D

4 9 观察者模式有哪

些优点?(1)实现

表示层和数据逻

辑层的分离 (2)

支持广播通信(3)

支持以不同的方

式遍历一个聚合

对象 (4)简化了

对象之间的交互,

将各同事解耦

(1)和(2) (2)和(3)

(1) 、(2)和

(3)

(1) 、(2)、

(3)、(4)

A

5 0 下列哪一项不是

设计模式的要

素?

context environment problem solution B

5 1 Open-Close原则

的含义是一个软

件实体( )。

应当对扩展

开放,对修改

关闭.

应当对修改开

放,对扩展关

应当对继承

开放,对修改

关闭

以上都不对 A

5 2 下面这句话隐含

着()设计模式。

我和妹妹跟妈妈

说:“妈妈,我和

妹妹在院子里面

玩,饭做好了叫我

职责链观察者装饰者策略 B

们一声。

5 3 ()模式使多个对

象都有机会处理

请求,从而避免请

求的发送者和接

收者之间的耦合

关系。

观察者责任链策略装饰者 B

5 4 面向对象方法的

多态性是指()。

一个类可以

派生出多个

特殊类

一个对象在不

同的运行环境

中可以有不同

的变体

拥有相同父

类或接口的

不同对象可

以以适合自

身的方式处

理同一件事

一个对象可

以是由多个

其他对象组

合而成的

C

5 5 下列模式中,属于

行为模式的是( )

工厂模式观察者适配器以上都是 B

5 6 策略模式针对一

组算法,将每一个

算法封装到具有

()接口的独立

的类中,从而使得

它们可以相互替

换。

不同抽象共同都不是 C

5 7 以下关于创建型

模式说法正确的

是( ) 。

创建型模式

关注的是对

象的创建

创建型模式关

注的是功能的

实现

创建型模式

关注的是组

织类和对象

的常用方法

创建型模式

关注的是对

象间的协作

A

Java基础知识问答题

Java 基础知识问答题 包含的模块 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM,如下图所示:

共包含208 道问答题,本文的宗旨是为读者朋友们整理一份基础知识的简单大纲,下面一起进入主题吧。 Java 基础 1. JDK 和JRE 有什么区别?

?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。 ?JRE:Java Runtime Environment 的简称,Java 运行环境,为Java 的运行提供了所需环境。 具体来说JDK 其实包含了JRE,同时还包含了编译Java 源码的编译器Javac,还包含了很多Java 程序调试和分析的工具。简单来说:如果你需要运行Java 程序,只需安装JRE 就可以了,如果你需要编写Java 程序,需要安装JDK。 2. == 和equals 的区别是什么? == 解读 对于基本类型和引用类型== 的作用效果是不同的,如下所示: ?基本类型:比较的是值是否相同; ?引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new String("string"); System.out.println(x==y); // true System.out.println(x==z); // false System.out.println(x.equals(y)); // true System.out.println(x.equals(z)); // true 代码解读:因为x 和y 指向的是同一个引用,所以== 也是true,而new String()方法则重写开辟了内存空间,所以== 结果为false,而equals 比较的一直是值,所以结果都为true。 equals 解读

JAVA程序设计期末考试题(多套含答案)

《JA V A程序设计》期末考试试题(五) 一、单选题 1、当某一线程正处于休眠状态,而另一个线程用Thread 类中的interrupt() 方法中断它时,抛出的异常类型是()。 A) IOException B) RuntimeException C) InterruptedException D) ClassNotFoundException 2、下面的程序段的功能是( )。 File file1=new File("d:\\xxx\\yyy\\zzz"); file1.mkdirs(); A)在当前目录下生成子目录:\xxx\yyy\zzz B)生成目录:e:\xxx\yyy\zzz C)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对 3、应用程序的main方法中有以下语句,则输出的结果是( )。 String s = "xxxxxxxxxxxxxxx#123#456#zzzzz"; int n = s.indexOf("#"); int k = s.indexOf("#", n+1); String s2 = s.substring(n+1, k); System.out.println(s2); A) 123456 B) 123 C) xxxxxxxxxxxxxxx D) zzzzz 4、关于下面的程序Test.java说法正确的是( )。 public class Test { String x="1"; int y; public static void main(String args[]) { int z=2; System.out.println(x+y+z); } } A)3 B)102 C) 12 D)程序有编译错误 5、应用程序的main方法中有以下语句,则输出的结果是( )。

《JAVA设计模式》期末考试复习资料

《JAVA设计模式》复习资料 一、单项选择题 1.设计模式起源于() A、机械设计 B、建筑工程设计 C、水利工程设计 D、工业电力化设计 2.“不要和陌生人说话”是()原则的通俗表述。 A、接口隔离 B、里氏替换 C、依赖倒置 D、迪米特 3.目前常见的设计模式主要有()种。 A、23 B、21 C、32 D、28 4.以下关于单一职责原则的叙述不正确的是()。 A、单一职责原则的英文名称是Single Responsibility Principle. B、单一职责原则要求一个类只有一个职责 C、单一职责原则有利于对象的稳定,降低类的复杂性 D、单一职责原则提高了类之间的耦合性 5.以下关于依赖倒置原则的叙述不正确的是() A、依赖倒置原则的简称是DIP B、高层模块不依赖于低层模块,低层模块依赖于高层模块 C、依赖倒置原则中高层模块和低层模块都依赖于抽象 D、依赖倒置原则实现模块间的松耦合 6.下面关于单例模式说法错误的是() A、单例模式是指一个类只有一个实例 B、单例类从实现方式上分为懒汉式和饿汉式 C、单例类从功能上分为状态单例类和无状态单例类 D、可以通过继承的方式对单例类进行扩展得到功能更丰富的单例类 7.下面关于工厂方法模式说法错误的是()。 A、工厂方法模式使一个类是实例化延迟到其子类中 B、工厂方法模式中具有抽象工厂、具体工厂、抽象产品和具体产品4个角色 C、工厂方法模式可以处理多个产品的多个等级结构 D、工厂方法模式可以屏蔽产品类 8.在以下情况不适合使用责任职责链模式() A、有多个对象可以处理请求,哪个对象处理该请求在运行时刻自动确定。 B、在需要用比较通用和复杂的对象指针代替简单的指针的时候。 C、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 D、一个请求需要一系列的处理工作。 9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式 A、结构型 B、创建型 C、行为型 D、以上都可以 10.以下用来描述适配器模式的是() A、表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 B、定义一个用于创建对象的接口,让子类决定实例化哪一个类。 C、将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些

javaSE选择题50道判断题30道

一、不定项选择题:(50题) 1.下列关于JDK、JRE和JVM的描述,正确的是?D A.JRE中包含了JDK,JVM中包含了JRE B.JRE中包含了JDK,JDK中包含了JVM C.JDK中包含了JRE,JVM中包含了JRE D.JDK中包含了JRE,JRE中包含了JVM 2.以下关于JVM的叙述,正确的是?AC A.JVM运行于操作系统之上,它依赖于操作系统 B.JVM运行于操作系统之上,它与操作系统无关 C.JVM支持Java程序运行,它能够直接运行Java字节码文件 D.JVM支持Java程序运行,它能够直接运行Java源代码文件 3.JVM在执行一个Java类时,大致采用以下过程?A A.装载类一>校验类一>执行类中的代码 B.装载类一>执行类中的代码一>校验类 C.校验类一>装载类一>执行类中的代码 D.执行类中的代码一>装载类一>校验类 4.以下关于Java文件名的叙述,正确的有?AD A.Java源文件的扩展名应为.java B.Java字节码文件的扩展名应为.java C.一个Java源文件中只能包含一个Java类 D.Java源文件的文件名应与文件中被public修饰的类的类名一致 5.下列哪项不是int类型的字面量?C A.20 B.077 C.\u03A6 D.0xABBC 6.下列哪项不属于Java语言的基本数据类型?B A.int B.String C.double D.boolean 7.下列哪项不是有效的标识符?AC A.2test B.userName C.$car.text D._password

8.现有如下五个声明: Line1: int _hi=6; Line2:int $dollars=8; Line3: int %opercent=9; Line4: int big=Integer.getlnteger("7"); Line5: int a_really_really_really_long_variable_name=5 ; 哪行无法通过编译?B A.Line1 B.Line3 C. Line4 D. Line5 9.表达式:double d = 1-2/5*5+2*5;d的值是哪项?D C.9 D.11 10.现有代码片段: String s="123"; String s1=s+456; 请问s1的结果是哪项?A A.123456 B.579 C.编译错误 D.运行时抛出异常 11.现有: 1.class Test4 { 2. public static void main (String [] args) { 3.boolean x=false; 4.boolean y=true; 5.short z=42; 6. 7. if((z++==42)&&(y==true))z++; 8. if((x==false)||(++z==45))z++; 9. 10. System. out.println("z="+z); 11. } 12.} 结果为:C A. z=42

Java语言程序设计二级考试模拟试卷

Java语言程序设计二级考试模拟试卷一 (考试时间90分钟,满分100分) 一、选择题(1~20题每题2分,20~30题每题3分,计70分) 在下列各题的A、B、C、D、四个选项中,只有一个选项是确定的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 1、下列叙述中正确的是()。 A、线性表是线性结构 B、栈和队列是非线性结构 C、线性链表是非线性结构 D、二叉树是线性结构 2、下列关于队列的叙述中正确的是()。 A、在队列中只能插入数据 B、在队列中只能删除数据 C、队列是先进先出的线性表 D、队列是先进后出的线性表 3、设有下列二叉树: 对此二叉树前遍历的结果是()。 A、ABCDEF B、DBEAFC C、ABDECF D、DEBFCA 4、设树T的度为4,其中度为1、2、3、4的结点个数分别是4,2,1,1。则T中的叶子结点数是()。 A、8 B、7 C、6 D、5 5、结构化程序设计主要强调的是()。 A、程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 6、下面对对象概念描述错误的是()。 A、任何对象都必须有继承性 B、对象是属性和方法的封装体 C、对象间的通讯靠消息传递 D、操作是对象的动态属性 7、在软件测试中,以发现各模块内部可能存在的各种错误为目的的测试是()。 A、集成测试 B、单元测试 C、黑盒测试 D、白盒测试 8、软件需求分析阶段的工作,可以分为四个方面,需求获取、需求分析、编写需求规格说明书以及()。 A、阶段性报告 B、需求评审 C、总结 D、信息隐藏 9、在关系数据库中,用来表示实体之间联系的是()。 A、树结构 B、网结构 C、线性表 D、二维表 10、在关系数据库中,当数据的存储结构改变时,其逻辑结构可以不变,因次,基于逻辑结构的应用程

java设计模式选择题复习

工厂系列模式的优缺点: 1.让用户的代码和某个特定类的子类的代码解耦 用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法 2.抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦 MVC模式是不是一种设计模式?为什么 MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。 举出一个生活中使用装饰者模式的例子,用程序实现思路 举个生活中的例子,俗话说“人在衣着马在鞍”,把这就话用装饰者模式的语境翻译一下,“人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;”。对应上面的类图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorator; 设计模式如何分类,每一个类别都有什么特征? 设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。 创建型特点:避免用户直接使用new运算符创建对象。 行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例 2.静态工厂 3.工厂方法 4.抽象工厂 5.构造者 6.原型 7.适配器8桥接9.组合10.装饰器11.外观12.享元 页脚内容1

14.代理15.迭代器16.观察者17.协调者18.模板方法19.策略20.责任链21.命令22.空对象25.解释器 面向对象的设计原则有哪些? 开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚-低耦合原则。 观察者模式的推拉有什么不同?使用场景 推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者需要这些变换后的数据时,往往采用推数据方式; 拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景:当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式。 策略模式和工厂模式有什么不同? 策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换; 工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类 5观察者模式的推拉有什么不同?适用场景 现在要说的分歧在这里: “推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。 “拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。 “推”的好处包括: 页脚内容2

java100道选择题含答案

1. 下列不可作为java语言标识符的是(D) A) a1 B) $1 C) _1 D) 11 2. 有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是(A) A) a1.java B) a1.class C) a1 D) 都对 3. 整型数据类型中,需要内存空间最少的是(D) A) short B) long C) int D) byte 4. Java 类可以作为(C) A) 类型定义机制 B) 数据封装机制 C) 类型定义机制和数据封装机制 D) 上述都不对 5. 在创建对象时必须(C) A) 先声明对象,然后才能使用对象 B) 先声明对象,为对象分配内存空间,然后才能使用对象 C) 先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象 D) 上述说法都对 6. 在调用方法时,若要使方法改变实参的值,可以(B) A) 用基本数据类型作为参数 B) 用对象作为参数 C) A和B都对 D) A和B都不对 7. Java中(C) A) 一个子类可以有多个父类,一个父类也可以有多个子类 B) 一个子类可以有多个父类,但一个父类只可以有一个子类 C) 一个子类可以有一个父类,但一个父类可以有多个子类 D) 上述说法都不对 8. Java语言具有许多优点和特点,哪个反映了Java程序并行机制的特点?(B) A) 安全性B) 多线性C) 跨平台D) 可移植 9. Character流与Byte流的区别是(C) A) 每次读入的字节数不同B) 前者带有缓冲,后者没有 C) 前者是字符读写,后者是字节读写D) 二者没有区别,可以互换使用 10. 以下声明合法的是( D ) A、default String s; B、public final static native int w( )

java设计模式-期末整理

第四章 命令模式 命令模式: 将一个请求封装为一个对象,从而使用户可用不同得请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作(在命令模式中,当一个对象请求另外一个对象调用其方法时,不和被请求的对象直接打交道,而是把这种请求封装到一个称为“命令”的对象中,其封装手段是将“请求”封装在一个命令对象的一个方法中,命令模式的核心就是使用命令对象来方法调用。) 命令模式的四个角色: 接收者(Receiver ):接收者是一个类的实例,负责执行与请求相关的操作 命令接口(Command ):命令是一个接口,规定了用来封装“请求”的若干个方法。如execute ()、undo ()。 具体命令(ConcreteCommand ):是实现命令接口的实例 请求者(Invoke ):是一个包含Command 接口变量的类的实现 单向关联 命令模式的优点: 1:请求者不与接收者直接交互联系(即请求者不包含接收者的引用),他们之间无耦合关系 2:满足开闭原则。如在增加新的具体命令和接收者时,不必修改请求者的代码,反之在增加新的请求者时,也不必修改具体命令和接收者的代码 3:由于请求者的请求被封装到了具体命令中,这个命令在需要时可重复使用,使用命令模式可以记录日志 4:使用命令模式可以是“请求”排队,因此可以按一定的顺序执行这些命令 第五章 观察者模式 观察者模式: 定义对象间一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并自动更新。(观察者模式是关于多个对象 想知道一个对象中数据变化情况的一种成熟模式。观察者模式中有一个称为“主题”的对象和多个称作“观察者”的对象,“主题”和“观察者”间是一种一对多的依赖关系,当“主题”发生变化时,所有的“观察者”得到通知。) 《interface 》 Comman d +execute ():void Invoke command :Command +executeCommand ():void Receiver command:Command +action():void ConcreteCommand Receiver:Receiver +execute():void

JAVA填空选择题库

一、选择题(共10道题,每道题有4个选项,只有一个选项是正确的;每道题2分,共计20分) 1.下面哪一个文件包含名为HelloWorld的类的字节码(B)。 A.HelloWorld.java B.HelloWorld.class C.HelloWorld.exe D.HelloWorld.javadoc 2.JDK6.0版本成功安装后,在指定的安装位置将出现jdk1.6.0_21目录,该目录下用于存放编译器、解释器等各类工具的子目录是(C)。 A.jre B.lib C.bin D.demo 3.编译运行以下程序后,关于输出结果的显示正确的是(D)。 public class Test{ public static void main(String args[ ]){ byte b=2, e=3; //---------------1 byte f=b+e; //----------------2 System.out.println(f); } } A.编译通过,运行时打印输出5B.编译通过,运行时打印输出23 C.编译不通过,在//1处有错误,不能这样定义变量 D.编译不通过,在//2处有错误,因为此处f必须是一个int类性的变量 4.类的设计要求它的某个成员变量不能被任何外部类直接访问,则使用下面的哪个修饰符能够获得需要的访问控制(A)A.private B.default C.protected D.public 5.已知给出以下代码,则下列选项中正确的是(C)。 public interface Top{ public void twiddle(String s); } A.public abstract class Sub implements Top{ public abstract void twiddle(String s){ } } C.public abstract class Sub implements Top{ } B.public class Sub extends Top{ public void twiddle(Integer i){ } } D.public class Sub implements Top{ public void twiddle(Integer i){ 6.下列哪个选项可以计算出角度为42度的余弦值(B)。 A.double d=Math.cos(42); B.double d=Math.cos(Math.toRadians(42)); C.double d=Math.conine(42) ; D.double d=Math.cos(Math.toDegrees(42)); 7.给定一个未完成的方法,代码如下: 1: 2:{ success = connect( ); 3:if (success==-1) { 4:throw new TimedOutException(); 5:} 6:} 已知TimedOutException不属于RuntimeException,那么在第一行的位置上填写哪段代码能够完成该方法的声明?(D)A.public void method() B.public void method() throw TimedOutException C.public void method() throws RuntimeException D.public void method() throws TimedOut Exception 8.当编译并运行下列代码时其运行结果是(A)。

java程序设计模拟试题四

《Java 程序设计》模拟试题四 一、选择题(每小题2分,共20分) 1. 以下哪个是合法的标识符? ( C ) A. 7star B. else C. my$ D. super 2. 设有对象obj 具有属性a 则访问该属性的方法为( A )。 A. obj.a B. a.obj() C. a.obj D. obj.a() 3. 下列关于关键字this 和super 的说法正确的是( C )。 A. this 是调用父类的方法和变量 B. super 是调用本类中的方法 C. super 是调用父类的方法和变量 D. 没有区别 4. 以下关于重载(overload )的定义哪个正确?( B ) A.在一个类中,定义了多个具有相同名字的方法,但这些方法有不同的输出参数。 B.在一个类中,定义了多个具有相同名字的方法,但这些方法有不同的输入参数。 C.在一个类中,定义了多个具有相同名字的方法,并且这些方法有相同的输入参数。 D.在一个方法体中定义了多行代码。 5. 有如下代码段: int i=2; int j=3; if((i==2)||(j++==3)) i++; if((j==4)||(i++==3)) j++; System.out.printf("i="+i+"j="+j); 该程序运行的结果为: ( C )。 A .i=4,j=4 B.i=3,j=5 C .i=4,j=5 D.以上都不是 6. Java 程序用以下哪个命令可编译源文件? ( D ) A. Java B. appletviewer C. Javadoc D. Javac 7. 以下说法正确的个数为 ( B )。 ①构造方法中this 语句必须放在第一句; ②构造方法中super 语句不一定放在第一句; ③final 修饰的变量只能赋值一次; ④static 修饰的变量在该对象的一个实例中被修改,在另一个实例中也可以取得该变量的新值。 A. 1 B. 2 C. 3 D. 4 8. 下列修饰词,可以用来定义接口中方法的为 ( C )。 A. private B. protected C. public D.以上都不是 9. 关于继承的说法正确的是( B )。 A.子类将继承父类所有的属性和方法。 B.子类将继承父类的非私有属性和方法。 C.子类只继承父类public 方法和属性 D.子类只继承父类的方法,而不继承属性 10. 下列关于Java 程序中数组的使用说法正确的是( A )。 A.数组必须在使用前定义 B.同一个数组中的元素类型必须不同 C.数组是一种特殊的变量不需在使用前声明 D.数组的元素不可以是数组 评分标准:本题为单项选择题,每小题2分,共10道小题,共20分;每小题选对给2分,选错、多选、不选不给分也不扣分。 二、填空题(每空1分,共10分) 1. Java 的特点有: 简单性、可靠性和安全性、面向对象、平台无关和解释执行、分布式、多线 程等 (不少于4条)。 评分标准:只要写出四条即可给1分,不写或少于四条不给分,也不扣分。 2. Java 的注释有以下三种: 单行注释(//)、多行注释(/* */)、文档注释(/** */) 。 评分标准:本题答案不唯一,只要写出3条即可给1分,不写或少于3不给分,也不扣分。备注:不写汉字,只写括号中的符号也算正确,或者汉字和符号的组合也对。 3. 建立文件”file.txt ”的字节输入流的语句是 FileInputStream in=new FileInputStream (”file.txt ”) 。 评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。备注:本题答案不唯一,只要是表达出使用字节流类进行文件的字节输入即可,变量名可以不同,只要符合标识符的定义即可。 4. Java 中所有类都是类 Object 的子类。 评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。备注:首字母必须大写,否则算错不给分,写对象也算正确。 5. Throwable 的两个直接子类是 Error 、 Exception ,在方法头部声明方法可能会 抛出异常使用 throws 关键字。 评分标准:本题正确给3分,不正确或不写、错误不给分也不扣分。备注:Error 、Exception 的首字母必须大写,否则算错不给分;写出对应的汉语也算正确。 6. abastract 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在 抽象类中定义。 final 方法是不能被当前类的子类重新定义的方法。 评分标准:本题正确给2分,不正确或不写、错误不给分也不扣分。备注:写出对应的汉语也算正确,例如,抽象和最终。 7. 按照功能组织类和接口的名称空间称为 package 。 评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。备注:写出对应的汉语也算正确,例如,包。 三、简答题(每小题5分,共20分) 1. 有如下程序: Moveable.java 文件中有如下代码 interface Moveable{ void move(int x,int y); void jump(int x, int y); } Monkey.java 中如下代码: class Monkey implements Moveable{ public void jump(int x,int y){ System.out.printf(“I am jumping from %d to %d ”,x,y); } 专业班级: 姓名: 学号: …………………………密………………………………封………………………………线…………………………

最新java设计模式考试题资料

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使用者

Java高级编程选择题

1.Thread类用来创建和控制线程,一个线程从下面( )方法开始执行。 A.init() B.start() C.run() D.notifyAll() 2.实现线程体的方式除了继承Thread类,还可以实现( )接口。 A.Cloneable B.Runnable C.Iterable D.Serializable 3.哪个方法是实现Runnable接口所需的? A.wait() B.run() C.stop() D.update() 4.下面让线程休眠1分钟的正确方法是() A.sleep(1) B.sleep(60) C.sleep(1000) D.sleep(60000) 5.以下哪个最准确描述synchronized关键字? A.允许两线程并行运行,而且互相通信; B.保证在某时刻只有一个线程可访问方法或对象; C.保证允许两个或更多处理同时开始和结束; D.保证两个或更多线程同时开始和结束。 6.于Java语言的内存回收机制,下列选项中最正确的一项是( )。 A.Java程序要求用户必须手工创建一个线程来释放内存 B.Java程序允许用户使用指针来释放内存 C.内存回收线程负责释放无用内存 D.内存回收线程不能释放内存对象 7.在java程序中,下列关于线程的说法错误的是: ( ) A.run方法是运行线程的主体 B.多个进程运行时执行顺序是按顺序执行的 C.如果线程死亡,它便不能运行 D.在java中,高优先级的可运行线程会抢占低优先级线程 8.编写线程类,要继承的父类是: A.Object

B.Runnable C.Exception D.Thread 9.启动一个线程的方法是哪项? A . join ( ) B . runf ) C . start ( ) D . sleep ( ) 10.编写线程类,可以通过实现那个接口来实现? A.Runnable B.Throwable C.Serializable https://www.doczj.com/doc/7010454658.html,parable 11.当一个处于阻塞状态的线程解除阻塞后,它将回到哪个状态? A.运行中状态 B.结束状态 C.新建状态 D.可运行状态 12.在网络编程中,为了定位一个进程,我们需要确定() A.端口号 B.IP地址 C.IP地址和端口号 D.都不是 13.为了从文本文件中逐行读取内容,应该使用哪个处理流对象? A.BufferedReader B.BufferedWriter C.Bufferedlnputstream D.Bufferedoutputstream 14.要使用java程序访问数据库,则必须首先与数据库建立连接,在建立连接 前,应加载数据库驱动程序,该语句为() A.(“ rs= (“”,””,””).createStatement() B.Statement st= (“”,””,””).createStaement() 15.要使用java程序访问数据库,则必须首先与数据库建立连接,该语句为() A.(“ rs= (“”,””,””).createStatement() B.Statement st= (“”,””,””).createStaement() 16.Java程序与数据库连接后,需要查看某个表中的数据,使用下列哪个语句?

软件设计模式(JAVA)习题答案

软件设计模式(Java版)习题 第1章软件设计模式基础 1.1 软件设计模式概述 1.2 UML中的类图 1.3 面向对象的设计原则 一、名词解释 1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展 一个系统的行为。 2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。 4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结, 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、单选择题 1.( A ) 2.( A ) 3. ( A ) 4. ( D ) 5. ( D ) 6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E ) 11.( C ) 12.( C ) 13. ( A ) 三、多选择题 1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题 1.依赖倒转、迪米特法则、单一职责 2.模式名字、目的、问题、解决方案、效果、实例代码 3.超类、子类 4.开闭 5.用户 6.依赖倒转 7.组合/聚合 8.结构型、行为型 9.依赖倒转 10.开闭 11.需求收集是否正确、体系结构的构建是否合理、测试是否完全 12.人与人之间的交流 13.接口 14.名称、目的、解决方案 15.对象组合、类继承

16.对象组合 17.对象组合、类继承 18.抽象类的指针 五、简答题 1.答:设计模式按类型分为以下三类: 1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 2.答:设计模式的主要优点如下: 1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交 流,使得设计方案更加通俗易懂。 2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。 3)设计模式使得设计方案更加灵活,且易于修改。 4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。 5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。 3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效 果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 4.答:正确使用设计模式具有以下优点: ⑴可以提高程序员的思维能力、编程能力和设计能力。 ⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从 而缩短软件的开发周期。 ⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

java选择题

1、Java属于以下哪种语言?() A、机器语言 B、汇编语言 C、高级语言 D、以上都不对 2、在JDK安装目录下,用于存放可执行程序的文件夹是? A、bin B、jre C、lib D、db 3、下列Java命令中,哪一个可以编译HelloWorld.java文件? A、java HelloWorld B、java HelloWorld.java C、javac HelloWorld D、javac HelloWorld.java 4、以下关于java命令作用的描述中,正确的是 A、它专门负责解析由Java编译器生成的.class文件 B、它可以将编写好的Java文件编译成.class文件 C、可以把文件压缩 D、可以把数据打包 5、下面关于配置path环境变量作用的说法中,正确的是() A、在任意目录可以使用javac和java命令 B、在任意目录下可以使用class文件 C、在任意目录可以使用记事本 D、在任意目录下可以使用扫雷游戏 6、下面关于path和classpath的说法中,错误的是() A、path用来指定java 虚拟机(JVM) 所在的目录 B、classpath用来指定我们自己所写的或要用到的类文件(.jar文件) 所在的目录 C、在dos命令行中,classpath和path环境变量的查看与配置的方式不相同 D、只要设置了classpath 这个环境变量系统就不会再在当前目录下查询某个类 7、下面关于classpath的说法中,错误的是()。 A、classpath和path环境变量的查看与配置的方式完全相同。 B、为了让Java虚拟机能找到所需的class文件,就需要对classpath环境变量进行设置。 C、从JDK5.0开始,如果classpath环境变量没有进行设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。 D、在命令行窗口中配置了classpath后,重新打开新命令行窗口依然生效 8、下面哪种类型的文件可以在Java虚拟机中运行?() A、.java B、.jre C、.exe D、.class 9、阅读下段代码片段,选择正确的运行结果 public static void main(String[] args) {

Java程序设计预赛模拟题-2

一、单选题 1.Java JDK中调试器的命令是( )。 A. javac B. java C. jdb D. javah 2.运行jar文件中class文件需要在java命令后面加的参数为()。 A. -cp B. -g C. -d D. -verbose 3.下面哪项在java中是不合法的标识符?() A. $user B. point C. You&me D. _endline 4.下列哪一项不是Java保留字?() A. sizeof B. super C. abstract D. break 5.下列哪个布局管理器中的按钮位置有可能会根据Frame的大小改变而改变? () A. BorderLayout B. CardLayout C. GridLayout D. FlowLayout 6.下面哪些java语句会导致无限循环?( ) I. while (true) i = 0; II. while (false) i = 1; III. while (!false) i = 0; A. III only B. I and III only C. I only D. I, II and III 7.下面是Example.java文件的完整代码,请找出会产生编译错误的行()。 1) class BaseClass { 2) public String str; 3) public BaseClass(){ 4) System.out.println(“ok”);} 5) public BaseClass(String s){ 6) str=s;}} 7) class SubClass extends BaseClass{ 8) } 9) public class Example{ 10) public void method(){ 11) SubClass s=new SubClass(“hello”); 12) BaseClass b=new BaseClass(“world”); 13) } 14) } A. 7 B. 10 C. 11 D.12 8.可以在下面代码段point x处写入的是()。 //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9.下面关于事件监听的说明,哪一个语句是正确的?() A. 所有组件,都不允许附加多个监听器 B. 如果多个监听器加在一个组件上,那么事件只会触发一个监听器 C. 组件不允许附加多个监听器

Java中常见设计模式面试题

Java中常见设计模式面试题 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1.请列举出在JDK中几个常用的设计模式? 单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。 2.什么是设计模式?你是否在你的代码里面使用过任何设计模式? 设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸 3.Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式 单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。https://www.doczj.com/doc/7010454658.html,ng.Runtime是单例模式的经典例子。从 Java 5 开始你可以使用枚举(enum)来实现线程安全的单例。 4.在 Java 中,什么叫观察者设计模式(observer design pattern)?

Java选择题100道

期末不解释Java选择题100道(三)来源:井淼WILL的日志 1. 若a的值为3时,下列程序段被执行后,c的值是多少?( C ) if ( a>0 ) if ( a>3 ) c = 2; else c = 3; else c = 4; A、1 B、2 C、3 D、4 2. 下面哪一个操作符的优先级最高?( D ) A、&& B、|| C、! D、( ) 3. 下列方法头中哪一个不与其他方法形成重载(overload)关系?( D ) A、void mmm() B、void mmm(int i) C、void mmm(String s) D、int mm() 4. 编译Java程序的命令是:( B ) A、appletviewer B、javac C、java D、javadoc 5. 编译Java源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A、.byte B、.class C、.html D、.exe 6. 执行语句int i = 1, j = ++i; 后i与j的值分别为( D )。 A、1与1 B、2与1 C、1与2 D、2与2

7. main方法是Java应用程序执行的入口点,关于main方法的方法头以下哪项是合法的?( B ) A、public static void main() B、public static void main(String[] args ) C、public static int main(String [] arg ) D、public void main(String arg[] ) 8. 下列哪个选项不是Java语言的特点?( D ) A、面向对象 B、高安全性 C、平台无关 D、面向过程 9. 下列哪个是合法的Java标识符?( B ) A、Tree&Glasses B、FirstJavaApplet C、*theLastOne D、273.5 10. 下面的选项中,哪一项不属于“汽车类”的行为( D )。 A、启动 B、刹车 C、减速 D、速度 11. 下面哪一个循环会导致死循环?( C ) A、for (int k = 0; k < 0; k++) B、for (int k = 10; k > 0; k--) C、for (int k = 0; k < 10; k--) D、for (int k = 0; k > 0; k++) 12. 有如下程序段: int a = b = 5; String s1 = "祝你今天考出好成绩!"; String s2 = s1; 则表达式a == b与s2 == s1的结果分别是:( A )。 A、true与true B、false与true C、true与false D、false与false

相关主题
文本预览
相关文档 最新文档