J2EE框架面试题库

发布时间:2017-07-28 编辑:小静 手机版

  J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。以下是小编整理的J2EE框架面试题库,希望大家认真阅读!

  1.Servlet 的生命周期

  参考答案:Servlet 的生命周期主要为四个步骤实例化时调用构造方法,初始化 init()、业务处理 service()、销毁 destory()。

  1,启动tomcat时,调用Servlet的构造方法

  2、init 阶段:init()方法在 Servlet 实例化的时候调用,而且只调用一次(对于

  Servlet 的初始化,一般是第一次被请求时;或者在在 web.xml 中没有配置

  标签的映射这个时候, 我们可以配置元素中指定了子元素时,容器在启动的时候自动加载这些 Servlet 并调用 init()方法) , init()方法的作用是完成一些全局性的比较花费时间的初始化工作。

  3、service()阶段:Servlet 继承了父类的 service()方法,那么前端 URL 发出的请求不管是以 get 方式或者 post 方式,都将直接走重写的 service()方法,而不再走 doGet()和 goPost()方法。

  4、终止阶段调用 destroy()方法:Servlet 容器关闭时调用,用来关闭 Servlet 占用的一些资源。

  2.Servlet3.0 有哪些新特性

  参考答案: Servlet 3.0 作为 Java EE 6 规范体系中一员, 随着 Java EE 6 规范一起发布。 该版本在前一版本 (Servlet 2.5) 的基础上提供了若干新特性用于简化 Web应用的开发和部署。其中有几项特性的引入让开发者感到非常奋:

  1、异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处

  理完毕才能再输出响应, 最后才结束该 Servlet 线程。 在接收到请求之后, Servlet线程可以将耗时的操作委派给另一个线程来完成, 自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。

  2、 新增的注解支持: 该版本新增了若干注解, 用于简化 Servlet、 过滤器 (Filter)和监 听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。

  3、可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括

  Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包

  并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。

  4、 原本文件上传时通过 common-fileupload 或者 SmartUpload, 上传比较麻烦,在 Servlet 3.0 中不需要导入任何第三方 jar 包,并且提供了很方便进行文件上传的功能;

  5、ServletContext 的性能增强除了以上的新特性之外,ServletContext 对象的

  功能在新版本中也得到了增强。现在,该对象支持在运行时动态部署 Servlet、

  过滤器、监听器,以及为 Servlet 和过滤器增加 URL 映射等。以 Servlet 为例,过滤器与监听器与之类似。

  3.forward 与 与 redirect 区别

  参考答案:

  Forward :转发,是服务器内部的一种转向行为,客户端并不能察觉,URL 显示的依然是转发前的地址;它属于一次 Request 请求,转发目标页依然可以使用

  Request 范围内的数据。使用场景:多用户多角色的系统根据登录用户进行模块的跳转。

  Redirect :重定向,服务器会首先响应请求端一个状态码,请求端根据状态码再次发生的请求, URL 的地址会换成后一次请求的地址; 它属于两次 Request 请求,所以第一次 Request 请求范围内的数据将丢失,不能再从 Request 中获取数据。使用场景:Session 过期(或未登录时)跳转到登录页,系统异常跳转到异常页。

  4.Session 与 与 Cookie

  参考答案:

  Session:运行在服务器端,默认是保存在内存中,安全性高,可以存放对象,

  可以设置生命周期,当服务器端维护 Session 对象过多的时候,会影响到服务器的性能,可以将一部分 Session 序列化到硬盘上存储。当用户第一次请求生成Session 对象时会生成 sessionID 用来标识此对象,SessionID 将会返回给用户保存在 Cookie 中。

  Cookie:是保存在客户端,一般不超过 4k,用户客户端对 cookie 数据量也有限制,好像 20 个左右,Cookie 安全性低,可以被改写,而且容易被浏览器禁用,但如果 Cookie 完全被禁用,Session 的会话功能也将失效。

  5.如何实现一个自己的 session

  参考答案:要写一个自己的 session,首先要知道 session 的几个特点:第一,

  能够进行对象的保存;第二,有一个唯一的识别码 sessionID 可以通过 cookie 中的 sessionID 来找到 session 对象;第三,就是可以设置 session 的有效期;解决这三点就可以来实现我们自己的 session 了;上面三个条件中最容易实现的就是sessinID,在 Java 中生成一个不重复的 ID 太容易了,这里用 UUID 生成一个 32位序列作为唯一识别码 token(token 就是上面的 sessionID,自己写时就不要用原来的名称了) 。下面推荐三种方案,面试时根据自己的理解选择。

  第一种Map 方案:

  1、定义一个全局的静态的Map 对象(最好用线程安全的实现类) ;

  2、用户首次访问时生成一个 token 作为 Map 中的 key 值,Map 中的 value

  可以根据需要定义成对象,此对象里面一定要有一个时间字段,来记录用户最近一次的访问时间;

  3、 定义一个后台线程, 用来监控 Map 中对象的日期与系统日期时间的差值,

  当大于设定的时间时,就把对象从 Map 中删除(模拟 session 过期清理)。

  第二种 SQL 方案:

  1、建一张 t_session 表,里面的主键为 token,至少有一个日期字段,其余

  的字段根据保存的对象需要建立;

  2、用户首次访问时生成一个 token 作为主键,同时插入一个当前日期;后

  续只要用户对 Session 要操作的地方,就要更新 t_session 中的日期字段;

  3、定义一个数据 JOB,用来监控 t_session 中对象的日期与系统日期时间的

  差值, 当大于设定的时间时, 就把对象从t_session中删除(模拟session过期清理)。

  第三种缓存方案:

  1、引入一个缓存 Encache 对象;

  2、用户首次访问时生成一个 token 作为 Encache 中的 key 值,Value 值可以

  根据需要定义对象,最好是实现了序列化。

  3、在缓存配置中声明一个过期日期。

  综上:第一种方案有一个问题,就是当 Map 存和的对象足够多的时候,后台线

  程在扫描的时候会不会造成前台用户操作 Map 对象的阻塞,从原理上是有这存

  情况发生,总之随着 Map 存放的东西越多,性能下降的越厉害。第二种方案不

  多说了,每次操作都可能引起后台数据表的操作,而且在线用户多的时候,只是这块就会占用很多的连接数,有点浪费系统资源。第三种方案是我比较推崇的方试,不用再担心过期时间的管理,缓存本身就有过期时间管理的机制,有人担心Encache 是与应用绑定发布的,不容易做分布式,其实多虑了,Encache 本身支持分布式的,即使有问题,我们还有 memcached 等其它缓存呢。总之根据业务场景需要来选择就行了。

  6.Http 请求中 Get 和 和 Post 区别

  参考答案:get,post 是前台与后台交互时两种请求方式。

  Get :从 URL 上看它是以明文的方式展现(一般要对参数需要加密处理)在地

  址栏中, 而且它对提交的内容长度有限制, 不能超过 1024Btye;Get 一般用于向服务器中请求数据(查询时) 。

  Post:是一种自动加密的请求方式, 而且理论请求的内容没有长度限制, 一般用于表单提交,向服务器进行数据添加或者更新的时候使用。

  7.JSP 中动态 INCLUDE 与静态 INCLUDE 的区别

  参考答案:

  1、写法不同,动态包含,而静态包

  含;动态包含中一般是同样的.jsp 页,而静态包含可以是其它.txt,.html 等文件。

  2、动态包含是两个独立的文件,分别编译,但它总会动态检查被引入页中的

  内容变化,在执行到 jsp:include 时动态引入被包含的文件,而且可以向被引入的页面中传递参数。静态包含相当于在编译前将被包含的文件插入到

[J2EE框架面试题库]相关文章:

1.J2EE组合框架

2.关于J2EE三大框架学习顺序的讨论

3.2016最新J2EE测试题题库

4.J2EE面试题及答案【精选】

5.J2EE英文面试题及答案

6.J2EE面试常见试题及答案

7.J2EE结构

8.J2EE的简介

9.J2EE简介

10.J2EE项目经理常见面试题

下页更精彩:1 2 3 4 5 下一页
本文已影响
J2EE框架面试题库相关推荐