JAVA面试题

1.Servlet的生命周期?

    Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。

2.Servlet的基本架构
  public class ServletName extends HttpServlet
{
     //初始化方法
     public void init()
     {
       ……
     }
     //GET请求处理的方法
     public void doGet(HttpServletRequest request,HttpServletResponse response)
     {
        ……
     }
      //POST请求处理的方法
     public void doPost(HttpServletRequest request,HttpServletResponse response)
     {
         ……
     }
       //结束服务的方法
     public void destroy()
     {
         ……
     }

}

3.、Servlet API中forware()和redirect()的区别?
  a、浏览器显示
     重定向会改变URL地址,请求转发不会改变URL地址。
  b、资源共享
     重定向不可以资源共享,请求转发可以。
 c、功能
    重定向可以用URL绝对路径访问其他Web服务器的资源,而请求转发只能在一个Web应用程序内进行资源转发,即服务器内部的一种操作。
 d、效率

    重定向效率低,相当于再一次请求;请求转发效率相对较高,跳转仅发生在服务器端。

4.什么情况下调用doGet()和doPost()?

  默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。

5.request.getParameter()和request.getAttribute()的区别?
  a、request.getParameter()获取的类型是String;
       request.getAttribute()获取的类型是Object
  b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;
        request.getAttribute()获取的是对象容器中的数据值/对象
  c、request.setAttribute()和request.getAttribute()可以发送、接收对象;
       request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)
       setAttribute()和getAttribute()的传参原理:
       setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,

     应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。

6.、JSP有哪些内置对象?作用分别是什么?
     JSP一共有9个内置对象
    request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest
    response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse
    session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession
    out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter
    application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext
    config:表示ServletConfig,对应类型:javax.servlet.servletconfig
    exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception
    pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext

    page:表示当前JSP页面本身。

7.页面间对象传递的方法?

  request、session、application、cookie等。

8.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

   JSP是Servlet的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类Servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是java和HTML可以组合成一个扩展名为.jsp的文件。JSP偏重于视图,Servlet偏重于业务逻辑。

9.详细描述MVC。
   基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。
      Model:处理业务逻辑的模块。
      View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。

      Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。

10.MVC各个部分都有哪些技术实现?如何实现?
   MVC是Model-View-Controller的简写。Model代表应用的业务逻辑(通过JavaBean、EJB组件实现),View是引用的表示面(由JSP产生),Controller是提供应用的处理过程机制

(一般是一个Servelt),通过这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件来实现。这些组件可以交互和重用。

11.get和post的区别?
   a、get是用来从服务器上获取数据,而post是用来向服务器传递数据;
   b、get将表单中数据按照variable=value的形式,添加到action所指向的URL后面,并且两者用"?"连接,变量之间用"&"连接;
   而post是将表单中的数据放在form的数据体中,按照变量与值对应的方式,传递到action所指定的URL。
   c、get是不安全的,因为在传输过程中,数据是被放在请求的URL中;而post的所有操作对用户来说都是不可见的。
   d、get传输的数据量小,这主要应为受url长度限制;而post可以传输大量的数据,所有上传文件只能用post提交。
   e、get限制form表单的数据集必须为ASCII字符;而post支持整个IS01 0646字符集。

  f、get是form表单的默认方法。

12.JSP的四种范围?
   a、page是代表一个页面相关的对象和属性。一个页面由一个编译好的java servlet类(可以带有include指令,但不可以带有include动作)表示。这既包括servlet又包括编译成servlet的jsp页面。
   b、request是代表与web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个web组件(由于forware指令和include动作的关系)
   c、session是代表与用于某个web客户机的一个用户体验相关的对象和属性。一个web回话也可以经常跨域多个客户机请求。

  d、application是代表与整个web应用程序相关的对象和属性。这实质上是跨域整个web应用程序,包括多个页面、请求和回话的一个全局作用域。

13.几种回话跟踪技术?

     cookie、url重写、hidden表单隐藏域、session

14.cookie和session的作用、区别、应用范围。
     a、cookie数据保存在客户端,session数据保存在服务端。
     b、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,相当重要的数据,应该使用session保存到服务端。
    c、session会在一定时间内保持在服务器上,但是会占用内存资源,当访问的用户过多,会加重服务器的负载,考虑到减轻服务器的压力,可以将不重要的数据放在cookie中持久的保存。

   d、单个cookie保存的数据不能超过4k,很多浏览器都限制站点最多保存20个cookie。

