java工程師面試題積累中...


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

相關文章
相關標籤/搜索