java面试大总结3Word文档格式.docx
《java面试大总结3Word文档格式.docx》由会员分享,可在线阅读,更多相关《java面试大总结3Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。
可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:
将需要被序列化的类实现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:
在页面被请求的时候引入一个文件。
useBean:
寻找或者实例化一个JavaBean。
setProperty:
设置JavaBean的属性。
getProperty:
输出某个JavaBean的属性。
forward:
把请求转到一个新的页面。
plugin:
根据浏览器类型为Java插件生成OBJECT或EMBED标记。
115、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类或完成其他接口,在swing编程中常用此方式。
116、应用服务器与WEBSERVER的区别?
1。
应用服务器处理业务逻辑,web服务器则主要是让客户可以通过浏览器进行访问。
2。
应用服务器处理业务逻辑,web服务器是用于处理HTML文件的。
web服务器通常比应用服务器简单,如apache就是web服务器,Jboss就是EJB应用服务器。
应用服务器:
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解释。
WebService是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。
JAXP(JavaAPIforXMLParsing)定义了在Java中使用DOM,SAX,XSLT的通用的接口。
这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。
JAXM(JavaAPIforXMLMessaging)是为SOAP通信提供访问方法和传输机制的API。
WSDL是一种XML格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。
这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。
相关的具体端点即组合成为抽象端点(服务)。
SOAP即简单对象访问协议(SimpleObjectAccessProtocol),它是用于交换XML编码信息的轻量级协议。
UDDI的目的是为电子商务建立标准;
UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的WebService注册,以使别的企业能够发现的访问协议的实现标准。
123、int和Integer的区别:
Java提供两种不同的类型:
引用类型和原始类型(或内置类型)。
Int是java的原始数据类型,Integer是java为int提供的封装类。
Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
引用类型和原始类型具有不同的特征和用法,它们包括:
大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。
对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。
124、String类和StringBuffer类的区别:
它们都是处理字符串的类,但是它们有一个最大的区别,那就是,String对象是存储你不能改动的文本字符串,相反,如果你希望改动,则应使用StringBuffer类作为替换
StringBuffer是可变的而String是不可变的.
而且String用得多个的话会占用不同的内存.
如:
Stringstr="
bb"
;
str="
aa"
前一个bb的内存地址不变,当又给它赋值为aa时它(str)又指向aa的地址.
而StringBuffer就不会这样.
125、"
=="
和"
equals()"
方法的区别?
"
:
对于基本类型的数据,比较的是内容;
而对于两个引用类型的变量则比较的是两个对象的地址;
不支持基本类型的比较,对于应用类型的变量默认情况下比较的也是地址,除非你自己手动的覆盖"
方法,在"
方法中指定自己的比较策略。
但是对于String类型变量则直接比较是两个字符串的内容,因为JDK中String类已经实现了"
方法,(在字符串中)"
比较的是两个对象的值.
集合:
Collection层次结构中的根接口
Collection表示一组对象,这些对象也称为collection的元素
Java集合的缺点:
类型未知
总的说来,JavaAPI中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:
Collection<
--list>
<
--vector>
--arraylist>
--linkedlist>
--set>
--hashset>
--linkedhashset>
--sortedset>
--treeset>
List是基于Array,可以有重复的值
Vector:
基于Array的List很重要的一点就是Vector是“sychronized”的,这个也是Vector和ArrayList的唯一的区别。
ArrayList:
基于Array上的链表,但是不同的是ArrayList不是同步的
LinkedList:
它不是基于Array的,所以不受Array性能的限制。
它每一个节点(Node)都包含两方面的内容:
1.节点本身的数据(data);
2.下一个节点的信息(nextNode)。
所以当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。
只要更改nextNode的相关信息就可以实现了。
这就是LinkedList的优势
HashSet:
虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。
List基本上都是以Array为基础。
但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。
HashSet的存储方式是把HashMap中的Key作为Set的对应存储
Set总结:
1.Set实现的基础是Map(HashMap);
2.Set中的元素是不能重复的,如果使用add(Objectobj)方法添加已经存在的对象,则会覆盖前面的对象;
性能时Map所要面对的一个大问题。
如果你知道get()时怎么工作的,你就会发觉(比方说)在ArrayList里面找对象会是相当慢的。
而这正是HashMap的强项。
它不是慢慢地一个个地找这个键,而是用了一种被称为hashcode的特殊值来进行查找的。
散列(hash)时一种算法,它会从目标对象当中提取一些信息,然后生成一个表示这个对象的“相对独特”的int。
hashCode()是Object根类的方法,因此所有Java对象都能生成hashcode。
HashMap则利用对象的hashCode()来进行快速的查找。
这样性能就有了急剧的提高。
设计模式方面:
1、开发中都用到了那些设计模式?
答:
通过这种方式,你可以无数次地使用那些已有的解决方案,无需再重复相同的工作。
2、UML方面
标准建模语言UML。
用例图,静态图(包括类图、对象图和包图),行为图,交互图
(顺序图,合作图),实现图,
******************************************************
下面两个概念描述:
1、概述struts,以及struts如何实现MVC架构的?
strutsframework是一种基于java的技术,Web应用程序开发人员通过strutsframework即可充分利用面向对象设计、代码重用以及“编写一次、到处运行”的优点。
Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。
Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。
控制器的每个入口点都由名为struts-config.xml的配置文件设置。
该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。
Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。
Struts的处理流程:
1>
控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModulConfig对象。
2>
控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。
3>
在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。
还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
4>
执行具体的的Execute的方法,它负责执行相应的业务逻辑。
执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。
也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过JavaBean调用EJB以完成业务处理;
如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。
2、概述MVC体系结构
MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。
在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反映数据的变化。
控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型
在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。
线程方面:
3、多线程的优点?
可分两方面来答:
?
相对于单线程而言:
可以响应多任务的并发操作。
多线程取消了主循环和轮流检测机制,一个线程可以暂停而不阻止系统其他的部分的执行,而且当程序中一个线程阻塞时,只有那个被阻塞的线程暂停,所有其他的线程继续执行。
相对于进程而言:
(可以答也可以不答)
它所要求的开销比较小,转换成本较小。
所有线程共享同一地址空间,相互协作。
彼此之间通信很容易。
4、EJB概述
EJB是企业级的JavaBean,它提供了构建企业级业务逻辑的一种组件模型。
EJB分为三种:
SessionBean
EntityBean
Message-DrivenBean三种,其中SessionBean分为有状态和无状态SessionBean两种,EntityBean分为容器管理的EntityBean(CMP)和Bean管理的EntityBean(BMP)。
每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及刪除EJB实例的remove方法。
EJB容器提供了EJB的运行环境和生命周期的管理。
4、用java访问Oracle数据库、取得记录并输出到界面
……………………..
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connectionconn=DriverManager.getConnection(url,username,password);
Statementstmt=conn.createStatement();
Stringstr=”select*from[table]”;
ResultSetrs=stmt.executeQuery(str);
While(rs.next())
{
……………………
}
rs.close();
stmt.close();
conn.close();
5、概述java垃圾回收机制
它的工作原理如下:
当不存在对一个对象的引用时,我们就假定不再需要那个对象,那个对象所占有的存储单元可以被收回,可通过System.gc()方法回收,但一般要把不再引用的对象标志为null为佳。
6