2017/06/21 星榕基筆試題

1、數據庫連接池的運行機制
(1) 程序初始化時創建連接池
(2) 使用時向連接池申請可用連接
(3) 使用完畢,將連接返還給連接池
(4) 程序退出時,斷開所有連接,並釋放資源
這裏寫圖片描述

2、3.1643是float還是double?
java中帶有小數點的默認爲double型,float型需要加f標記

3、單例模式

 * 單例模式最優方案
 * 線程安全  並且效率高  
 *  
 */  
public class SingletonTest { 

    // 定義一個私有構造方法
    private SingletonTest() { 

    }   
    //定義一個靜態私有變量(不初始化,不使用final關鍵字,使用volatile保證了多線程訪問時instance變量的可見性,避免了instance初始化時其他變量屬性還沒賦值完時,被另外線程調用)
    private static volatile SingletonTest instance;  

    //定義一個共有的靜態方法,返回該類型實例
    public static SingletonTest getIstance() { 
        // 對象實例化時與否判斷(不使用同步代碼塊,instance不等於null時,直接返回對象,提高運行效率)
        if (instance == null) {
            //同步代碼塊(對象未初始化時,使用同步代碼塊,保證多線程訪問時對象在第一次創建後,不再重複被創建)
            synchronized (SingletonTest.class) {
                //未初始化,則初始instance變量
                if (instance == null) {
                    instance = new SingletonTest();   
                }   
            }   
        }   
        return instance;   
    }   
}

4、冒泡排序

    public void sort(int[] a)
    {
        int temp = 0;
        for (int i = a.length - 1; i > 0; --i)
        {
            for (int j = 0; j < i; ++j)
            {
                if (a[j + 1] < a[j])
                {
                    temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
    }

5、String與StringBuffer的區別
StringBuffer類的對象能夠被多次的修改,並且不產生新的未使用對象。
Java 中 StringBuffer 和 String 是有一定的區別的,
首先,String 是被 final 修飾的,他的長度是不可變
的,就算調用 String 的
concat 方法,那也是把字符串拼接起來並重新創建一個
對象,把拼接後的 String 的值賦給新創建的對象,而
StringBuffer 的長度是
可變的,調用StringBuffer 的 append 方法,來改變
StringBuffer 的長度,並且,相比較於 StringBuffer,
String 一旦發生長度變化,是非常耗費內存的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章