Java方向常见面试题

Java方向常见面试题

ID:81537978

大小:174.00 KB

页数:40页

时间:2023-12-14

上传者:U-11476
Java方向常见面试题_第1页
Java方向常见面试题_第2页
Java方向常见面试题_第3页
Java方向常见面试题_第4页
Java方向常见面试题_第5页
Java方向常见面试题_第6页
Java方向常见面试题_第7页
Java方向常见面试题_第8页
Java方向常见面试题_第9页
Java方向常见面试题_第10页
资源描述:

《Java方向常见面试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

Java方向常见面试题1.JSP中动态inelude与静态inelude的区别?动态INCLUDE用jsp:include动作实现它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@includefile="included.htm"%>2.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify(创建新执行线程有两种方法。一种方法是将类声明为Thread的子类。该子类应重写Thread类的run方法。接下来可以分配并启动该子类的实例;classPrimeThreadextendsThread{longminPrime;PrimeThread(longminPrime){this.minPrime=minPrime;}publicvoidrun(){//computeprimeslargerthanminPrime

1Java方向常见面试题1.JSP中动态inelude与静态inelude的区别?动态INCLUDE用jsp:include动作实现它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@includefile="included.htm"%>2.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify(创建新执行线程有两种方法。一种方法是将类声明为Thread的子类。该子类应重写Thread类的run方法。接下来可以分配并启动该子类的实例;classPrimeThreadextendsThread{longminPrime;PrimeThread(longminPrime){this.minPrime=minPrime;}publicvoidrun(){//computeprimeslargerthanminPrime

2}}PrimeThreadp=newPrimeThread(143);p.start();创建线程的另一种方法是声明实现Runnable接口的类。该类然后实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动。classPrimeRunimplementsRunnable{longminPrime;PrimeRun(IongminPrime){this.minPrime=minPrime;}publicvoidrun(){//computeprimeslargerthanminPrime}

3PrimeRunp=newPrimeRun(143);newThread(p).start();)1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。String不是基本数据类型,是一个对象。基本数据类型不是对象,是一个内存值女口:int,long,short,byte,boolean.char。2.写一个方法,实现字符串的反转,如:输入abc,输出cbaStringBuffersb=newStringBuffer("abcdefg");Stringstr=sb.reverse().toString();3.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。Stringstr=newString(“中”.getBytes(“GB2312,”ISO-8859-1”));4.error和exception的区别?,比如说内存溢出,不可能指望,从来不发生的情况。接口,抽象类是否可继承具体error:表示恢复不是不可能但很困难的情况下的严重错误程序能处理这种错误;exception:表示一种设计或实现问题。它表示程序运行正常5.是否可以继承String类?不可以。String是final类。6.给我一个最常见的运行时异常runtimeexception答:NullPiontExceptionSQLExceptionClassNotFoundExceptionArithmeticExceptionFileNotFoudExceptionlOException

41.接口是否可继承接口,抽象类是否可实现(implements)类答:接口可以继承接口。抽象类可以实现接口。抽象类可以继承具体类(concreteclass)。2.构造器是否可被override?可以,通过子类覆盖。3.abstract的method方法是否可以同时是static,是否可以同时是native,是否可以同时是synchronized?答:Abstract不可以与static合用Abstract不可以与native合用Abstract不可以与synchronized合用4.Java有没有Goto?有,但没有用5.数组有没有length()这个方法?String有没有length()这个方法?答:数组有length这个属性,没有length()方法String有length()这个方法,没有length属性15.String,Stringbuffer和StringBuilder的区别?java.lang.String是字符串常量;它们的值在创建之后不能改变。

5java.lang.StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步。StringBuffer上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append方法始终将这些字符添加到缓冲区的末端;而insert方法则在指定的点添加字符。java.lang.StringBuilder—个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。在StringBuilder上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。append方法始终将这些字符添加到生成器的末端;而insert方法则在指定的点添加字符。将StringBuilder的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用

6StringBuffer。Stringa="a";//假设a指向地址0x0001,a="b";〃重新负值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的。从表面上看String类型的对象改变了值,但事实是他不能改变值,只能改变指向的地址StringBuffer则不同,直接改变指向的地址中保留的值还有StringBuffersi=newStringBuffer("a");StringBuffers2=newStringBuffer("a");s1.equals(s2)〃为什么是falseStringsi=newString("a");Strings2=newString("a");s1.equals(s2)〃为什么是trueStringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较地址的,所以等于false.String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以会是true。15.final,finally,finalize之间的区别?final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为

7final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally—再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。finalize—方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。15.forward和redirect的区别?

8Redirect(重定向):这个方式的重定向是通过服务器收到请求后发送一个状态头给客户,客户再请求一次而实现的,因此它的效率可能要低一些,而且上一页面的资料和状态将不会被重定向到新的页面。Forward(转发):这种重定向其实是服务器控制权的转向,客户端发来的请求将交由新的页面进行处理,而且使用这种重定向,可以将一个页面的资料和状态传到被重定向的页面。而且客户端浏览器的地址栏也不会显示转向后的地址。重定向的速度比转发要慢,因为浏览器得发出一个新的请求。15.Servlet和JSP以及applet之间的关系是什么?applet是客户端的程序,它们可以直接嵌入到网页或者其他特定的容器中,并能够产生特殊的效果。servlet是服务器端的程序,用于实现服务器功能的扩充,响应客户端请求。Servlet一般用在MVC中的控制器中,其作用是很强大的,但是如果将它用在表现层将会非常不方便。jsp则是对servlet简化,用于方便输出动态页面,实质上就是servlet。JSP一般用作MVC中的视图。16.C/S与B/S的区别?答:C/S模式,指client与server。特点是安全、快捷、准确。B/S模式,指browser与server。具有节省投资、跨地域广的优点。速度上没什么区别,领域上,BS更适合于一些远程数据库的管理,但受限于浏览器功能,对于要求效率、避免繁琐来说,BS还是不错的。

9C/S与B/S区别:答:Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.1.硬件环境不同:答:C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务.B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备.信息自己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行2.对安全要求不同答:C/S一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息.B/S建立在广域网之上,对安全的控制能力相对弱,面向是不可知的用户群.3.对程序架构不同答:C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑.B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上.比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk2000Exchange2000等,全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等,使B/S更加成熟.4.软件重用不同答:C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好.B/S对的多重结构,要求构件相对独立的功能.能够相对较好的重用.

10就入买来的餐桌可以再利用,而不是做在墙上的石头桌子1.系统维护不同

11答:系统维护是软件生存周期中,开销大,——重要C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级•升级难.可能是再做一个全新的系统B/S构件组成,方面构件个别的更换,实现系统的无缝升级•系统维护开销减到最小•用户从网上自己下载安装就可以实现升级•1.处理问题不同答:C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关.应该都是相同的系统B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的•与操作系统平台关系最小•2•用户接口不同答:C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流.并且大部分难度减低,减低开发成本•&信息流不同答:C/S程序一般是典型的中央集权的机械式处理,交互性相对低B/S信息流向可变化,B-BB-CB-G等信息、流向的变化,更象交易中心15.&和&&的区别答:&是位运算符。&&是布尔逻辑运算符。16.HashMap和Hashtable的区别答:都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap,但是不允许null键和null值。它也比

12HashMap慢,因为它是同步的。15.Collection和Collections的区别答:Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口。16.sleep()和wait()有什么区别?搞线程的最爱答:sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)醒来”的线程具有更高的优先级;(b)正在运行的线程因为其它原因而阻塞wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。17.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

1315.List,Set,Map是否继承自Collection接口?List,Set是Map不是

1415.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。16.启动一个线程是用run()还是start()?启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。17.C++和Java对象的区别小结封装,继承,多态1.C++的对象可以分配在heap(堆中)和stack(堆栈中),而java的对象只能在heap;因此,Java对象都是全局的,当没有引用时,由GC负责回收,生命周期不明确,所以Java没有析构函数,资源管理要靠trycatchfinally;2.C++,stack中的对象在调用方法退出后会调用析构函数,heap中的对象delete时自动调用析构函数,所以会有RAII(ResourceAcquisitionIsInitialization);3.Java中类的非静态方法都是虚拟的(virtual),而C++必须明确指出哪些方法是virtual;

151.Java没有指针,对象是全局的,分配在heap中,创建和赋值都很简单;C++的多态(polymorphism)要靠指针,虚拟函数表(vtalbe);因此引申出了拷贝构造函数,赋值构造函数,当然这和RAII也有关系。2.C++支持多重继承,这是C++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很。15.JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):request用户端请求,此请求会包含来自GET/POST请求的参数response网页传回用户端的回应pageContext网页的属性是在这里管理session与请求有关的会话期applicationservlet正在执行的内容out用来传送回应的输出configservlet的构架部件pageJSP网页本身exception针对错误网页,未捕捉的例外16.GC是什么?为什么要有GC?(基础)GC是垃圾收集器。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。17..XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?本题三个答题点:a:两种形式dtd,schemab:本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)c:两种主要方式:dom,sax.18.简述synchronized禾口java.util.concurrent.locks.Lock的异同?

16主要相同点:Lock能完成synchronized所实现的所有功能.(其它不重要)主要不同点:Lock有比synchronized更精确的线程语义和更好的性能(在相同点中回答此点也行)synchronized会自动释放锁.而Lock一定要求程序员手工释放.并且必须在finally从

17句中释放,如果没有答出在finally中释放不得分•就如Connection没有在finally中关闭一样.连最基本的资源释放都做不好,还谈什么多线程编程•15.EJB规范规定EJB中禁止的操作有哪些?共有8点答出下列3-4点得满分•1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等)2.不能操作awt3.不能实现服务器功能4.不能对静态属生存取.5.不能使用10操作直接存取文件系统6.不能加载本地库.7.不能将this作为变量和返回.8.不能循环调用.16.Jsp中的内置对象及方法request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,header,和session数据的有用的方法。response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息

18applicaton表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。page表示从该页面产生的一个servlet实例15.说出四种会话技术,并作出相应的描述Cookie-----服务器在一个应答首部传递给浏览器的名称/值对。浏览器保存的时间由cookie的过期时间属性来指定。当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie。url重写-----把会话ID编码在URL中。这样,即使浏览器不支持cookie,也能够实现会话跟踪。对于URL复写,服务器从请求的URI中提取出会话ID,并把该请求与相应的会话关联起来,然后在访问会话数据的时候,JSP页面所进行的处理方式就和使用cookie跟踪会话id时所使用的方式完全相同。所以sesssion的实现要依靠cookie或URL复写技术。如果想为不支持cookie的浏览器提供会话跟踪,就必须使用<c:url>行为对应用程序中的所有URL进行复写。这意味着应用程序中的所有页面(至少是那些带有对其他页面引用的页面)都必须是JSP页面,这样页面引用才能以动态方式进行编码,如果遗漏了一个ur,那么服务就会失去对会话的跟踪。session-----

19在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示符(sessionID)。浏览器发送sessionID,服务器跟踪与该会话相关联的所有信息。传递sessionID可以通过cookie和URL复写技术,大部分容器都支持这两种技术。服务器无法分辨用户是否关闭了浏览器,因此关闭浏览器意味着与先前的会话关联的所有会话数据都保留在服务器上,直到会话超时,服务器销毁会话对像。隐藏域——隐藏表单域是将会话ID添加到HTML的隐藏表单中(类型为hidden的input)。15.Java中的异常处理机制的简单原理和应用。当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。16.到目前为止,你了解的设计模式有那些?并谈谈你的看法17.静态变量和实例变量的区别?statici=10;//常量;classAa;a.i=10;//可变18.java中实现多态的机制是什么?方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写

20Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。15.什么是java序列化,如何实现java序列化?序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。16.名词解释:JMS,JTA,JNDI,JRE,JVM,NCSA,进程,URL,RPCJMS——JavaMessageService。JMS是一个企业级消息系统。JVM的功能大致上分为两块,叫做消息制造和消息消耗。JTA——JavaTransactionAPI(JTA)。JTA是事务服务的J2EE解决方案。本质上,它是描述事务接口(比如UserTransaction接口,开发人员直接使用该接口或者通过J2EE容器使用该接口来确保业务逻辑能够可靠地运行)的J2EE

21模型的一部分。JTA具有的三个主要的接口分别是UserTransaction接口、TransactionManager接口和Transaction接口。模型明确的事务服务的好处是对于每个单独的事务总是维持四个ACID特性。(http://www.chinabs.net/webj2ee/default.asp?infoid=393)。JNDI——Java命名和目录接口。JNDI在J2EE中的角色就是交换机”一-2EE组件在运行时间接地查找其他组件、资源或服务的通用机制。在多数情况下,提供JNDI供应者的容器可以充当有限的数据存储,这样管理员就可以设置应用程序的执行属性,并让其他应用程序引用这些属性(Java管理扩展(JavaManagementExtensions,JMX)也可以用作这个目的)。JNDI在J2EE

22应用程序中的主要角色就是提供间接层,这样组件就可以发现所需要的资源,而不用了解这些间接性。JREjava运行时环境。由想要重新分布JRE的终端用户和开发者使用。JRE包括Java虚拟机、Java核心类及支持文件。JVMJava虚拟机。Java运行时环境负责解释Java字节码的部分。NCSANationalCenterforSupercomputerApplications(国家超级计算机应用中心)。进程——是指一段包含一个或多个线程的虚拟地址空间URL统一资源定位器。是一种标准,即对WWW中的任一块数据用一段文字来加以引用。RPC远程过程调用。是指将网络信息包发送给某个远程主机,它执行起来类似一般的过程调用(或方法调用)。42.int和Integer有什么区别Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值

23为null,而原始类型实例变量的缺省值与它们的类型有关。43.jsp有哪些动作?作用分别是什么?答:JSP共有以下6种基本动作jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记44.应用服务器与WEBSERVER的区别?应用服务器:Weblogic、Tomcat、Jboss;WEBSERVER:IIS、Apache45.排序都有哪几种方法?请列举。用JAVA实现一个快速排序。排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。//使用快速排序方法对a[0:n-1]排序,从a[0:n-1]中选

24择一个元素作为middle,该元素为支点,把余下的元素分割为两段left和right,使得Ieft中的元素都小于等于支点,而right中的元素都大于等于支点,递归地使用快速排序方法对left进行排序,递归地使用快速排序方法对right进行排序,所得结果为left+middle+right。43.常用的设计模式?说明工厂模式。Java中的23种设计模式:Factory(工厂模式),Builder(建造模式),FactoryMethod(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),TemplateMethod(模板方法模式),ChainOfResponsibleity(责任链模式)。工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一

25个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。43.J2EE是技术还是平台还是框架?J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。44.EJB和JavaBean的区别?javaBean是可复用的组件,对javaBean并没有严格的规范,理论上讲,任何一个java类都可以是一个Bean。但通常情况下,由于javaBean是被容器所创建(如Tomcat)的,所以javaBean应具有一个无参的构造器,另外,通常javaBean还要实现Serializable接口用于实现Bean的持久性。javaBean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EnterprisejavaBean相当于DCOM,即分布式组件。它是基于java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。45.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

26是值传递。Java编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。43.是否可以从一个static方法内部发出对非static方法的调用?不可以,如果其中包含对象的method();不能保证对象初始化.44.J2EE是什么?Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterprieseapplicationmodel).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietntier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

2743.WEBSERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。WebService描述语言WSDLSOAP即简单对象访问协议(SimpleObjectAccessProtocol),它是用于交换XML编码信息的轻量级协议。UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的WebService注册,以使别的企业能够发现的访问协议的实现标准。44.谈谈你对swingmvc模式的理解?答:Swing号称是完全按照MVC的思路来进行设计的。在设计开始前,Swing的希望能够达到的目标就包括:模型驱动(Model-Driven)的编程方式。提供一套单一的API,但是能够支持多种视感(look-and-feel),为用户提供不同的界面。严格的说,Swing中的MVC实际上是MVC的一个变体:M-VC。Swing中只显示的定义了Model接口,而在一个UI对象中集成了视图和控制器的部分机制。View和Control比较松散的交叉组合在一起,而更多的控制逻辑是在事件监听者部分引入的。但是,这并没有妨碍在Swing中体现MVC的精髓。事实上,在Swing的开发初期,Swing确实是按照标准的MVC模式来设计的,但是很快的问题就出现了:View和Controller实际上是紧密耦合的,很难作出一个能够适应不同View的一般化的Controller来,而且,一般也没有很大的必要。

2843.STRUTS的应用(女口STRUTS架构)Struts是采用javaServlet/javaServerPages技术,开发Web应用程序的开放源码的framework。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。Struts有如下的主要功能:一.包含一个controllerservlet,能将用户的请求发送到相应的Action对象。二.JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。三.提供了一系列实用对象:XML处理、通过javareflectionAPIs自动处理javaBeans属性、国际化的提示和消息。44.说出数据连接池的工作机制是什么?J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接45.垃圾回收的优点和原理。并考虑2种回收机制。Java语言中一个显著的特点就是引入了垃圾回收机制,使C++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有”作用域”

29的概念,只有对象的引用才有"作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。43.请说出你所知道的线程同步的方法。wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

30sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争43.你所知道的集合类都有哪些?主要方法?最常用的集合类是List和Map。List的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作"键"和"值”),其中每个键映射到一个值44.线程的基本概念、线程的基本状态以及状态之间的关系线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。Java中的线程有四种状态分别是:运行、就绪、挂起、结束。45.描述一下JVM加载class文件的原理机制?JVM中类的装载是由ClassLoader和它的子类来实现的,JavaClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。46.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1

31是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。Iong,string者E不能作用于swtich。43.应用服务器有那些?BEAWebLogicServer,IBMWebSphereApplicationServer,Oracle9iApplicationServer,jBoss,Tomcat44.EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?SessionBean:StatelessSessionBean的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个StatefulSessionBean时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用StatefulSessionBean的方法时容器会把调用分派到与此客户机相关联的Bean实例。EntityBean:EntityBeans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entitybeans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entitybeans也是存活的。EntityBeans生命周期能够被容器或者Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),SunMicrosystems的TransactionService(JTS)、JavaTransactionAPI(JTA),开发组(X/Open)的XA接口。

