工程師筆試題答案

來源:才華庫 9.03K

 一、單項選擇題

工程師筆試題答案

1.二進位制數 11101 轉化為十進位制數是( )。

A.23  B.17  C.26  D.29

2.以下可以對物件加互斥鎖的關鍵字是( )。

A.synchronized  B.serialize C.volatile  D.static

 二、不定項選擇題

3.下列關於類的構造方法的描述中,正確的是( )。

A.類中的構造方法不可省略

B.構造方法必須與類同名,但方法不能與class 同名

C.構造方法在一個物件被 new 時執行

D.一個類只能定義一個構造方法

4.下列關於 Java 語言中 main 方法的描述中,正確的是( )。

A.Java 程式的 main 方法必須寫在類裡面

B.Java 程式中可以有多個 main方法

C.Java 程式的 main 方法中,如果只有一條語句,可以不用大括號{}括起來

D.Java 程式中類名必須與檔名一樣

5.在類宣告中,宣告一個類不能再被繼承的關鍵字是( )。

A.private  B.abstract C.final D.static

 答案解析

一、單項選擇題

1.二進位制數 11101 轉化為十進位制數是( )。

A.23  B.17  C.26  D.29

答案:D。

分析:本題考察的是進位制轉換的知識。本題中,二進位制數 11101 對應的十進位制數表示為 1*2^0 + 0*2^1 + 1*2^2 +1*2^3 + 1*2^4= 29,所以,選項 D 正確。除了人工轉換外,在 Java 語言中,也可以用如下方法將一個二進位制數轉換為十進位制數:eOf("11101",2) 。所以,本題的答案為 D。

2.以下可以對物件加互斥鎖的關鍵字是( )。

A.synchronized  B.serialize C.volatile  D.static

答案:A。

分析:本題考察的是 Java 關鍵字的知識。對於選項 A,synchronized(同步的)是 Java 語言的關鍵字,主要用來給物件和方法或者程式碼塊加鎖,當它鎖定一個方法或者一個程式碼塊時,同一時刻最多隻有一個執行緒執行這段程式碼。當兩個併發執行緒訪問同一個物件中的這個加鎖同步程式碼塊時,同一時間只能有一個執行緒執行。所以,選項 A 正確。

對於選項 B,serialize 是序列化的意思,所謂物件的序列化指的是把物件轉換為位元組序列的過程,所謂物件的反序列化指的是把位元組序列恢復為物件的過程。通常,物件的序列化主要有以下兩種用途:

①將物件的位元組序列永久地儲存到硬碟上,通常存放在一個檔案中;

②在網路上傳送物件的位元組序列。在 Java 語言中,序列化通過 Serializable 介面來實現。所以,選項 B 不正確。

對於選項 C,在由 Java 語言編寫的程式中,有時候為了提高程式的執行效率,編譯器會做一些優化操作,把經常被訪問的變數快取起來,程式在讀取這個變數的時候有可能會直接從暫存器中讀取這個值,而不會去記憶體中讀取。這樣做的一個好處是提高了程式的執行效率,但當遇到多執行緒程式設計時,變數的值可能被其他執行緒改變了,而該快取的值不會做相應的改變,從而造成應用程式讀取的值和實際的變數值不一致。關鍵字 volatile 正好能夠解決這一問題,被關鍵字 volatile 修飾的變數編譯器不會做優化,每次都會從記憶體中讀取。所以,選項 C 不 正確。

對於選項 D,關鍵字 static 主要有以下兩種作用:第一,為某特定資料型別或物件分配單一的儲存空間,而與建立物件的個數無關。第二,希望某個方法或屬性與類而不是物件關聯在一起,也就是說,在不建立物件的情況下就可以通過類來直接呼叫方法或使用類的屬性。總之,被 static 修飾的屬性(方法)是類的屬性(方法),不屬於任何物件。所以,選項 D 不正確。

所以,本題的答案為 A。

 二、不定項選擇題

3.下列關於類的構造方法的描述中,正確的是( )。

A.類中的構造方法不可省略

B.構造方法必須與類同名,但方法不能與class 同名

