1、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 沒有訪問權限
2、Servlet的生命週期是什麼:
一、Servlet被服務器實例化後,容器運行其init方法,請求到達時運行其service方法,
二、service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,
三、當服務器決定將實例銷燬的時候調用其destroy方法。
3、ArrayList,Vector, LinkedList的存儲性能和特性:
ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增長和插入元素。
它們都容許直接按序號索引元素,可是插入元素要涉及數組元素移動等內存操做,因此索引數據快而插入數據慢,
Vector因爲使用了synchronized方法(線程安全),一般性能上較ArrayList差。
LinkedList使用雙向鏈表實現存儲,按序號索引數據須要進行前向或後向遍歷,插入數據時只須要記錄本項的先後項便可,插入速度較快。
4、多線程有幾種實現方法?同步有幾種方法?
多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口。
實現同步也有兩種,一種是用同步方法,一種是用同步塊。同步方法就是在方法返回類型後面加上synchronized,
好比:public void synchronized add(){...}
同步塊就是直接寫:synchronized (這裏寫須要同步的對象){...}
5、overload和override有什麼區別:
Overload是重載,是有相同的方法名,但參數類型或個數彼此不一樣
Override是重寫,子類與父類中,子類中的方法的方法名,參數個數、類型都與父類中的徹底同樣,在子類中覆蓋掉了父類的改方法。
6、mysql 語句:
一、分頁查詢語句:
SELECT * FROM tb_goods_info WHERE auto_id >=2500 ORDER BY auto_id ASC LIMIT 0,20
sql語句意思: LIMIT 0,20 :查詢 0+20 行 去除前0行
二、存儲過程:
create procedure 存儲過程名字()
(
[in|out|inout] 參數 datatype ------變量不用加@。直接 b int; sqlserver須要@
)
begin
MySQL 語句; -------每條語句後都要加 ; 分號。 sqlserver不須要
end;
使用:call pr_no_param();
三、修改列
alter table 表名 change 列名稱 列新名稱 新數據類型;
四、刪除列
alter table 表名 drop 列名稱;
五、分組
select id ,count(id_id) group by id having count(id_id)>1
7、Java集合類框架的基本接口有哪些?
一、Collection:表明一組對象,每個對象都是它的子元素。
二、Set:不包含重複元素的Collection。
三、List:有順序的collection,而且能夠包含重複元素。
四、Map:能夠把鍵(key)映射到值(value)的對象,鍵不能重複。
8、異常處的時候,finally代碼塊的重要性
不管是否拋出異常,finally代碼塊老是會被執行。並且finally代碼塊主要用來釋放資源,好比:I/O緩衝區,數據庫鏈接。
9、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
10、java中final的用法:
一、當用final修飾一個類時,代表這個類不能被繼承。
二、對於一個final變量,若是是基本數據類型的變量,則其數值一旦在初始化以後便不能更改;
若是是引用類型的變量,則在對其初始化以後便不能再讓其指向另外一個對象。
三、使用final方法的緣由有兩個。第一個緣由是把方法鎖定,以防任何繼承類修改它的含義;第二個緣由是效率。
http://www.cnblogs.com/dolphin0520/p/3736238.html
11、存在js代碼:var str="{name:\"aicai\"}",用多種方法把var 轉換成json對象:
一、function strToJson(str){
var json = eval('(' + str + ')');
return json;
}
二、function strToJson(str){
var json = (new Function("return " + str))();
return json;
}
三、function strToJson(str){
return JSON.parse(str);
}
12、java 中synchronized和java.util.concurrent.locks.lock的做用及異同
主要相同點:Lock能完成synchronized所實現的全部功能
主要不一樣點:Lock有比synchronized更精確的線程語義和更好的性能。
synchronized會自動釋放鎖,而Lock必定要求程序員手工釋放,而且必須在finally從句中釋放。
html