java面试题及答案基础题122道,代码题19道(编辑修改稿)内容摘要:

private static Singleton instance = new Singleton()。 //这里提供了一个供外部访问本 class 的静态方法,可以直接访问 public static Singleton getInstance() { return instance。 } } 第二种形式 : public class Singleton { private static Singleton instance = null。 public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率。 if (instance==null) instance= new Singleton()。 return instance。 } } 其他形式 : 定义一个类,它的构造函数为 private 的,所有方法为 static 的。 一般认为第一种形式要更加安全些 4 Java 的接口和 C++的虚类的相同和不同处。 由于 Java 不支持多继承,而有可能某个 类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。 与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。 当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是。 50、 Java 中的异常处理机制的简单原理和应用。 当 JAVA程序违反了 JAVA的语义规则时, JAVA虚拟机就会将发生的错误表示为一个异常。 违反语义规则包括 2 种情况。 一种是 JAVA类库内置 的语义检查。 例如数组下标越界 ,会引发IndexOutOfBoundsException。 访问 null 的对象时会引发 NullPointerException。 另一种情况就是 JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw 关键字引发异常。 所有的异常都是 的子类。 5垃圾回收的优点和原理。 并考虑 2 种回收机制。 Java 语言中一个显著的特点就是引入了垃圾回收机制,使 c++程序员最头疼的内存管理的问题迎刃而解,它使得 Java 程序员在编写程 序的时候不再需要考虑内存管理。 由于有个垃圾回收机制, Java 中的对象不再有 “作用域 ”的概念,只有对象的引用才有 “作用域 ”。 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 5请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态,并且释放 所持有的对象的 lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由 JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 5你所知道的集合类都有哪些。 主要方法。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作 “键 ”和 “值 ”),其中每个键映射到一个值。 5描述一下 JVM加载 class 文件的原理机制 ? JVM中类的装载是由 ClassLoader 和它的子类来实现的 ,Java ClassLoader 是一个重要的 Java 运行时系统组件。 它负责在运行时查找和装入类 文件的类。 5 char 型变量中能不能存贮一个中文汉字 ?为什么 ? 能够定义成为一个中文的,因为 java 中以 unicode 编码,一个 char 占 16 个字节,所以放一个中文是没问题的 5多线程有几种实现方法 ,都是什么 ?同步有几种实现方法 ,都是什么 ? 多线程有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口 同步的实现方面有两种,分别是 synchronized,wait 与 notify 5 JSP 的内置对象及方法。 request 表示 HttpServletRequest 对象。 它包含了有关 浏览器请求的信息,并且提供了几个用于获取 cookie, header, 和 session 数据的有用的方法。 response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如 cookies,头信息等) out 对象是 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext 表示一个 对象。 它是用于方便存取各种范围的名字空间、servlet 相 关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 session 表示一个请求的 对象。 Session 可以存贮用户的状态信息 applicaton 表示一个 对象。 这有助于查找有关 servlet 引擎和 servlet 环境的信息 config 表示一个 对象。 该对象用于存取 servlet 实例的初始化参数。 page 表示从该页面产生的 一个 servlet 实例 5线程的基本概念、线程的基本状态以及状态之间的关系 线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。 Java 中的线程有四种状态分别是:运行、就绪、挂起、结束。 5 JSP 的常用指令 %@page language=”java” contenType=”text/html。 charset=gb2312” session=”true” buffer=”64kb” autoFlush=”true” isThreadSafe=”true” info=”text” errorPage=”” isErrorPage=”true” isELIgnored=”true” pageEncoding=”gb2312” import=”.*”% isErrorPage(是否能使用 Exception 对象 ), isELIgnored(是否忽略表达式 ) %@include file=”filename”% %@taglib prefix=”c”uri=” 60、什么情况下调用 doGet()和 doPost()。 Jsp 页面中的 form 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。 6 servlet 的生命周期 web容器加载 servlet,生命周期开始。 通过调用 servlet的 init()方法进行 servlet的初始化。 通过调用 service()方法实 现,根据请求的不同调用不同的 do***()方法。 结束服务, web 容器调用 servlet 的 destroy()方法。 6如何现实 servlet 的单线程模式 %@ page isThreadSafe=”false”% 6页面间对象传递的方法 request, session, application, cookie 等 6 JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么。 JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。 JSP 编译后是 类servlet。 Servlet 和 JSP 最主要的不同点在于, Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。 而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为 .jsp 的文件。 JSP 侧重于视图, Servlet 主要用于控制逻辑。 6四种会话跟踪技术 会话作用域 ServletsJSP 页面描述 page 否是代表与一个页面相关的对象和属性。 一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。 这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 request 是是代表与 Web 客户机发出的一个请求相关的对象和属性。 一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系) session 是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。 一个 Web 会话可以也经常会跨越多个客户机请求 application 是是代表与整个 Web 应用程序相关的对象和属性。 这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话 的一个全局作用域 6 Request 对象的主要方法: setAttribute(String name,Object):设置名字为 name 的 request 的参数值 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):删除请求中的一个属性 6 J2EE 是技术还是平台还是框架。 J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE 也是一个框架,包括 JDBC、 JNDI、 RMI、 JMS、 EJB、 JTA等技术。 6我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso88591 等,如何输出一个某种编码的字符串。 Public String translate (String str) { String tempStr =。 try { tempStr = new String((ISO88591), GBK)。 tempStr = ()。 } catch (Exception e) { (())。 } return tempStr。 } 6简述逻辑操作 (amp。 ,|,^)与条件操作 (amp。 amp。 ,||)的区别。 区别主要答两点: ,而逻辑操作不仅可以操作布尔型 ,而且可以操作数值型 70、 XML 文档定义有几种形式。 它们之间有何本质区别。 解析 XML 文档有哪几种方式。 a: 两种形式 dtd schema, b: 本质区别 :schema 本身是 xml 的,可以 被 XML 解析器解析 (这也是从 DTD上发展 schem。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。