C.構造方法在一個物件被 new 時執行

D.一個類只能定義一個構造方法

答案:C。

分析:本題考察的是 Java 語言構造方法的知識。對於選項 A,類中的構造方法是可以省略的,當省略的時候,編譯器會提供一個預設的構造方法以供使用。因此,選項 A 錯誤。對於選項 B,構造方法必須與類名相同,但是方法名也可以與類名相同。如下例所示:

public class Test{

public Test(){

tln("construct");

}

public void Test(){

tln("call Test");

}

public static void main(String[] args) {

Test a = new Test(); //呼叫構造方法

(); //呼叫 Test 方法

}

}

程式的執行結果為

construct

call Test

因此,選項 B 錯誤。對於選項 C,當一個物件被 new 的時候必定會呼叫構造方法。因此,選項 C 正確。對於選項 D,由於構造方法也可以過載,所以,一個類可以定義多個構造方法。因此,選項 D 錯誤。所以,本題的答案為 C。

4.下列關於 Java 語言中 main 方法的描述中,正確的是( )。

A.Java 程式的 main 方法必須寫在類裡面

B.Java 程式中可以有多個 main方法

C.Java 程式的 main 方法中,如果只有一條語句,可以不用大括號{}括起來

D.Java 程式中類名必須與檔名一樣

答案:A、B。

分析:本題考察的是 Java 基本語法的知識。

在 Java 語言中,main 方法是程式的入口方法,一個程式要想執行必須要有 main 方法,但是隻有滿足特定條件的 main 方法才能作為程式的入口方法。對於本題而言:對於選項 A,由於 Java 語言是純物件導向語言,所以,所有的`屬性與方法都必須定義在類裡面,而且,main 方法也不例外。因此,選項 A 正確。對於選項 B,Java 程式可以定義多個 main 方法,但是隻有 public static void main(String[]args)方法才是 Java 程式的入口方法,其他 main 方法都不是,並且這個入口方法必須被定義在類名與檔名相同的被 public 修飾的類中,如下例所示():

class T{

public static void main(String[] args) {

tln("T main");

}

}

public class Test {

// 程式入口方法

public static void main(String[] args) {

tln("Test main");

}

}

程式的執行結果為Test main從上例可以看出,這個程式中定義了多個 main 方法,但是隻有滿足特定條件的 main 方法才能作為程式的入口方法。因此,選項 B 正確。對於選項 C,在 Java 語言中,不管方法體裡有幾條語句,所有的方法體都必須用大括號{}括起來。因此,選項 C 錯誤。對於選項 D,在 Java 語言中,一個檔案內部可以有多個類的存在,但只有被 public 修飾的類的名字與檔案的名字相同,其他類的名字可以根據需求隨意起名字。因此,選項 D 錯

誤。所以,本題的答案為 A、B。

5.在類宣告中,宣告一個類不能再被繼承的關鍵字是( )。

A.private  B.abstract C.final D.static

答案:C。

分析:本題考察的是 Java 關鍵字的知識。

對於選項 A,關鍵字 private 是一個作用域修飾符,被關鍵字 private 修飾過的變數或方法只有當前類或物件具有訪問許可權。所以,選項 A 不正確。對於選項 B,在 Java 語言中,可以通過把類或者類中的某些方法宣告為 abstract 來表示一個類是抽象類。所以,選項 B 不正確。

對於選項 C,被 final 修飾的變數為常量,當一個方法被宣告為 final 時,該方法不允許任何子類重寫,當一個類被宣告為 final 時,此類不能被繼承,所有方法都不能被重寫。所以,選項 C 正確。

對於選項 D,關鍵字 static 主要有兩種作用:第一,為某特定資料型別或物件分配單一的儲存空間,而與建立物件的個數無關;第二,希望某個方法或屬性與類而不是物件關聯在一起,也就是說,在不建立物件的情況下就可以通過類來直接呼叫方法或使用類的屬性。即被 static 修飾的屬性(方法)是類的屬性(方法),不屬於任何物件。所以,選項 D 不正確。

所以,本題的答案為 C。

熱門標籤