1. Java序列化
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
2. 简述synchronized和java.util.concurrent.locks.Lock的异同?
Lock能完成synchronized所实现的所有功能。
Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
3. 请简述ArrayList、Vector、LinkedList的存储性能和特性?
ArrayList和Vector是采用数组方式存储数据,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等操作,所以索引速度快插入数据慢,Vector是线程同步的,所以性能比ArrayList差。
LinkedList使用了双向链表实现存储,按序号索引数据需要向前或向后遍历,但是插入数据时,只需要记录本项的前后项即可,所以插入数据快而索引速度慢。
4. 请回答:Collection 和Collections的区别?
Collection是java.util下的接口,它是各种集合的父接口。
Collections是java.util下的集合工具类,提供了各种有关集合的静态方法。
5. List,Set,Map 是否继承自Collection接口?存取元素时,各有什么特点?
List和Set是继承自Collection,但Map不是。
List按顺序保存对象,不做排序等操作。
Set对不允许有重复对象,使用内部的排序方法进行排序,所以不要试图已存储的顺序访问Set里的元素。
Map也是无序的,它保存的是键值对。
6. 请回答:HashMap和Hashtable的区别?
Hashtable是同步的,HashMap非同步的。
Hashtable不允许null值,HashMap允许(key和value都可以)。
Hashtable有一个contains(Object value),HashMap有containsKey和containsValue方法。
Hashtable使用Enumeration,HashMap使用iterator。
Hashtable中hash数组默认大小是11,增加方式是old*2+1。HashMap中hash数组默认大小是16,而且一定是2的指数。
Hashtable直接使用对象的hash值,HashMap重新计算hash值。
7. JavaScript是一门基于解释性的语言,它和java语言的区别?
Java语言中变量的数据类型总体可以分为:基本数据类型和对象类型。JS语言中的变量是没有数据类型的,但是JS的基本程序控制和java是一样的在JavaScript语言中,虽然变量是没有数据类型或者是弱数据类型但是他们的值是有三种基本数据类型的分别是数字、文本字符串、boolean类型,除基本数据类型以外,JavaScript还支持复合类型Object(对象)、Array(数组)特殊数据类型有null和undefine(未定义的)Js是弱数据类型的语言,其变量没有数据类型。所有变量声明时都使用var类型。而且同一变量可以分别存储不同类型的值。
JavaScript是基于对象的,而Java是面向对象的,即Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。JavaScript是种脚本语言,它是一种基于对象和事件驱动的编程语言。
使用JavaScript变量的时候要注意什么?
变量需要先声明,后使用。如果未赋值的变量初始化是undefined,使用var重复声明是合法的,如果重复声明中有初始化的话,则相当于赋值语句,没有初始化的话,变量保留以前的值。如果使用了一个未声明的变量,JavaScript会对这个变量做隐式声明。但是所有隐式声明的变量,都会成为全局变量,即使声明是发生在函数体之内的。
8. JavaScript在使用的过程中,浏览器之间存在什么样的差异?
event对象
IE下可以使用innerText获取或设置某标签里的文本内容,FireFox下没有这个属性,要通过textContent来获取或设置。
IE和FireFox下获取文件域的路径的方法不同:
IE7:file.select(); document.selection.createRange().text;
FireFox:file.files.item(0).getAsDataURL();
9. 说出数据连接池的工作机制是什么?
J2EE服务器启动时会在数据库连接池中建立一定数量的数据库连接,并一直维持不少于此数目的连接。客户端程序需要连接时,连接池会返回一个未使用的数据库连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的数据库连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
10. 请回答:四种会话跟踪技术是什么?
Cookie
Session
URL复写
隐藏表单域
11. 在JSP中如何使用注释?
一共有如下几种格式的注释:
凡属于jsp注释的不会返回给客户端,因为jsp代码都是服务器端运行的..。
<!--这是HTML注释在客户端可以看得见的-->
<%--这是JSP注释,客户端不能看见--%>
<%//这是JPS单行注释,客户端不能看见%>
<%/*这是JSP多行注释,客户端不能看见*/%>
12. jsp有哪些动作以及他们的作用分别是什么?
JSP共有以下6种基本动作 :
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
13. JSP中的指令有哪些?
page:用于设置jsp的一些全局的属性,一般位于jsp页面的第一行
include :在此页面包含另一个文本文件或者代码页面,静态包含
taglib:允许页面使用自定义标签
14. 如何在JSP中现实servlet的单线程模式?
isThreadSafe=”false”
15. JSP中的两种跳转方式分别是什么,有什么区别?
(1)<jsp:forward page="uri"/>
这种跳转方式是在服务器中进行的,因此地址栏不变——常把这种跳转方式称为转发
当执行到跳转语句时,立刻执行跳转,跳转语句之后的代码不会被执行,因此,如果使用forward跳转,则一定在要跳转之前释放所有资源,比如使用数据库,要关闭所有链接
使用forward时,request.setAttribute()设置的属性仍然能传递到下一个页面
通过<jsp:para name="" value=""/>传递参数
这是基于标签的跳转方式,注意要有结束标签
(2)response.sendRedirect("uri")
跳转时地址栏会改变
所有代码执行完毕后再跳转
request设置的属性不能保存,因为这是基于客户端的跳转,一旦跳转,相当于客户端改变了
通过对URL地址重写传递参数
16. 请列举JSP的内置对象及作用有哪些?
pageContext javax.servlet.jsp.PageContext page
request javax.servlet.http.HttpServletRequest request
response javax.servlet.http.HttpServletResponse page
session javax.servlet.http.HttpSession session
application javax.servlet.ServletContext application
out javax.servlet.jsp.JspWriter page
config javax.servlet.ServletConfig page
page java.lang.Object page
exception java.lang.Throwable page
from:http://javatechnology.javaeye.com/blog/719975