javaEE面试题集锦

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java面试题第II季<基础java JEE>
1.简述Java Server Page 和Servlet 的联系和区别?
答:Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。

而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

JSP侧重于视图,Servlet主要用于控制逻辑
2.jsp有哪些内置对象?作用分别是什么?
答:1.request 用户端请求,此请求会包含来自GET/POST请求的参数。

2. response 网页传回用户端的回应。

3.pageContext 网页的属性是在这里管理。

4.session 与请求有关的会话期。

5.application servlet 正在执行的内容。

6.out 用来传送回应的输出。

7.config servlet的构架部件。

8.page JSP网页本身。

9.exception 针对错误网页,未捕捉的例外。

3.jsp有哪些动作?作用分别是什么?
答:JSP共有以下6种基本动作jsp:include:在页面被请求的时候引入一个文件。

jsp:useBean:寻找或者实例化一个JavaBean。

jsp:setProperty:设置JavaBean的属性。

jsp:getProperty:输出某个JavaBean的属性。

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

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

4.在jsp页面间传递值可用哪些方法?

1. 直接在Url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及
值写在后面,如有多个用&隔开
2 还有jsp:include
3.还有 jsp:forward
4.设置session和request
5.说一说Servlet的生命周期? 有哪些方法?各在什么是否被调用和其含义?
1.发送请求
2.解释请求
3.创建一个Sverlt实例
4.调用init()方法
5.调用Service()方法
6.输出响应信息
7.返回响应
8.调用destroy()消毁的方法,结束服务
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service 方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

6.JA V A SERVLET API中forward( ) 与redirect( )的区别,在JSP开发中优先采用哪种方
式?
答:使用forward的时候浏览器不知道它所请求的具体资源来源,所以地址栏不会变;
使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。

forward,转发页面和转发到的页面可以共享request里面的数据.
redirect,不能共享数据.
从效率来说,forward( )的效率比redirect( )要高,所以开发中优先采用forward( )
7.说出数据连接池的工作机制是什么?
答:程序和数据库建立连接,发送数据操作的指令,完成后断开连接。

等下一次请求的时候重复这个过程,即每个请求都需要和数据库建立连接和断开连接,这样当数据量大的时候系统的消耗是很大的。

连接池就是为了解决这个问题:在一个空间中预先建立好一定数量的连接,当程序请求数据时直接使用池中的现存的连接,不需要重复建立连接和断开的过程,节省了时间提高了性能
8.什么是JNDI,tomcat的JNDI接口与标准的java应用服务器有何区别?
是一个通用、统一的接口
答:是一个应用程序设计的API ,为开发人员提供了查找和访问各种命名和目录服务的通用,统一的接口,类似JDBC都是构建在抽象层上。

9.请简要叙述Session工作原理?
答:session是记录在服务器端的(一般在内存中,也有在文件中或数据库中)
当一个新连接请求时,一个新的session诞生,客户用SessionID请求调用,直到该连接断开并经过session保留时间后消失,它的生存时间是可以设置的
10.JSP的会话默认维持多少时间?如想修改,有些什么手段修改?
答:30分钟,1.在Tomcat的sever文件改,2.用编程式来改,
11.Cookie的工作原理和种类,怎么进行转换,怎样通过cookie实现各浏览器面间的session
共享:
12.MVC架构中的M、V、C代表什么?
答:M即Model(模型层),主要负责出来业务逻辑以及数据库的交互
V即View(视图层),主要用于显示数据和提交数据
C 即Controller(控制层),主要是用作捕获请求并控制请求转发,
13.列出Jsp中包含外部文件的方式,两者有何区别?
答:
动态INCLUDE用jsp:include动作实现<jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
14.EL是什么,它的隐式对象有哪些?
答:EL提供了JSP脚本编制元素范围外使用运行时表达式的功能
PageContext, param , paramValues, header, headerValues, pageScope, requestScope, sessionScope, applicationScope.
15.JSTL是什么,它的最新版本号是多少?
答:是标准标签库,最新版本号是1.1
16.jsp的标准标签库分几类,其中核心标签又分几种?
答:
17.你了解WEB SERVICE吗,如果了解请介绍你对WEB SERVICE的理解?
答:Web service让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

18.简单介绍你用什么实现组件开发WEB SERVICE?
19.什么是SOAP、WSDL、UDDI、ESB、BPEL?
答:SOAPA是Web Services 的通信协议,是一个简单的,轻量级的基于XML机制WSDL文件一个XML文档,用于说明一组SOAP消息以及如何交换这些消息。

UDDI提供一种发布和查找服务描述的方法。

ESB是企业服务总线ESB,是SOA架构的一个支柱技术。

BPEL是一门用于自动化业务流程的形式规约语言。

20.SOA是一门语言吗?它与OOP是什么关系?
答:SOA是一个架构理念—OOP是一个编程理念
SOA是面向服务----OOP是面向对象
SOA不是语言,是一种架构分类,这种架构是面向服务的。

