当前位置: 首页 > >

Java 面 试 题 库(转载)

发布时间:

1、概述struts,以及struts如何实现MVC架构的?

答:struts framework是一种基于java的技术,Web应用程序开发人员通过struts framework即可充分利用面向对象设计、代码重用以及“编写一次、到处运行”的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。 Struts的处理流程:


l 控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModulConfig对象。


l 控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。


l 在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。


l 执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过JavaBean调用EJB以完成业务处理;如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。


2、概述MVC体系结构


答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。


在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型


在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。


3、多线程的优点


答:可分两方面来答:


l 相对于单线程而言 :


可以响应多任务的并发操作。


多线程取消了主循环和轮流检测机制,一个线程可以暂停而不阻止系统其他的部分的执行,而且当程序中一个线程阻塞时,只有那个被阻塞的线程暂停,所有其他的线程继续执行。


l 相对于进程而言:(可以答也可以不答)


它所要求的开销比较小,转换成本较小。


所有线程共享同一地址空间,相互协作。


彼此之间通信很容易。


4、EJB概述


答:EJB是企业级的JavaBean,它提供了构建企业级业务逻辑的一种组件模型。


EJB分为三种:Session Bean Entity Bean Message-Driven Bean 三种,其中Session Bean分为有状态和无状态Session Bean两种,Entity Bean分为容器管理的Entity Bean ( CMP ) 和 Bean管理的 Entity Bean ( BMP )。每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及?除EJB实例的remove方法。EJB容器提供了EJB的运行环境和生命周期的管理。


5、用java访问Oracle数据库、取得记录并输出到界面


答:……………………..


Class.forName(“oracle.jdbc.driver.OracleDriver”);


Connection conn=DriverManager.getConnection( url , username , password );


Statement stmt=conn.createStatement();


String str=”select * from [table]”;


ResultSet rs=stmt.executeQuery(str);


While(rs.next())


{


……………………


}


rs.close();


stmt.close();


conn.close();


6、概述java垃圾回收机制


答:它的工作原理如下:


当不存在对一个对象的引用时,我们就假定不再需要那个对象,那个对象所占有的存储单元可以被收回,可通过System.gc()方法回收,但一般要把不再引用的对象标志为null为佳。


7、java类是否可以多继承,怎么实现多继承?


答:java没有多继承,但可以通过接口的形式来达到多继承的目地。


8、面向对象的特点


答:面向对象有三大特点:封装、继承、多态。(如果要回答四个,可加上 抽象性 这一特点)


9、接口有什么优点


答:接口有以下优点:


l 接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现。


l 利用接口可达到实现多继承的目地。


l 可以在不暴露对象的类的前提下,暴露对象的编程接口。


l 不用强迫类关系在无关类中截获相似处(采用适配器就可以了)。


l 声明想执行的一个或多个方法。


10、arryList 与 Vector 的区别


答:主要从两个方面来说明:


l 安全、效率方面


如果要实现同步安全,则要用Vector,否则则用ArrayList,因为ArrayList不考虑同步安全的问题,所以效率要高些。


l 资源方面


当两者的容量已满时,它们都会自动增长其容量,但Vector是按其容量的一倍增长,而ArrayList则按其容量的50%增加,所以Vector更能节省资源。


11、MVC结构在Jtable中怎样实现的,这种结构有什么好处?


答、在Jtable中不存储它的单元数据,它的所有实例把它们的单元值交给实现了TableModel接口的对象来维护和管理,所以在MVC结构中,Jtable的表格主要体现了一个V的作用,其表格将数据变化体现出来,而数据模型则体现了M的作用,封装数据和业务逻辑。


注:详细解说见第二题


12、在控制台中输入一个字符串,然后按照逆序打印出来


答:import java.io.*;


public class test{


public static void main(String args[]){


String A=””;


String B=””;


String C=””;


Try{


BufferedReader br=new BufferedReader(new InputStreamReader(System.in));


If ((B=br.readLine())!=null){


A=A+B;


}


for(int I=str.length()-1;I>=0;I--){


C=C+A.substring(I,I+1);


}


System.out.println(C);


}


catch(Exception e){


System.out.println(e.getMessage());


}


}


}


13、java是否存在内存泄露


答:存在,当一个对象引用另一对象后,当另一对象为空时,会出现内存泄露。


14、String类的值是否可以改变


答:String类的值在初始后不能改变,如果要改变,可转换为StringBuffer类,这个类的值是可以动态改变的。(这里主要考String 和 StringBuffer 的区别)


15、Corba概述


答:通用对象请求代理,它的主要目标是解决面向对象的异构应用之间的互操作问题,并提供分布式计算所需的一些其他的服务。ORB是CORBA的核心。


