java 面试题总结面试题大全面试题二 2.docx

上传人:b****6 文档编号:5996321 上传时间:2023-01-02 格式:DOCX 页数:14 大小:29.75KB
下载 相关 举报
java 面试题总结面试题大全面试题二 2.docx_第1页
第1页 / 共14页
java 面试题总结面试题大全面试题二 2.docx_第2页
第2页 / 共14页
java 面试题总结面试题大全面试题二 2.docx_第3页
第3页 / 共14页
java 面试题总结面试题大全面试题二 2.docx_第4页
第4页 / 共14页
java 面试题总结面试题大全面试题二 2.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

java 面试题总结面试题大全面试题二 2.docx

《java 面试题总结面试题大全面试题二 2.docx》由会员分享,可在线阅读,更多相关《java 面试题总结面试题大全面试题二 2.docx(14页珍藏版)》请在冰豆网上搜索。

java 面试题总结面试题大全面试题二 2.docx

java面试题总结面试题大全面试题二2

94、排序都有哪几种方法?

请列举。

用JAVA实现一个快速排序。

排序的方法有:

插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

//使用快速排序方法对a[0:

n-1]排序

从a[0:

n-1]中选择一个元素作为middle,该元素为支点

把余下的元素分割为两段left和right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点

递归地使用快速排序方法对left进行排序

递归地使用快速排序方法对right进行排序

所得结果为left+middle+right

95、请对以下在J2EE中常用的名词进行解释(或简单描述)

web容器:

给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。

主要有WEB服务器来实现。

例如:

TOMCAT,WEBLOGIC,WEBSPHERE等。

该容器提供的接口严格遵守J2EE规范中的WEBAPPLICATION标准。

我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

EJB容器:

Enterprisejavabean容器。

更具有行业领域特色。

他提供给运行在其中的组件EJB各种管理功能。

只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。

并且可以通过现成的接口来获得系统级别的服务。

例如邮件服务、事务管理。

JNDI:

(JavaNaming&DirectoryInterface)JAVA命名目录服务。

主要提供的功能是:

提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

JMS:

(JavaMessageService)JAVA消息服务。

主要实现各个应用程序之间的通讯。

包括点对点和广播。

JTA:

(JavaTransactionAPI)JAVA事务服务。

提供各种分布式事务服务。

应用程序只需调用其提供的接口即可。

JAF:

(JavaActionFrameWork)JAVA安全认证框架。

提供一些安全控制方面的框架。

让开发者通过各种部署和自定义实现自己的个性安全控制策略。

RMI/IIOP:

(RemoteMethodInvocation/internet对象请求中介协议)他们主要用于通过远程调用服务。

例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。

当然这是要通过一定的规范才能在异构的系统之间进行通信。

RMI是JAVA特有的。

96、JAVA语言如何进行异常处理,关键字:

throws,throw,try,catch,finally分别代表什么意义?

在try块中可以抛出异常吗?

Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。

在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。

当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。

Java的异常处理是通过5个关键词来实现的:

try、catch、throw、throws和finally。

一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。

用try来指定一块预防所有"异常"的程序。

紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。

throw语句用来明确地抛出一个"异常"。

throws用来标明一个成员函数可能抛出的各种"异常"。

Finally为确保一段代码不管发生什么"异常"都被执行一段代码。

可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。

每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。

如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。

97、一个".java"源文件中是否可以包括多个类(不是内部类)?

有什么限制?

可以。

必须只有一个类名与文件名相同。

98、MVC的各个部分都有那些技术来实现?

如何实现?

MVC是Model-View-Controller的简写。

"Model"代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),"View"是应用的表示面(由JSP页面产生),"Controller"是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

这些组件可以进行交互和重用。

99、java中有几种方法可以实现一个线程?

用什么关键字修饰同步方法?

stop()和suspend()方法为何不推荐使用?

有两种实现方法,分别是继承Thread类与实现Runnable接口

用synchronized关键字修饰同步方法

反对使用stop(),是因为它不安全。

它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。

结果很难检查出真正的问题所在。

suspend()方法容易发生死锁。

调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。

此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。

对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。

所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。

若标志指出线程应该挂起,便用wait()命其进入等待状态。

若标志指出线程应当恢复,则用一个notify()重新启动线程。

100、java中有几种类型的流?

JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

字节流,字符流。

字节流继承于InputStreamOutputStream,字符流继承于InputStreamReaderOutputStreamWriter。

在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

101、java中会存在内存泄漏吗,请简单描述。

会。

如:

inti,i2;return(i-i2);//wheni为足够大的正数,i2为足够大的负数。

结果会造成溢位,导致错误。

102、java中实现多态的机制是什么?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

103、垃圾回收器的基本原理是什么?

垃圾回收器可以马上回收内存吗?

有什么办法主动通知虚拟机进行垃圾回收?

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。

通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。

通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。

当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

可以。

程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

104、静态变量和实例变量的区别?

statici=10;//常量

classAa;a.i=10;//可变

105、什么是java序列化,如何实现java序列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。

可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。

序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:

将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:

FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

106、是否可以从一个static方法内部发出对非static方法的调用?

不可以,如果其中包含对象的method();不能保证对象初始化.

107、写clone()方法时,通常都有一行代码,是什么?

Clone有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

108、在JAVA中,如何跳出当前的多重嵌套循环?

用break;return方法。

109、List、Map、Set三个接口,存取元素时,各有什么特点?

List以特定次序来持有元素,可有重复元素。

Set无法拥有重复元素,内部排序。

Map保存key-value值,value可多值。

110、J2EE是什么?

J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterprieseapplicationmodel).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。