以一项项服务为单位来进行
扩展,一项服务有自己的一套API方法,就像OOP是以Object为单位,每一个类都有自己的属性和方法。

SOA是抽象概念,具体实施可以用各种语言来实现。

21.CGI是什么?它与servlet有什么关系?
答:CGI是通用网关接口
关系:servlet是从CGI廷生出来的
22.在JavaWeb开发过程中经常会遇到乱码问题,一般你是如何解决的?
答:用request和response设置编码为“UTF-8”
23.Tomcat 6.0中能配多少个数据库连接池?
答:可以有多个,最多配523个。

24.怎样把web工程部署到Tomcat中,在你以前的项目中一般是怎样处理的?
答:点击快捷工具栏中的Deploy MyEclipse projects ...按钮,选择工程点击Add,选择tomcat服务就完成了就部署成功了
选择工具栏中的Run/Stop/Restart 按钮,可以选择启动或停止服务
25.request对象getAttribute(String name)和getParamater(String name)的区别是什么?
答: getParameter得到的都是String类型的。

或者是某个表单提交过去的数据。

getAttribute则可以是对象
getParameter 返回的是String类型的
getAttribute 返回的是Object类型
26.JavaWeb开发中,你是怎样处理分页的,效率考虑?简要说明一下你分页处理的思路?答:根据数据库的需要查询的数据量的多少来分页,如果数据库的数据不是很多的话,就一次性查询出来,然后按每页显示多少而分页。

如果数据库需要查询的数据很多,就按每页存放多少数据每次就查询多少条数据
27.请你说说Struts的体系结构和处理请求的工作流程?
答:Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。

在模型层,Struts可以很容易的与数据访问技术相结合,如JDBC / EJB ,
struts工作流程:
1:客户端填写完jsp页面的数据之后单击提交按钮向服务器发出http请求,客户端所有的请求都
被 ActionSerlvet拦截。

2:ActionServlet根据用户的请求在struts-conifg.xml配置文件中查找与之对应的Action,同时把用户的数据填充给对应的ActionForm,然后把ActionForm一起分发给Action进行处理。

3:Action会自动调用excute方法,在该方法里面Action将从ActionForm里面获取用户填写的数据,并调用模型 (javaBean)进行相应的处理,然后把处理的结果显示在其它的视图(jsp页面)
28.你是怎样整合SSH的?有几种方式?
答:1.使用向导添加struts2的组件;
2.使用向导添加spring2.5的组件
3使用向导添加hibernate的组件
4.在web.xml文件中指定Spring容器
5.指定Struts2的Action由Spring容器管理
6.在spring的applicationcontext.xml配置文件的action的作用域是原型
29.请你说说Struts2的体系结构和OGNL?
答:为了解决数据从View层传递到Controller层时的不匹配性,Struts2采纳了XWork的OGNL 方案。

并且在OGNL的基础上,构建了OGNLValueStack的机制,从而比较完美的解决了数据流转中的不匹配性。

OGNL(Object Graph Navigation Language),是一种表达式语言。

使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。

如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。

30.struts与struts2有什么异同?
答:struts配置文件中的redirect视图的url不能接受参数,而struts2配置文件中的redirect 视图可以接受参数。

31.请简述Struts2与Strut1的异同?
答:Struts 1支持手动验证凭借ActionForm的validate方法,或者通过扩展的公用验证器。

类可以有不同的验证上下文未相同的类,但是不能不能包括验证子对象。

Struts 2支持手动验证凭借validate方法和XWork验证框架。

Xwork验证框架支持一连串的验证子属性使用的验证了属性类的类型和严正上下文而定义。

一、struts1要求Action类继承一个抽象基类,而不是接口。

struts2的action类可以实现一个action接口,也可以实现其他接口。

二、sturts1 action是单例模式,线程是不安全的。

struts2 action线程是安全的,action为每一个请求都生成了一个实例。

三、sturts1过去依赖serlet API,不容易测试。

struts2不依赖于容器,允许Action脱离容器单独被测试。

四、Struts1 使用ActionForm对象捕获输入。

所有的ActionForm必须继承一个基类。

Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

1. 在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO。

2.线程模型方面:Struts1的Action工作在单例模式,一个Action的实例处理所有的请求。

Struts2的Action是一个请求对应一个实例。

没有线程安全方面的问题。

3 .Servlet依赖方面:Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。

这使程序难于测试。

Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。

4.封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。

Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。

5.表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph Notation Language)。

6.绑定值到视图技术:Struts1使用标准的JSP,Struts使用“ValueStack”技术。

类型转换:Struts1中的ActionForm基本使用String类型的属性。

Struts2中使用OGNL进行转换,可以更方便的使用。

7.数据校验:Struts1中支持覆盖validate方法或者使用Validator框架。

Struts2支持重写validate方法或者使用XWork的验证框架。

8. Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的声明周期。

Struts2支持通过拦截器堆栈为每一个Action创建不同的声明周期。