CORBA重新调整了客户与服务器之间的关系。客户可以向服务器提出事务请求,同时也可以为下一个请求充当服务器角色。由于CORBA系统引入了中间件的概念,即事件代理,由中间件完成客户机与服务器之间的通信,使得服务器对于客户机的位置相对透明,取消了原有分布式计算机模型中客户机----服务器之间的一一对应关系,CORBA客户机可以在运行时动态获得服务对象的位置,并且可以对多个服务对象提交事务请求,所以它极大的推动了分布计算的发展。另外,CORBA规范约束采用面向对象的分布式方法,以接口定义语言的形式实现对象内部细节的完整封装,从而降低了软件系统的复杂度,增加了软件功能的可重用性。CORBA提供到C C++ JAVA 等高级语言的映射,极大程度地减小了程序设计语言的依赖性。


(有待扩展) 16、jsp的内置对象、功能以及主要方法


Jsp内置对象 功能 主要方法


out 向客户端输出数据 print() println() flush() clear() isAutoFlush() getBufferSize() close() …………


request 向客户端请求数据 getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() …………..


response 封装了jsp产生的响应,然后被发送到客户端以响应客户的请求 addCookie() sendRedirect() setContentType()flushBuffer() getBufferSize() getOutputStream()sendError() containsHeader()……………


application


config 表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet getServletContext() getServletName() getInitParameter() getInitParameterNames()……………


page Jsp实现类的实例,它是jsp本身,通过这个可以对它进行访问 flush()………


pagecontext 为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 forward() getAttribute() getException() getRequest() getResponse() getServletConfig()getSession() getServletContext() setAttribute()removeAttribute() findAttribute() ……………


session 用来保存每个用户的信息,以便跟踪每个用户的操作状态 getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval()invalidate() isNew()


exception 反映运行的异常 getMessage()…………


17、java 有几种修饰符?默认的是什么?


答:(注:修饰符是影响类、变量及成员方法的生存空间和可访问性的关键字)


修饰符 类 成员方法 成员变量 局部变量


abstract √ √ - -


static - √ √ -


public √ √ √ -


protected - √ √ -


private - √ √ -


private protected - √ √ -


synchronized - √ - -


native - √ - -


volatile - - √ -


final √ √ √ -


transient - - √ √


以下是访问控制修饰符: 默认为friendly 修饰符 同类 同包 子孙类 不同包


public √ √ √ √


protected √ √ √ -


friendly √ √ - -


private √ - - -


18、toString方法的概述


答:因为每个类都继承了Object类,所以都实现了toString()方法。


通过toString()方法可以决定所创建对象的字符串表达形式。


19、Object类的概述


答:Object类是所有其他的类的超类,Object的一个变量可以引用任何其他类的对象。因为数组是作为类实现的,所以Object的一个变量也可以引用任何数组,它包括以下几种方法: clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()


20、java特点


答:java具有以下几个主要特点:


l 简单性


l 面向对象:JAVA是完全面向对象的,它支持静态和动态风格的代码继承及重用


l 分布式:包括数据分布和操作分布


l 健壮性:java系统仔细检测对内存的每次访问,确认它是否合法,而且在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。


l 结构中立


l 安全性:java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。


l 与*台无关:java写的应用程序不用修改就可在不同的软硬*台上运行。*台无关性有两种:源代码级和目标代码级。 Java主要靠JAVA虚拟机在目标代码级上实现*台无关性


l 解释执性:运行JAVA程序时,它首先被编译成字节代码,字节代码非常类似机器码,执行效率非常高。


l 高性能


l 多性程


l 动态性:它允许程序动态的装入运行时需要的类。


21、什么叫抽象类?抽象类跟接口有什么区别?为什么引进数据接口概念?


答:具有关键字abstract ,在实现内容上没有完全定义的类就叫抽象类。


抽象类和接口的区别如下:


① 在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。


②在接口中无成员变量,而抽象类中可有成员变量。


在Java中引进接口主要是为了解决多继承的问题。


22、doGet与doPut的区别?


答: doPut会把地址作为一个文件写到服务器,而doGet不会,而只显示在地址栏。


23、多线程实现有那几种方法,同步有哪几种方法?


答:实现同步主要有两种方法:1.synchronized 2.wait notify


实现多线程主要继承Thread 类和实现Runnable接口。


24、JSP页面的跳转?


答:jsp页面实现跳转主要有jsp:forward 和 sendRedirect 两种方法


jsp:forward:在本容器内跳转 。 跳转后,地址栏地址不变 。效率高。跳转后立即结束本页的内容。


sendRedirect:在容器之间的跳转,跳转后地址栏地址为跳转后的地址,效率较低。


通常采用jsp:forward方式跳转。


25、类变量的初始化


答:在Java中类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以不初始化,而到具体的内部方法或其他的类成员中初始化。


26、数组的定义


答:数组是作为一种对象实现的。数组元素可以包含作何类型值,但数组里面的每个元素的类型必须一致创建数组步聚如下:


l 声明


l 构造


l 初始化


27、Hastable 与HashMap的区别?


答:Hashtable和Hashmap的主要区别如下:


l Hashtable是同步的,而HashMap不是同步的。所以不要求同步的时候,用HashMap的效率较高


l Hashtable版本较HashMap版本低。


28、说明List和Set的区别


答:两者主要区别如下:


l List用来处理序列,而Set用来处理集。


l List中的内容可以重复,而Set则不行。




友情链接: