一、5个常见异常:
1. Java.lang.NullPointerException 空指针
2. java.lang.ClassNotFoundException 指定的类不存在
3. java.lang.ArithmeticException 数学运算异常,比如程序中出现了除以零这样的运算就会出这样的异常
4. java.lang.ArrayIndexOutOfBoundsException 数组下标越界
5. java.lang.IllegalArgumentException 方法的参数错误,很多J2ME的类库中的方法在一些情况下都会引发这样的错误
6. java.lang.IllegalAccessException 没有访问权限
二、Servlet的生命周期是什么:
1、Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,
2、service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,
3、当服务器决定将实例销毁的时候调用其destroy方法。
三、ArrayList,Vector, LinkedList的存储性能和特性:
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素。
它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,
Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。
LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,插入数据时只需要记录本项的前后项即可,插入速度较快。
四、多线程有几种实现方法?同步有几种方法?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。
实现同步也有两种,一种是用同步方法,一种是用同步块。同步方法就是在方法返回类型后面加上synchronized,
比如:public void synchronized add(){...}
同步块就是直接写:synchronized (这里写需要同步的对象){...}
五、overload和override有什么区别:
Overload是重载,是有相同的方法名,但参数类型或个数彼此不同
Override是重写,子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。
六、mysql 语句:
1、分页查询语句:
SELECT * FROM tb_goods_info WHERE auto_id >=2500 ORDER BY auto_id ASC LIMIT 0,20
sql语句意思: LIMIT 0,20 :查询 0+20 行 去除前0行
2、存储过程:
create procedure 存储过程名字()
(
[in|out|inout] 参数 datatype ------变量不用加@。直接 b int; sqlserver需要@
)
begin
MySQL 语句; -------每条语句后都要加 ; 分号。 sqlserver不需要
end;
使用:call pr_no_param();
3、修改列
alter table 表名 change 列名称 列新名称 新数据类型;
4、删除列
alter table 表名 drop 列名称;
5、分组
select id ,count(id_id) group by id having count(id_id)>1
七、Java集合类框架的基本接口有哪些?
1、Collection:代表一组对象,每一个对象都是它的子元素。
2、Set:不包含重复元素的Collection。
3、List:有顺序的collection,并且可以包含重复元素。
4、Map:可以把键(key)映射到值(value)的对象,键不能重复。
八、异常处的时候,finally代码块的重要性
无论是否抛出异常,finally代码块总是会被执行。而且finally代码块主要用来释放资源,比如:I/O缓冲区,数据库连接。
九、Java中equals和==的区别
基本数据类型也称原始数据类型:byte,short,char,int,long,float,double,boolean 用“==”比较的是他们的值。
复合数据类型:比如String。 “==”比较的是存储地址。“equals”比较的是值。
String str1="hello";
String str2="he"+new String("llo");
String str3="he"+"llo";
System.out.println(str1==str2); //false
System.out.println(str1==str3); //true
String a = "hello2";
final String b = "hello"; 变量b被final修饰,因此会被当做编译器常量,在使用到b的地方会直接将变量b 替换为它的值
String d = "hello";
String c = b + 2;
String e = d + 2;
String f="hello"+2;
System.out.println((a == c)); //true
System.out.println((a == e)); //false
System.out.println((a == f)); //true
http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html
十、java中final的用法:
1、当用final修饰一个类时,表明这个类不能被继承。
2、对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;
如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
3、使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。
http://www.cnblogs.com/dolphin0520/p/3736238.html
十一、存在js代码:var str="{name:\"aicai\"}",用多种方法把var 转换成json对象:
1、function strToJson(str){
var json = eval(‘(‘ + str + ‘)‘);
return json;
}
2、function strToJson(str){
var json = (new Function("return " + str))();
return json;
}
3、function strToJson(str){
return JSON.parse(str);
}
十二、java 中synchronized和java.util.concurrent.locks.lock的作用及异同
主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。
synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。