32.Struts2中常见的拦截器有哪些?
答:上传,重复提交,数字转换,表单认证,国际化,等等
33.在Struts2中怎样把请求分发给方法去处理?
答:在struts.xml中就只需要配置一个action,在一个Action类中分发Action请求调用不同的方法。

34.请简述Struts2中自定义拦截器的步骤?
答:1.首先要实现Interceptor(拦截器)接口
2.在配置文件中定义自己的拦截器。

3.最后还要把系统提供的默认拦截器加上,否则系统默认拦截器不起作用
35.Struts2怎样整合spring?
答:1.使用向导添加struts2的组件;
2.使用向导添加spring2.5的组件;
struts.properties --指定有Struts2的action由spring容器管理:
web.xml --指定spring容器配置文件
globalMessages.properties --非必须有
struts.xml --class属性配置改成spring容器内bean的ID
applicationContext.xml --action的作用域需要是原型
36.怎样实现Struts2自定义转换器?
答:实现TypeCoverter接口,或者继承DefaultTypeConverter实现类(该类实现了TypeCoverter接口),通过继承该实现类来实现自己的类型转换器。

重写convertValue方法即可。

37.请谈谈表单验证的作用,你使用了哪些技术进行表单验证?
答:就是提交数据时对数据进行验证是否符合要求规则,
常用的技术有javascript+正则技术进行验证
38.在你的学习中使用了什么组件进行上传和下载操作
答:jspSmartUpload(JSP中的上传组件)
39.根据你的理解,Spring是个怎样的框架?
答:Spring是一个轻量级的,强壮,还是一个分层架构的容器框架。

40.Spring1.2和Spring2.0有些什么区别?
答:在Spring1.x系列中,bean的配置文件使用DTD,没有namespace的分隔。

2.0的一个非常大的改进是引入了XML Schema的namespace,因而可以将bean的配置文件做大幅度的简化
41.Spring容器基本的接口是什么?
答:beanfactory(容器),applicationContext(应用上下文)
42.什么是Spring的AOP,它的功能是什么?
答:AOP是面向方面,相当于拦截器,可以在需要的地方插入逻辑,所谓的面向方面就是把相同的功能抽象出来,
43.Spring的AOP,中的切面(Aspect)/ 通知(Advice)/ 通知者(Advisor)/ 切点(Pointcut)
/ 织入Weaving)/目标(Target)各指什么?
44.请阐述Spring的IOC,有几种类型。

答:有setter和getter注入,接口注入和构造器注入
45.Aop中常见有哪些通知,怎样区别?
答:前置通知,后置通知,异常通知,最终通知,环绕通知。

各自实现自己的接口
46.Spring管理事务有哪几种方式?
答: 有两种方式:基于XML配置文件的方式;另一个是在业务方法上进行@Transactional注解,将事务规则应用到业务逻辑中。

47.Spring的作用域有哪些?
答:singleton(单例) ,prototype(原型),request,session,global session
48.相对于SQL,HQL查询语言有什么特点,什么是方言?
答:sql是关系数据库查询语言,面对的数据库;而hql是Hibernate这样的数据库持久化框架提供的内置查询语言,虽然他们的目的都是为了从数据库查询需要的数据,但sql操作的是数据库表和字段,而作为面向对象的hql操作的则是持久化类及其属性,
49.Hibernate3.1和Hibernate3.3的区别是什么?
50.软件开发中为什么要进行软件的配置管理?你用过什么版本控制系统?
51.在请简述软件开发生命周期中的各个阶段?
52.Hibernate架构,对象有三种状态,分别是什么,怎样区分?
答:Hibernate三种状态的区分,以及save,update,saveOrUpdHibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。

1.瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。

2.持久对象具有如下特点:1. 和session实例关联;2. 在数据库中有与之关联的记录。

3. 比瞬时对象多了一个数据库记录标识值。

53.Hibernate中什么是延迟加载,延迟的作用是什么?
答:延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。

在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。

54. 请问日志有什么作用,在项目中你是怎么处理日志的?
55. 你在java项目中此理过计划任务的调度吗?如有你是怎么处理的?
56. 你对UML了解吗?UML的动态图有哪些?类图和对象图有什么区别?
57. 什么是需求?为什么要进行需求管理?
58什么是软件项目的进度管理?简要介绍保证项目的进度的基本手段?
59软件开发中如何进行风险管理?
60.三大框架各起的作用
struts 在SSH 框架中起控制的作用, 其核心是(控制器)Controller, 即ActionServlet, 而ActionServlet 的核心就是Struts-confi g.xml. 主要控制逻辑关系的处理 .
hibernate 是数据持久化层, 是一种新的对象、关系的映射工具, 提供了从Java 类到数据表的映射,也提供了数据查询和恢复等机制, 大大减少数据访问的复杂度。

把对数据库的直接操作, 转换为对持久对象的操作 .
spring 是一个轻量级的控制反转(IoC) 和面向切面(AOP) 的容器框架, 面向接口的编程, 由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。

这也就是所谓“ 控制反转” 的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中
起到的主要作用是解耦。

相关文档
最新文档