3243.启动一个线程是用run()还是start()?启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。44.EJB与JAVABEAN的区别?

33JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。JavaBean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EnterpriseJavaBean相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。43.heap和stack有什么区别。栈(stack)是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆(heap)是栈的一个组成元素44.abstractclass和interface有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子

34类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。43.同步和异步有何异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。44.jsp有哪些动作?作用分别是什么?答:JSP共有以下6种基本动作

35jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBEDS记70.两种跳转方式分别是什么?有什么区别?答:有两种,分别为:

36前者页面不会转向inelude所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于goto语句。71.说一说Servlet的生命周期?答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。72.JAVASERVLETAPI中forward。与redirect。的区别?答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward。方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。73.Class.forName的作用?为什么要用?答:调用该访问返回一个以字符串指定类名的类的对象。74.JDO是什么?答:JDO是Java对象持久化的新的规范,为javadataobject

37的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO!通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBM)等等,使得应用可移植性更强。75.xml有哪些解析技术?区别是什么?答:有DOM,SAX,STA潯DOM处理大型文件时其性能下降的非常厉害。这个问题是由DOM勺树结构所造成的,这种结构占用的内存较多,而且DOM、须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX1事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问

38STAX:StreamingAPIforXML(StAX)75.你在项目中用到了xml技术的哪些方面?如何实现的3?答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。76.EJB2.0有哪些内容?分别用在什么场合?EJB2.0和EJB1.1的区别?答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着

39EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