15.JSTL是什么?优点有哪些?
   JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml、sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。优点有:
  a、在应用程序服务器之间提供了一致的接口,最大程度的提高了web应用在各应用服务器之间的移植。
  b、简化了JSP和web应用程序的开发。
  c、以一种统一的方式减少了JSP中scriptlet代码数据,可以达到没有任何scriptlet代码的代码。在我们公司的项目中是不允许任何scriptlet出现在JSP中。

 d、允许JSP设计工具与web应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。

16.如果JSP表单元素的值为空,如何避免null出现在页面上?
  可以写一个简单的函数对空值进行处理,判断值是否为空,如果为空就返回空字符串。实例代码如下:
 <%!
   String blanknull(String e)
  {
      return (e==null)?"":s;
  }  
%>
<%
   

%>

17.JSP的缺点?
    a、大多数的Servlet引擎不支持connection pooling。
    b、Servlet引擎没有标准。
    c、JSP与其他脚本语言的交互。

    d、不易对Java程序进行调试。

18.EL表达式的功能,为什么要用EL表达式?(Expression Language)
   功能:a、从四个域对象中取出数据数据显示。
             b、取出请求参数数据显示。
原因:在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦
        a、需要判断

        b、可能需要强转

19.说说自动登录功能的编码实现?
   答:a、登录功能是用session实现的,就是向session对象中保存当前用户的对象。
         b、自动功能是用cookie实现的,就是登录时将用户的信息保存为持久cookie。

         c、下次访问时,读取请求中如果有用户信息的cookie就可以自动登录。

20.实例化servlet有几种方式?
    有两种方式
     a、第一次请求时,实例化servlet对象

     b、在web.xml文件中,在servlet标签中添加loadon-startup标签,tomcat启动时就会实例化servlet对象。

21.JSP乱码如何解决?
    a、JSP页面乱码
        <%@page contentType="text/html;charset=utf-8" %>
   b、表单提交时出现乱码
       request.setCharacterEncoding("utf-8");
   c、数据库出现乱码

       jdbc:mysql://localhost:3306:/user?useSSL=false&useUnicode=true&characterEncoding=utf-8;

22.过滤器有哪些作用?
     a、可以验证客户是否来自可信的网络
     b、可以对客户提交的数据进行重写编码
     c、可以从系统里获得配置的信息
     d、可以过滤掉客户某些不应该出现的词汇
     e、验证客户是否登录
     f、验证客户的浏览器是否支持当前的应用

     g、可以记录系统的日志

22.过滤器的用法?(对客户端的请求统一编码和对客户端进行验证)
    实现Filter接口,同时重写Filter接口的三个方法:init(FilterConfig config)    用于获取FilterConfig对象
    doFilter(ServletRequest request,ServeltResponse response,FilterChain chain)   进行过滤处理一些业务

    destroy()    销毁Filter

23.线程和进程有什么区别?

  线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。

24.Thread类中的start()和run()方法有什么区别?

   start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。

25.什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识)
   什么是ajax:
   AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发技术。
   Ajax包含下列技术:
     基于web标准(standards-basedpresentation)XHTML+CSS的表示;
     使用 DOM(Document ObjectModel)进行动态显示及交互;
     使用 XML 和 XSLT 进行数据交换及相关操作;
     使用 XMLHttpRequest 进行异步数据查询、检索;

     使用 JavaScript 将所有的东西绑定在一起。

26.为什么要用ajax:
   Ajax应用程序的优势在于:
   1. 通过异步模式,提升了用户体验
   2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用

   3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

 27. AJAX最大的特点是什么。

   Ajax可以实现动态不刷新(局部刷新)

   就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。

28.Ajax和javascript的区别。
   javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就包括javascript。
   Javascript是由网景公司开发的一种脚本语言,它和sun公司的java语言是没有任何关系的,它们相似的名称只是一种行销策略。
   在一般的web开发中,javascript是在浏览器端执行的,我们可以用javascript控制浏览器的行为和内容。

   在 Ajax应用中信息是如何在浏览器和服务器之间传递的:通过XML数据或者字符串

29.DWR框架介绍
    DWR(DirectWeb Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).

   DWR的实现原理是通过反射,将java翻译成javascript,然后利用回调机制,从而实现了javascript调用Java代码

30.什么是XML
   XML是扩展标记语言,能够用一系列简单的标记描述数据

你可能感兴趣的:(JAVA面试题)