Java笔试题

1.MVC的各个部分都有那些技术来实现?如何实现?

答:MVCModelViewController的简写。"Model" 代表的是应用的业务逻辑(通过JavaBeanEJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

 

2.J2EE是什么?

答:Je22Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

 

3.J2EE是技术还是平台还是框架?

答:J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。

J2EE也是一个框架,包括JDBCJNDIRMIJMSEJBJTA等技术。

 

4.STRUTS的应用(STRUTS架构)

答:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能:

.包含一个controller servlet,能将用户的请求发送到相应的Action对象。

.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。

.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。

 

5.WEB SERVICE名词解释。JSWDL开发包的介绍。JAXPJAXM的解释。SOAPUDDI,WSDL解释。

答:Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。

JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。

JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API

WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。

SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

 

6.C/S B/S 区别:

答:有如下八个方面的不同:

(1)硬件环境不同:

  C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.

  B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行

(2)对安全要求不同

  C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.

  B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。

()对程序架构不同

  C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.

  B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. C/S有更高的要求 B/S结构的程序架构是发展的趋势, MS.Net系列的BizTalk 2000 Exchange 2000, 全面支持网络的构件搭建的系统. SUN IBM推的JavaBean 构件技术等,使 B/S更加成熟.

()软件重用不同

  C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.

  B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

()系统维护不同 

  C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统

  B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.

()处理问题不同

  C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统

  B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.

()用户接口不同

  C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高

  B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.

()信息流不同

  C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低

  B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。

 

7.什么是JNDI

答:(Java Naming & Directory InterfaceJAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

 

8.什么是JMS

答:(Java Message ServiceJAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播

 

9.什么是JTA

答:(Java Transaction APIJAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

 

10.开发中都用到了那些设计模式?用在什么场合?

答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。

 

11.j2ee常用的设计模式?说明工厂模式。

答: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(责任链模式)

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

 

12.UML方面

答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图

 

13.RMI

RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。调用这样一个对象时,其参数为 "marshalled" 并将其从本地虚拟机发送到远程虚拟机(该远程虚拟机的参数为 "unmarshalled")上。该方法终止时,将编组来自远程机的结果并将结果发送到调用方的虚拟机。如果方法调用导致抛出异常,则该异常将指示给调用方。

 


JAVA 基础

 

1.如何获得数组的长度?

数组名.length

 

2.访问修饰符“public/private/protected/缺省的修饰符的使用类?

public :  公共,均可访问

private:  私有的,同一个java类中可以访问.子类不能访问.

protected: 同一个包中的类都可访问.子类可以访问.

缺省,friendly :当前类,同一个包,都可以访问.

作用域           当前类       同一package  子孙类       其他package

public            √              √                  √             √

protected        √              √                  √             ×

friendly          √              √                   ×            ×

private           √              ×                   ×            ×

 

3.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现.

 

一、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。

 

二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。

 

三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。

 

new <类或接口> <类的主体>

 

匿名类

 

匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。

 

这就要采用另一种形式的new语句,如下所示:

 

 

new <类或接口> <类的主体>

 

这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。

 

如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。

 

注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。

 

从技术上说,匿名类可被视为非静态的内部类,所以它们具有和方法内部声明的非静态内部类一样的权限和限制。

 

如果要执行的任务需要一个对象,但却不值得创建全新的对象(原因可能是所需的类过于简单,或者是由于它只在一个方法内部使用),匿名类就显得非常有用。匿名类尤其适合在Swing应用程序中快速创建事件处理程序。

 

exp:

return new Contents() {

private int i = 11;

public int value() { return i; }

};

 

这种奇怪的语法要表达的意思是:创建从Contents衍生出来的匿名类的一个对象。由new表达式返回的句柄会自动上溯造型成一个Contents句柄。匿名内部类的语法其实要表达的是:

 

class MyContents extends Contents {

private int i = 11;

public int value() { return i; }

}

return new MyContents();

若试图定义内部类,并想使用在匿名内部类外部定义的一个对象,则编译器要求外部对象必须是final属性.

public class Parcel9 {

  public Destination

  dest(final String dest, final float price) {

    return new Destination() {

      private int cost;

      // Instance initialization for each object:

      {

        cost = Math.round(price);

        if(cost > 100)

          System.out.println("Over budget!");

      }

      private String label = dest;

      public String readLabel() { return label; }

    };

  }

margin: 0cm 0c

你可能感兴趣的:(java,设计模式,应用服务器,网络应用,企业应用)