【java面试题】OOA/D 与UML

  |   0 评论   |   1,002 浏览

1、UML 是什么?常用的几种图?【基础】

答:UML 是标准建模语言;常用图包括:用例图,静态图(包括类图、对象图和包

图),行为图,交互图(顺序图,合作图),实现图。

2、编程题: 写一个Singleton 出来。【基础】

答:Singleton 模式主要作用是保证在Java 应用程序中,一个类Class 只有一

个实例存在。举例:定义一个类,它的构造函数为private 的,它有一个static

的private 的该类变量,在类初始化时实例话,通过一个public 的getInstance

方法获取对它的引用,继而调用其中的方法。

第一种形式:

public class Singleton {

private Singleton(){}

private static Singleton instance = new Singleton();

public static Singleton getInstance(){

return instance;

}

}

第二种形式:

public class Singleton {

private static Singleton instance = null;

public static synchronized Singleton getInstance(){

if (instance==null)

instance=new Singleton();

return instance;

}

}

其他形式: 定义一个类,它的构造函数为private 的,所有方法为static 的。

一般认为第一种形式要更加安全些。

3、说说你所熟悉或听说过的j2ee 中的几种常用模式?及对设计模式的一些看法。【中等难度】

答:Session Facade Pattern:使用SessionBean 访问EntityBean;

Message Facade Pattern:实现异步调用;

EJB Command Pattern:使用Command JavaBeans 取代SessionBean,实现

轻量级访问;

Data Transfer Object Factory:通过DTO Factory 简化EntityBean 数据

提供特性;

Generic Attribute Access:通过AttibuteAccess 接口简化EntityBean

数据提供特性;

Business Interface:通过远程(本地)接口和Bean 类实现相同接口规范

业务逻辑一致性;

EJB 架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可

重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。

4、Java 中常用的设计模式?说明工厂模式?【中等难度】

答:Java 中的23 种设计模式:Factory( 工厂模式),Builder( 建造模式), Factory

Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),

Facade(门面模式),Adapter(适配器模式), Bridge(桥梁模式), Composite

(合成模式),Decorator(装饰模式), Flyweight(享元模式), Proxy(代

理模式),Command(命令模式), Interpreter(解释器模式), Visitor(访

问者模式),Iterator(迭代子模式), Mediator(调停者模式), Memento

(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策

略模式),Template Method(模板方法模式), Chain Of Responsibleity(责

任链模式)。

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根

据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父

类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首

先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需

要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实

例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实

例。

5、开发中都用到了那些设计模式?用在什么场合? 【中等难度】

答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题

的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,

无需在重复相同的工作。主要用到了MVC 的设计模式,用来开发JSP/Servlet

或者J2EE 的相关应用;及简单工厂模式等。

6、你对软件开发中迭代的含义的理解;【中等难度】

答:软件开发中,各个开发阶段不是顺序执行的,应该是并行执行,也就是迭代

的意思。这样对于开发中的需求变化,及人员变动都能得到更好的适应。

本文为博主原创文章,未经博主允许不得转载。

评论

发表评论