125条java面试题汇总(三)

来源:互联网 发布:移动数据流量怎么用啊 编辑:程序博客网 时间:2024/04/30 04:18

51、垃圾回收的优点和原理。并考虑2种回收机制。

  Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

 

52、请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

notityAll():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

 

53、你所知道的集合类都有哪些?主要方法?

  最常用的集合类是 List Map List 的具体实现包括 ArrayList Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作""""),其中每个键映射到一个值。

 

54、描述一下JVM加载class文件的原理机制?

  JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

 

55char型变量中能不能存贮一个中文汉字?为什么?

  能够定义成为一个中文的,因为java中以unicode编码,一个char16个字节,所以放一个中文是没问题的

 

56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是synchronized,waitnotify

 

57JSP的内置对象及方法。

  request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, session数据的有用的方法。

    response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)

    out对象是javax.servlet.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

    pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。

    session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息

    applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息

    config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。

    page表示从该页面产生的一个servlet实例

58、线程的基本概念、线程的基本状态以及状态之间的关系
  线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。
Java
中的线程有四种状态分别是:运行、就绪、挂起、结束。
59
JSP的常用指令
<%@page language="java" session="true" buffer="64kb" autoFlush="true" isThreadSafe="true"info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true"pageEncoding="gb2312" import="java.sql.*"%>
isErrorPage(
是否能使用Exception对象)isELIgnored(是否忽略表达式)
<%@include file="filename"%>
<%@taglib prefix="c"uri="http://......"%>
60
、什么情况下调用doGet()doPost()

  Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()
61
servlet的生命周期
  web容器加载servlet,生命周期开始。通过调用servletinit()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servletdestroy()方法。
62
、如何实现servlet的单线程模式
    <%@ page isThreadSafe="false"%>
63
、页面间对象传递的方法
    request
sessionapplicationcookie
64
JSPServlet有哪些相同点和不同点,他们之间的联系是什么?
  JSPServlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"servlet"ServletJSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是JavaHTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

65
、四种会话跟踪技术
   
会话作用域ServletsJSP 页面描述
page
是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet JSP 页面
request
是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session
是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application
是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
66
Request对象的主要方法:
setAttribute(String name,Object)
:设置名字为namerequest的参数值
getAttribute(String name)
:返回由name指定的属性值
getAttributeNames()
:返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies()
:返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding()
:返回请求中的字符编码方式
getContentLength()
:返回请求的Body的长度
getHeader(String name)
:获得HTTP协议定义的文件头信息
getHeaders(String name)
:返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames()
:返回所以request Header的名字,结果是一个枚举的实例
getInputStream()
:返回请求的输入流,用于获得请求中的数据
getMethod()
:获得客户端向服务器端传送数据的方法
getParameter(String name)
:获得客户端传送给服务器端的有name指定的参数值
getParameterNames()
:获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name)
:获得有name指定的参数的所有值
getProtocol()
:获取客户端向服务器端传送数据所依据的协议名称
getQueryString()
:获得查询字符串
getRequestURI()
:获取发出请求字符串的客户端地址
getRemoteAddr()
:获取客户端的IP地址
getRemoteHost()
:获取客户端的名字
getSession([Boolean create])
:返回和请求相关Session
getServerName()
:获取服务器的名字

getServletPath()
:获取客户端所请求的脚本文件的路径
getServerPort()
:获取服务器的端口号
removeAttribute(String name)
:删除请求中的一个属性
67
J2EE是技术还是平台还是框架?
    J2EE
本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
    J2EE
也是一个框架,包括JDBCJNDIRMIJMSEJBJTA等技术。
68
、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

       

    Public String translate (String str) {
      String tempStr = "";
      try {
        tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
        tempStr = tempStr.trim();
      }
      catch (Exception e) {
        System.err.println(e.getMessage());
      }
      return tempStr;
    }    


69
、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
  区别主要答两点:
a.
条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.
逻辑操作不会产生短路

70
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
a:
两种形式 dtd    schemab: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)c:DOM,SAX,STAX

    DOM:
处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问

SAX:
不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
    STAX:Streaming API for XML (StAX)
 
原创粉丝点击