1. 程式人生 > >牛客網第八天

牛客網第八天

1.提供Java存取資料庫能力的包是( )
A.java.sql
B.java.awt
C.java.lang
D.java.swing
正確答案: A 你的答案: A (正確)
解析:
A,java.sql包提供Java存取資料庫能力
B,java.awt包是java圖形介面的包
C,java.lang是java語言的核心好,lang是language的簡寫
D,java.swing是經過java封裝的與作業系統無關的圖形介面包
2.下面對JVM敘述不正確的是:
A.JVM的全稱是Java Virtual Machine
B.JVM是一種計算機硬體技術,它是Java程式的執行平臺
C.JVM是在計算機硬體系統上用軟體實現的一臺假想機
D.Java程式在執行時.JVM把Java位元組碼解釋成機器碼
正確答案: B 你的答案: B (正確)
JVM是Java Virtual Machine(Java 虛擬機器 )的縮寫,JVM是一種用於計算裝置的規範,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。
簡單來看,虛擬機器本質就是一個程序。模擬平臺操作的一個程序。
3.下列關於建構函式的描述中,錯誤的是()
A.建構函式可以設定預設的引數
B.建構函式在定義類物件時自動執行
C.建構函式可以是行內函數
D.建構函式不可以過載
正確答案: D 你的答案: B (錯誤)
所謂行內函數就是指函式在被呼叫的地方直接展開,編譯器在呼叫時不用像一般函式那樣,引數壓棧,返回時引數出棧以及資源釋放等,這樣提高了程式執行速度。 對應Java語言中也有一個關鍵字final來指明那個函式是內聯的。 內聯不一定好,當被指定為內聯的方法體很大時,展開的開銷可能就已經超過了普通函式呼叫呼叫的時間,引入了內聯反而降低了效能,因為在選擇這個關鍵字應該慎重些,不過,在以後高版本的JVM中,在處理內聯時做出了優化,它會根據方法的規模來確定是否展開呼叫。”
建構函式顯然是可以過載的。
4.在面向物件程式設計裡,經常使用is-a來說明物件之間的繼承關係,下列物件中不具備繼承關係的是?()
A.手機與小米手機
B.企業家與雷軍
C.程式語言與Java
D.中國與北京
正確答案: D 你的答案: D (正確)
解析:北京是中國的一個城市並沒有繼承中國的什麼特性。
5. 下面的程式輸出的結果是( )
public class A implements B{
public static void main(String args[]){
int i;
A a1=new A();
i =a1.k;
System.out.println(“i=”+i);
}
}
interface B{

int k=10;

}
A.i=0
B.i=10
C.程式有編譯錯誤
D.i=true
正確答案: B 你的答案: D (錯誤)
解析:
在接口裡面的變數預設都是public static final 的,它們是公共的,靜態的,最終的常量.相當於全域性常量,可以直接省略修飾符。
實現類可以直接訪問介面中的變數
6.Java 的螢幕座標是以畫素為單位,容器的左下角被確定為座標的起點。
A.正確
B.錯誤
正確答案: B 你的答案: B (正確)
解析:容器的左上角被確定為座標的起點。
7. 以下程式碼執行的結果顯示是多少()?
public class Demo{
public static void main(String[] args){
System.out.print(getNumber(0));
System.out.print(getNumber(1));
System.out.print(getNumber(2));
System.out.print(getNumber(4));
}

public static int getNumber(int num){
    try{
        int result = 2 / num;
        return result;
    }catch (Exception exception){
        return 0;
    }finally{
        if(num == 0){
            return -1;
        }
        if(num == 1){
            return 1;
        }
    }
}

}
A.0110
B.-1110
C.0211
D.-1211
正確答案: B 你的答案: B (正確)
解析:finally一定會在return之前執行,但是如果finally使用了return或者throw語句,將會使trycatch中的return或者throw失效
try,catch,finally中:
num=0,捕獲異常,執行catch語句,catch中返回0,執行finally語句,finally語句中返回-1,於是返回finally中的-1;
num=1,try中返回2,執行finally語句,finally語句中返回1,於是返回finally中的1;
num=2,try中返回1,執行finally語句,finally語句中沒有返回,於是返回try中的1;
num=4,try中返回0,執行finally語句,finally語句中沒有返回,於是返回try中的0.
8. 關於繼承和實現說法正確的 是 ? ( )
A.類可以實現多個介面,介面可以繼承(或擴充套件)多個介面
B.類可以實現多個介面,介面不能繼承(或擴充套件)多個介面
C.類和介面都可以實現多個介面
D.類和介面都不可以實現多個介面
正確答案: A 你的答案: B (錯誤)
解析:1.類與類之間的關係為繼承,只能單繼承,但可以多層繼承。 2.類與介面之間的關係為實現,既可以單實現,也可以多實現。 3.介面與介面之間的關係為繼承,既可以單繼承,也可以多繼承。 故為A
9.假設如下程式碼中,若t1執行緒在t2執行緒啟動之前已經完成啟動。程式碼的輸出是()
public static void main(String[]args)throws Exception {
final Object obj = new Object();
Thread t1 = new Thread() {
public void run() {
synchronized (obj) {
try {
obj.wait();
System.out.println(“Thread 1 wake up.”);
} catch (InterruptedException e) {
}
}
}
};
t1.start();
Thread.sleep(1000);//We assume thread 1 must start up within 1 sec.
Thread t2 = new Thread() {
public void run() {
synchronized (obj) {
obj.notifyAll();
System.out.println(“Thread 2 sent notify.”);
}
}
};
t2.start();
}
A.Thread 1 wake up
Thread 2 sent notify.

B.Thread 2 sent notify.
Thread 1 wake up
C.A、B皆有可能
D.程式無輸出卡死
正確答案: B 你的答案: B (正確)
解析:執行obj.wait();時已釋放了鎖,所以t2可以再次獲得鎖,然後發訊息通知t1執行,但這時t2還沒有釋放鎖,所以肯定是執行t2,然後釋放鎖,之後t1才有機會執行。
10.Integer i = 42;
Long l = 42l;
Double d = 42.0;
下面為true的是
A.(i == l)
B.(i == d)
C.(l == d)
D.i.equals(d)
E.d.equals(l)
F.i.equals(l)
G.l.equals(42L)
解析:
ABC3 個選項很明顯,不同型別引用的 == 比較,會出現編譯錯誤,不能比較。

DEF 呼叫 equals 方法,因為此方法先是比較型別,而 i , d , l 是不同的型別,所以返回假。

選項 G ,會自動裝箱,將 42L 裝箱成 Long 型別,所以呼叫 equals 方法時,型別相同,且值也相同,因此返回真。