所属层次包括客户层(clietntier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

111、UML方面

标准建模语言UML。

用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。

112、说出一些常用的类,包,接口,请各举5个

常用的类:

BufferedReaderBufferedWriterFileReaderFileWirterStringInteger

常用的包:

java.langjava.awtjava.iojava.utiljava.sql

常用的接口:

RemoteListMapDocumentNodeList

113、开发中都用到了那些设计模式?

用在什么场合?

每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。

通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。

主要用到了MVC的设计模式。

用来开发JSP/Servlet或者J2EE的相关应用。

简单工厂模式等。

114、jsp有哪些动作?

作用分别是什么?

JSP共有以下6种基本动作jsp:

include:

在页面被请求的时候引入一个文件。

jsp:

useBean:

寻找或者实例化一个JavaBean。

jsp:

setProperty:

设置JavaBean的属性。

jsp:

getProperty:

输出某个JavaBean的属性。

jsp:

forward:

把请求转到一个新的页面。

jsp:

plugin:

根据浏览器类型为Java插件生成OBJECT或EMBED标记。

115、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

可以继承其他类或完成其他接口,在swing编程中常用此方式。

116、应用服务器与WEBSERVER的区别?

应用服务器:

Weblogic、Tomcat、Jboss

WEBSERVER:

IIS、Apache

117、BS与CS的联系与区别。

C/S是Client/Server的缩写。

服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。

客户端需要安装专用的客户端软件。

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或InternetExplorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。

在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。

浏览器通过WebServer同数据库进行数据交互。

C/S与B/S区别:

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对的多重结构,要求构件相对独立的功能.能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

5.系统维护不同

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

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

6.处理问题不同

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

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

7.用户接口不同

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

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

8.信息流不同

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

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

118、LINUX下线程,GDI类的解释。

LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

GDI类为图像设备编程接口类库。

119、STRUTS的应用(如STRUTS架构)

Struts是采用JavaServlet/JavaServerPages技术,开发Web应用程序的开放源码的framework。

采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。

Struts有如下的主要功能:

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

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

三.提供了一系列实用对象:

XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。

120、Jdo是什么?

JDO是Java对象持久化的新的规范,为javadataobject的简称,也是一个用于存取某种数据仓库中的对象的标准化API。

JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)。

这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。

另外,JDO很灵活,因为它可以在任何数据底层上运行。

JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

121、内部类可以引用他包含类的成员吗?

有没有什么限制?

一个内部类对象可以访问创建它的外部类对象的内容

122、WEBSERVICE名词解释。

JSWDL开发包的介绍。

JAXP、JAXM的解释。

SOAP、UDDI,WSDL解释。

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

JAXP(JavaAPIforXMLParsing)定义了在Java中使用DOM,SAX,XSLT的通用的接口。

这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。

JAXM(JavaAPIforXMLMessaging)是为SOAP通信提供访问方法和传输机制的API。

WSDL是一种XML格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。

这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。

相关的具体端点即组合成为抽象端点(服务)。

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

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

JAVA代码查错

1.

abstractclassName{

privateStringname;

publicabstractbooleanisStupidName(Stringname){}

}

大侠们,这有何错误?

答案:

错。

abstractmethod必须以分号结尾,且不带花括号。

2.

publicclassSomething{

voiddoSomething(){

privateStrings="";

intl=s.length();

}

}

有错吗?

答案:

错。

局部变量前不能放置任何访问修饰符(private,public,和protected)。

final可以用来修饰局部变量

(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

3.

abstractclassSomething{

privateabstractStringdoSomething();

}

这好像没什么错吧?

答案:

错。

abstract的methods不能以private修饰。

abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract

method封锁起来呢?

(同理,abstractmethod前不能加final)。

4.

publicclassSomething{

publicintaddOne(finalintx){

return++x;

}

}

这个比较明显。

答案:

错。

intx被修饰成final,意味着x不能在addOnemethod中被修改。

5.

publicclassSomething{

publicstaticvoidmain(String[]args){

Othero=newOther();

newSomething().addOne(o);

}

publicvoidaddOne(finalOthero){

o.i++;

}

}

classOther{

publicinti;

}

和上面的很相似,都是关于final的问题,这有错吗?

答案:

正确。

在addOnemethod中,参数o被修饰成final。

如果在addOnemethod里我们修改了o的reference

(比如:

o=newOther();),那么如同上例这题也是错的。

但这里修改的是o的membervairable

(成员变量),而o的reference并没有改变。

6.

classSomething{

inti;

publicvoiddoSomething(){

System.out.println("i="+i);

}

}

有什么错呢?

看不出来啊。

答案:

正确。

输出的是"i=0"。

inti属於instantvariable(实例变量,或叫成员变量)。

instantvariable有defaultvalue。

int的defaultvalue是0。

7.

classSomething{

finalinti;

publicvoiddoSomething(){

System.out.println("i="+i);

}

}

和上面一题只有一个地方不同,就是多了一个final。

这难道就错了吗?

答案:

错。

finalinti是个final的instantvariable(实例变量,或叫成员变量)。

final的instantvariable没有defaultvalue,必须在constructor(构造器)结束之前被赋予一个明确的值。

可以修改为"finalinti=0;"。

8.

publicclassSomething{

publicstaticvoidmain(String[]args){

Somethings=newSomething();

System.out.println("s.doSomething()returns"+doSomething());

}

publicStringdoSomething(){

return"Dosomething...";

}

}

看上去很完美。

答案:

错。

看上去在main里calldoSomething没有什么问题,毕竟两个methods都在同一个class里。

但仔细看,main是static的。

staticmethod不能直接callnon-staticmethods。

可改成"Syste

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1