《最新Java方向常见面试题.doc》由会员分享,可在线阅读,更多相关《最新Java方向常见面试题.doc(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJava方向常见面试题一Java方向常见面试题1.JSP中动态include与静态include的区别? 动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面2. 多线程有几种实现方法,都是什么?同步有几种实现方法,
2、都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify(创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例;class PrimeThread extends Thread long minPrime; PrimeThread(long minPrime) this.minPrime = minPrime; public void run() / compute primes larger
3、 than minPrime . PrimeThread p = new PrimeThread(143); p.start();创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。class PrimeRun implements Runnable long minPrime; PrimeRun(long minPrime) this.minPrime = minPrime; public void run() / compute primes larger than minPrim
4、e . PrimeRun p = new PrimeRun(143); new Thread(p).start();)3. Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。String不是基本数据类型,是一个对象。基本数据类型不是对象,是一个内存值,如:int,long,short,byte,boolean.char。4. 写一个方法,实现字符串的反转,如:输入abc,输出cbaStringBuffer sb = new StringBuffer(abcdefg); String str= sb.reverse().toString();5. 编码转换,怎样实现将GB
5、2312编码的字符串转换为ISO-8859-1编码的字符串。String str=new String(“中”.getBytes(“GB2312”,”ISO-8859-1”);6.error和exception的区别?error:表示恢复不是不可能但很困难的情况下的严重错误,比如说内存溢出,不可能指望程序能处理这种错误;exception:表示一种设计或实现问题。它表示程序运行正常,从来不发生的情况。7.是否可以继承String类?不可以。String是final类。8.给我一个最常见的运行时异常runtime exception答:NullPiontExceptionSQLException
6、ClassNotFoundExceptionArithmeticExceptionFileNotFoudExceptionIOException9. 接口是否可继承接口, 抽象类是否可实现(implements) 接口, 抽象类是否可继承具体类答:接口可以继承接口。抽象类可以实现接口。抽象类可以继承具体类(concrete class)。10. 构造器是否可被override?可以,通过子类覆盖。11.abstract的method方法是否可以同时是static,是否可以同时是native,是否可以同时是synchronized?答:Abstract不可以与static合用Abstract不可
7、以与native合用Abstract不可以与synchronized合用12.Java有没有Goto?有,但没有用13. 数组有没有length()这个方法?String有没有length()这个方法?答:数组有length这个属性,没有length()方法String有length()这个方法,没有length属性15. String ,Stringbuffer和StringBuilder的区别?java.lang.String是字符串常量;它们的值在创建之后不能改变。java.lang.StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些
8、方法进行同步。StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。java.lang.StringBuilder一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,
9、因为在大多数实现中,它比 StringBuffer 要快。在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。String a = a;/假设a指向地址0x0001,a = b;/重新负值后a指向地址0x0002,但0x
10、0001地址中保存的a依旧存在,但已经不再是a所指向的。从表面上看String类型的对象改变了值,但事实是他不能改变值,只能改变指向的地址StringBuffer则不同,直接改变指向的地址中保留的值还有StringBuffer s1 = new StringBuffer(a);StringBuffer s2 = new StringBuffer(a);s1.equals(s2)/为什么是falseString s1 = new String(a);String s2 = new String(a);s1.equals(s2)/为什么是trueStringBuffer类中没有重新定义equals
11、这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较地址的,所以等于false.String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以会是true。16.final,finally,finalize之间的区别?final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为
12、final的方法也同样只能使用,不能重载 finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之
13、前对这个对象调用的。17. forward和redirect的区别?Redirect(重定向):这个方式的重定向是通过服务器收到请求后发送一个状态头给客户,客户再请求一次而实现的,因此它的效率可能要低一些,而且上一页面的资料和状态将不会被重定向到新的页面。Forward(转发):这种重定向其实是服务器控制权的转向,客户端发来的请求将交由新的页面进行处理,而且使用这种重定向,可以将一个页面的资料和状态传到被重定向的页面。而且客户端浏览器的地址栏也不会显示转向后的地址。重定向的速度比转发要慢,因为浏览器得发出一个新的请求。18.Servlet和JSP以及applet之间的关系是什么?applet是
14、客户端的程序,它们可以直接嵌入到网页或者其他特定的容器中,并能够产生特殊的效果。 servlet是服务器端的程序,用于实现服务器功能的扩充,响应客户端请求。Servlet一般用在MVC中的控制器中,其作用是很强大的,但是如果将它用在表现层将会非常不方便。 jsp 则是对servlet简化,用于方便输出动态页面,实质上就是servlet。JSP一般用作MVC中的视图。19.C/S与B/S的区别?答:C/S模式,指client与server 。特点是安全、快捷、准确。B/S模式,指browser与server。具有节省投资、跨地域广的优点。速度上没什么区别,领域上,BS更适合于一些远程数据库的管理
15、,但受限于浏览器功能,对于要求效率、避免繁琐来说,BS还是不错的。C/S 与 B/S 区别: 答:Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的. 1硬件环境不同: 答:C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 2对安全要求不同 答:C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息
16、系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群. 3对程序架构不同 答:C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4软件重用不同 答:C/S 程序可
17、以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5系统维护不同 答:系统维护是软件生存周期中,开销大, -重要 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6处理问题不同 答:C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应
18、该都是相同的系统 B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7用户接口不同 答:C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高 B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8信息流不同 答:C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低 B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心20. &和&的区别答:&是位运算符。&是布尔逻辑运算符。21. HashMap和Hashtable的区别答:都属于
19、Map接口的类,实现了将惟一键映射到特定的值上。 HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。 Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。 22. Collection 和 Collections的区别答: Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 Collection是个java.util下的接口,它是各种集合结构的父接口。23. sleep() 和 wait() 有什么区别? 搞线程的最爱 答:sleep()方法是使线
20、程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级;(b)正在运行的线程因为其它原因而阻塞wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 24. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间
21、多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 25. List, Set, Map是否继承自Collection接口? List,Set是 Map不是 26. 接口是否可继承接口? 抽象类是否可实现(implement
22、s)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 27. 启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。28. C+和Java对象的区别小结-封装,继承,多态1C+的对象可以分配在heap(堆中)和stack(堆栈中),而java的对象只能在heap;因此,J
23、ava对象都是全局的,当没有引用时,由GC负责回收,生命周期不明确,所以Java没有析构函数,资源管理要靠try catch finally; 2C+,stack中的对象在调用方法退出后会调用析构函数,heap中的对象delete时自动调用析构函数,所以会有RAII(Resource Acquisition Is Initialization); 3Java中类的非静态方法都是虚拟的(virtual),而C+必须明确指出哪些方法是virtual; 4Java没有指针,对象是全局的,分配在heap中,创建和赋值都很简单;C+的多态(polymorphism)要靠指针,虚拟函数表(vtalbe);
24、因此引申出了拷贝构造函数,赋值构造函数,当然这和RAII也有关系。5C+支持多重继承,这是C+的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很。29. JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet的构架部件
25、page JSP网页本身 exception 针对错误网页,未捕捉的例外30. GC是什么? 为什么要有GC? (基础)GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。31. .XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 本题三个答题点:a:两种形式dtd,schemab:本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)c:两种主要方式:dom,sax.32. 简述synchronized和java.util.concurrent.locks.Lock的异同?主要相同点
26、:Lock能完成synchronized所实现的所有功能.(其它不重要)主要不同点:Lock有比synchronized更精确的线程语义和更好的性能(在相同点中回答此点也行)synchronized会自动释放锁.而Lock一定要求程序员手工释放.并且必须在finally从句中释放,如果没有答出在finally中释放不得分.就如Connection没有在finally中关闭一样.连最基本的资源释放都做不好,还谈什么多线程编程.33. EJB规范规定EJB中禁止的操作有哪些? 共有8点,答出下列3-4点得满分.1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等)2
27、.不能操作awt3.不能实现服务器功能4.不能对静态属生存取.5.不能使用IO操作直接存取文件系统6.不能加载本地库.7.不能将this作为变量和返回.8.不能循环调用.34.Jsp中的内置对象及方法request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使
28、你能用于向浏览器回送输出结果。 pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 config表示一个javax.servlet.ServletConfi
29、g对象。该对象用于存取servlet实例的初始化参数。 page表示从该页面产生的一个servlet实例35.说出四种会话技术,并作出相应的描述 Cookie-服务器在一个应答首部传递给浏览器的名称/值对。浏览器保存的时间由cookie的过期时间属性来指定。当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie。url重写-把会话ID编码在URL中。这样,即使浏览器不支持cookie,也能够实现会话跟踪。对于URL复写,服务器从请求的URI中提取出会话ID,并把该请求与相应的会话关联起来,然后在访问会话数据的时候,JSP页面
30、所进行的处理方式就和使用cookie跟踪会话id时所使用的方式完全相同。所以sesssion的实现要依靠cookie或URL复写技术。如果想为不支持cookie的浏览器提供会话跟踪,就必须使用行为对应用程序中的所有URL进行复写。这意味着应用程序中的所有页面(至少是那些带有对其他页面引用的页面)都必须是JSP页面,这样页面引用才能以动态方式进行编码,如果遗漏了一个ur,那么服务就会失去对会话的跟踪。session-在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示符(session ID)。浏览器发送sessionID,服务器跟踪与该会话相关联的所有信息。传递sessionID可以通
31、过cookie和URL复写技术,大部分容器都支持这两种技术。服务器无法分辨用户是否关闭了浏览器,因此关闭浏览器意味着与先前的会话关联的所有会话数据都保留在服务器上,直到会话超时,服务器销毁会话对像。隐藏域-隐藏表单域是将会话ID添加到HTML的隐藏表单中(类型为hidden的input)。36. Java中的异常处理机制的简单原理和应用。当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullP
32、ointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。37.到目前为止,你了解的设计模式有那些?并谈谈你的看法38. 静态变量和实例变量的区别?static i = 10; /常量; class A a; a.i =10;/可变39.java中实现多态的机制是什么?方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类
33、中多态性的一种表现。40. 什么是java序列化,如何实现java序列化?序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStr
34、eam对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。41.名词解释:JMS,JTA,JNDI, JRE, JVM,NCSA,进程,URL,RPC JMS -Java Message Service。JMS是一个企业级消息系统。JVM的功能大致上分为两块,叫做消息制造和消息消耗。JTA -Java Transaction API(JTA)。JTA 是事务服务的 J2EE 解决方案。本质上,它是描述事务接口(比如 UserTransaction 接口,开发人员直接使用该接口或者通过 J2EE 容器使用该接口来确保业务逻
35、辑能够可靠地运行)的 J2EE 模型的一部分。JTA 具有的三个主要的接口分别是 UserTransaction 接口、TransactionManager 接口和 Transaction 接口。模型明确的事务服务的好处是对于每个单独的事务总是维持四个 ACID 特性。(JNDI - Java 命名和目录接口。JNDI 在 J2EE 中的角色就是“交换机” J2EE 组件在运行时间接地查找其他组件、资源或服务的通用机制。在多数情况下,提供 JNDI 供应者的容器可以充当有限的数据存储,这样管理员就可以设置应用程序的执行属性,并让其他应用程序引用这些属性(Java 管理扩展(Java Manag
36、ement Extensions,JMX)也可以用作这个目的)。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,这样组件就可以发现所需要的资源,而不用了解这些间接性。JRE- java 运行时环境。由想要重新分布 JRE 的终端用户和开发者使用。JRE 包括 Java 虚拟机、Java 核心类及支持文件。JVM- Java 虚拟机。Java 运行时环境负责解释 Java 字节码的部分。NCSA- National Center for Supercomputer Applications(国家超级计算机应用中心)。进程-是指一段包含一个或多个线程的虚拟地址空间URL-统一资源定位器
37、。是一种标准,即对 WWW 中的任一块数据用一段文字来加以引用。RPC-远程过程调用。是指将网络信息包发送给某个远程主机,它执行起来类似一般的过程调用(或方法调用)。42int 和 Integer 有什么区别Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble引用类型和原始类型的行为完全不
38、同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。43. jsp有哪些动作?作用分别是什么? 答:JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:
39、forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记44. 应用服务器与WEB SERVER的区别?应用服务器:Weblogic、Tomcat、Jboss; WEB SERVER:IIS、 Apache45. 排序都有哪几种方法?请列举。用JAVA实现一个快速排序。排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。/ /使用快速排序方法对a 0 :n- 1 排序,从a 0 :n- 1 中选择一个元素作为
40、m i d d l e,该元素为支点,把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点,递归地使用快速排序方法对left 进行排序,递归地使用快速排序方法对right 进行排序,所得结果为left + middle + right。46. 常用的设计模式?说明工厂模式。 Java中的23种设计模式:Factory(工厂模式),Builder(建造模式), Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),Adapter(
41、适配器模式), Bridge(桥梁模式), Composite(合成模式),Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)。工厂模式:工厂模式是一种经常被使用到
42、的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。47. J2EE是技术还是平台还是框架?J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。48.EJB和Java
43、Bean的区别? java Bean 是可复用的组件,对java Bean并没有严格的规范,理论上讲,任何一个java类都可以是一个Bean。但通常情况下,由于java Bean是被容器所创建(如Tomcat)的,所以java Bean应具有一个无参的构造器,另外,通常java Bean还要实现Serializable接口用于实现Bean的持久性。java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise java Bean 相当于DCOM,即分布式组件。它是基于java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨
44、计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。49. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。50. 是否可以从一个static方法内部发出对
45、非static方法的调用?不可以,如果其中包含对象的method();不能保证对象初始化.51. J2EE是什么? Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。52. WEB SERVICE名词解释
46、。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 Web Service描述语言WSDLSOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。53. 谈谈你对swing mvc模式的理解?答:Swing号称是完全按照MVC的思路来进行设计的。在设计开始前,Swi