1. 程式人生 > >Java 初級軟體工程師 認證考試試卷1

Java 初級軟體工程師 認證考試試卷1

Java 初級軟體工程師

認證考試試卷

 

筆試(A卷)

 

 

考試時間150分鐘

 

總分 100分

 

 

姓    名_______________________

身份證號_______________________

 

 

 

考試結束後考卷必須收回,否則考試成績無效

 

 

尚學堂Java 初級軟體工程師認證考試試卷

 

 

一、   

填空題(共20個題目,總計20分)

  1. 安裝JDK後,為了告訴計算機javac.exe和java.exe等執行檔案的位置,需要配置的環境變數是______Path_______。
  2. Java提供了三種註釋型別,分別是單行註釋,多行註釋和_____文件註釋________。
  3. char 型別用來表示在Unicode編碼表中的字元,長度是___2___個位元組。
  4. ___&&______是短路與運算子,如果左側表示式的計算結果是false,右側表示式將不再進行計算。
  5. _____contiune________語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。
  6. 基本資料型別的型別轉換中,要將double型別的常量3.14159賦給為整數型別變數n的語句是________int n = int(3.14159);_____________。
  7. 執行Person p = new Person();語句後,將在___堆記憶體________中給Person物件分配空間,並在棧記憶體中給引用變數p分配空間,存放Person物件的引用。
  8. 使用static修飾的變數稱為靜態變數,靜態變數可以有兩種訪問方式,分別是類名.靜態變數名和_______物件名.靜態變數名________________。
  9. 在一個類檔案中的關鍵字package,import,class出現的可能順序是________________package,import,class______________。
  10. 異常是由Java應用程式丟擲和處理的非嚴重錯誤,比如所需檔案沒有找到、零作除數,陣列下標越界等,可分為兩類:Checked異常和__執行時異常(RuntimeException)________________。
  11. 陣列在記憶體中分配連續的空間,陣列的長度固定,一經分配無法改變,可以使用___length_________屬性獲取陣列的長度。
  12. DateFormat類可以實現字串和日期型別之間的格式轉換,其中將日期型別轉換為指定的字串格式的方法名是_____Forma_________。
  13. JDK1.5後提供了____enum________關鍵字,用以定義列舉類。列舉類是一種特殊的類,可以有自己的屬性、方法和構造方法。
  14. 如果希望將自定義類Student的多個物件放入集合TreeSet,實現所有元素按照某個屬性的自然順序排列,則需要Student類實現___Comparabe_______________介面。
  15. 迭代器Iterator為集合而生,專門實現集合遍歷,該介面有三個方法,分別是hasNext() 、___next()_________、remove()。
  16. Java IO體系中,__DataInputStream__________________是位元組輸入流,提供了可以存取所有Java基礎型別資料(如:int,double 等)和String的方法,但沒有提供存取物件的方法。
  17. ____序列化________是指將Java物件轉換成位元組序列,從而可以儲存到磁碟上,也可以在網路上傳輸,使得不同的計算機可以共享物件。
  18. Java反射技術中,每個Method物件對應一個方法,獲得Method物件後,可以呼叫其__invoke_________來呼叫對應方法。
  19. 處於執行狀態的執行緒在某些情況下,如執行了sleep(睡眠)方法,或等待I/O裝置等資源,將讓出CPU並暫時停止自己的執行,進入____阻塞_____狀態。
  20. 統一資源定位符URL是指向網際網路“資源”的指標,由4部分組成:協議、存放資源的主機域名、____埠號______和資源路徑和檔名。

二、    選擇題(共25個題目,總計25分)

1)

以下選項中是對一個Java原始檔進行正確編譯的語句是( A   (選擇一項)

 

 

 

 

A.

javac Test.java

 

B.

javac Test

 

C.

java Test

 

D.

java Test.class

2)

以下選項中屬於合法的Java識別符號的是(CD    。(選擇項)

 

 

 

 

A.

public

 

B.

3num

 

C.

name

 

D.

_age

3)

以下程式碼的執行結果是(  B  。(選擇一項)

 

boolean m = true;

if(m = false){

    System.out.println("false");

}else{

    System.out.println("true");

}

 

 

 

 

A.

false

 

B.

true

 

C.

編譯錯誤

 

D.

無結果

4)

以下do-while迴圈程式碼的執行結果是( A   。(選擇一項)

 

int a=0;

int c=0;

do{

    --c;

    a=a-1;

}while(a>0);

System.out.println(a+"  "+c);

 

 

 

 

A.

-1  -1

 

B.

死迴圈

 

C.

-1  -2

 

D.

-1  0

5)

while迴圈和do-while迴圈的區別是( D   。(選擇一項)

 

 

 

 

A.

沒有區別,這兩個結構在任何情況下效果一樣

 

B.

while迴圈比do-while迴圈執行效率高

 

C.

while迴圈是先迴圈後判斷,所以迴圈體至少被執行一次

 

D.

do-while迴圈是先迴圈後判斷,所以迴圈體至少被執行一次

6)

分析下面的Java多重迴圈程式碼片段,編譯執行後的輸出結果是( D   。(選擇一項)

 

for (int i = 0; i < 6; i++) {

    int k = ++i;

    while (k < 5) {

       System.out.print(i);

       break;

    }

}

 

 

 

 

A.

024

 

B.

02

 

C.

123

 

D.

13

7)

以下關於方法呼叫的程式碼的執行結果是(   B 。(選擇一項)

 

public class Test {

    public static void main(String args[]) {

       int i = 99;

       mb_operate(i);

       System.out.print(i + 100);

    }

    static void mb_operate(int i) {

       i += 100;

    }

}

 

 

 

 

A.

99

 

B.

199

 

C.

299

 

D.

99100

8)

以下關於繼承條件下構造方法執行過程的程式碼的執行結果是(  A  。(選擇一項)

 

class Person {   

    public Person() {

       System.out.println("execute Person()");1

    }

}

class Student extends Person { 

    public Student() {      

       System.out.println("execute Student() ");2

    }  

}

class PostGraduate extends Student {  

    public PostGraduate() { 

       System.out.println("execute PostGraduate()");3

    }  

}

public class TestInherit {

    public static void main(String[] args) {

       new PostGraduate();     

    }

}

 

 

 

 

A.

execute Person()

execute Student()

execute PostGraduate()

 

B.

execute PostGraduate()

 

C.

execute PostGraduate()

execute Student()

execute Person()

 

D.

沒有結果輸出

9)

以下語句中關於Java構造方法的說法錯誤的是(  B  。(選擇一項)

 

 

 

 

A.

構造方法的作用是為建立物件進行初始化工作,比如給成員變數賦值

 

B.

一個Java類可以沒有構造方法,也可以提供1個或多個構造方法

 

C.

構造方法與類同名,不能書寫返回值型別

 

D.

構造方法的第一條語句如果是super(),則可以省略,該語句作用是呼叫父類無引數的構造方法

10)

以下關於thissuper關鍵字的說法錯誤的是(  BD  。(選擇二項)

 

 

 

 

A.

this關鍵字指向當前物件自身,super關鍵字指向當前物件的直接父類

 

B.

在main方法中可以存在this或super關鍵字,但不能同時存在。

 

C.

this和super關鍵字都可以訪問成員屬性,成員方法和構造方法

 

D.

在一個類的構造方法中可以同時使用this和super來呼叫其他構造方法

11)

以下選項中可以使成員變數m 被函式fun()直接訪問的是(  C  。(選擇一項)

 

class Test {

    private int m;

    public static void fun() {     

       System.out.println(m);

    }

}

 

 

 

 

A.

將private int m 改為protected int m

 

B.

將private int m 改為 public int m

 

C.

將private int m 改為 static int m

 

D.

將private int m 改為 int m

12)

Person類和Test類的程式碼如下所示,則程式碼中的錯誤語句是( C   。(選擇一項)

 

public class Person {

    public String name;

    public Person(String name) {

       this.name = name;

    }

}

public class Test {

    public static void main(String[] args) {

        final Person person = new Person("歐歐");

        person.name = "美美";

        person = new Person("亞亞");

    }

}

 

 

 

 

 

A.

 

final Person person = new Person("歐歐");

 

B.

person.name = "美美";

 

C.

person = new Person("亞亞");

 

D.

沒有錯誤

13)

以下關於異常的程式碼的執行結果是(  C  。(選擇一項)

 

public class Test {

    public static void main(String args[]) {

       try {

           System.out.println("try");        

           return;

       } catch(Exception e){

           System.out.println("catch");

       }finally {

           System.out.println("finally");

       }

    }

}

 

 

 

 

A.

try

catch

finally

 

B.

catch

finally

 

C.

try

finally

 

D.

try

 

14)

以下關於String類的程式碼的執行結果是( B   。(選擇一項)

 

public class Test2 {

    public static void main(String args[]) {

        String s1 = new String("bjsxt");

        String s2 = new String("bjsxt");

        if (s1 == s2)

            System.out.println("s1 == s2");

        if (s1.equals(s2))

            System.out.println("s1.equals(s2)");

    }

}

 

 

 

 

A.

s1 == s2

 

B.

s1.equals(s2)

 

C.

s1 == s2

s1.equals(s2)

 

D.

以上都不對

 

 

15)

以下關於StringBuffer類的程式碼的執行結果是(  D  。(選擇一項)

 

public class TestStringBuffer {

    public static void main(String args[]) {

       StringBuffer a = new StringBuffer("A");

       StringBuffer b = new StringBuffer("B");

       mb_operate(a, b);

       System.out.println(a + "." + b);

    }

    static void mb_operate(StringBuffer x, StringBuffer y) {

       x.append(y);

       y = x;

    }

}

 

 

 

 

A.

A.B 

 

B.

A.A

 

C.

AB.AB

 

D.

AB.B

16)

以下選項中能夠正確建立一個數組的是( AD   。(選擇二項)

 

 

 

 

A.

float []f[] = new float[6][6];

 

B.

float f[][] = new float[][];

 

C.

float [6][]f = new float[6][6];

 

D.

float [][]f = new float[6][];

17)

以下選項中關於intInteger的說法錯誤的是(  BD。(選擇二項)

 

 

 

 

A.

int是基本資料型別,Integer是int的包裝類,是引用資料型別

 

B.

int的預設值是0,Integer的預設值也是0

 

C.

Integer可以封裝了屬性和方法提供更多的功能

 

D.

Integer i=5;該語句在JDK1.5之後可以正確執行,使用了自動拆箱功能

18)

以下選項中關於Java集合的說法錯誤的是( AC   。(選擇二項)

 

 

 

 

A.

List介面和Set介面是Collections介面有兩個子介面

 

B.

List介面中存放的元素具有有序,不唯一的特點

 

C.

Set介面中存放的元素具有無序,不唯一的特點

 

D.

Map介面存放的是對映資訊,每個元素都是一個鍵值對

19)

以下程式碼的執行結果是(B 。(選擇一項)

 

Set<String> s=new HashSet<String>();

s.add("abc");

s.add("abc");

s.add("abc");

s.add("abcd");

System.out.println(s.size());

 

 

 

 

A.

1

 

B.

2

 

C.

3

 

D.

4

20)

下面集合類中屬於非執行緒安全,且結構採用了雜湊表的是( C 。(選擇一項)

 

 

 

 

A.

Vector

 

B.

ArrayList

 

C.

HashMap

 

D.

Hashtable

21)

以下選項中關於如下程式碼的說法正確的是(  AD。(選擇二項)

 

public class TestBuffered {

    public static void main(String[] args) throws IOException {

       BufferedReader br =

           new BufferedReader(new FileReader("d:/bjsxt1.txt"));

       BufferedWriter bw =

           new BufferedWriter(new FileWriter("d:/bjsxt2.txt"));

       String str = br.readLine();

       while(str !=null){

           bw.write(str);

           bw.newLine();

           str = br.readLine();

       }

       br.close();

       bw.close();  

    }

}

 

 

 

 

A.

該類使用字元流實現了檔案複製,將d:/bjsxt1.txt複製為d:/bjsxt2.txt

 

B.

FileReader和FileWriter是處理流,直接從檔案讀寫資料

 

C.

BufferedReader和BufferedWriter是節點流,提供緩衝區功能,提高讀寫效率

 

D.

readLine()可以讀取一行資料,返回值是字串型別,簡化了操作

22)

InputStreamReader是轉換流,可以將位元組流轉換成字元流,是字元流與位元組流之間的橋樑。它的實現使用的設計模式是( C  。(選擇一項)

 

 

 

 

A.

工廠模式

 

B.

裝飾模式

 

C.

介面卡模式

 

D.

代理模式

23)

以下選項中可以填寫到橫線處,讓程式碼正確編譯和執行的是( A   。(選擇一項)

 

public class Test implements Runnable {

    public static void main(String[] args) {

       ___________________________________

       t.start();

       System.out.println("main");

    }

    public void run() {

       System.out.println("thread1!");

    }

}

 

 

 

 

A.

Thread t = new Thread(new Test());

 

B.

Test t = new Test();

 

C.

Thread t = new Test();             

 

D.

Thread t = new Thread();

24)

在多個執行緒訪問同一個資源時,可以使用(  A  關鍵字來實現執行緒同步,保證對資源安全訪問。(選擇一項)

 

 

 

 

A.

synchronized

 

B.

transient

 

C.

static

 

D.

yield

25)

以下說法中關於UDP協議的說法正確的是(  AD  。(選擇二項)

 

 

 

 

A.

傳送不管對方是否準備好,接收方收到也不確認

 

B.

面向連線

 

C.

佔用系統資源多、效率低

 

D.

非常簡單的協議,可以廣播發送

       

 

三、    判斷題(共20個題目,總計10分)

  1. 一個Java原始檔中可以定義多個類,但是至多隻能有一個public類。(T )
  2. Java的位元組碼檔案的副檔名是class,是一種平臺獨立的非二進位制檔案。( F  )
  3. ^ 是異或位運算子,運算規則是如果兩個運算元相同,結果是0,否則結果是1。( T )
  4. 賦值運算子優先級別低於條件運算子,條件運算子優先級別低於算術運算子。( T  )
  5. switch選擇語句是多分支選擇語句,只能處理等值條件判斷的情況,表示式可以是int型別、char型別,但不能是double,float型別。( T  )
  6. 在多重迴圈中,外層迴圈變數變化一遍,內層迴圈變數要變化一次 。( F  )
  7. 程式呼叫自身的程式設計技巧稱為遞迴。遞迴的特點是程式設計簡單並且節省記憶體。(  F )
  8. 類可以看成一類物件的模板,物件可以看成該類的一個具體例項。( T  )
  9. 使用public修飾的成員屬性和方法可以被當前專案中所有包的所有類訪問。( T  )
  10. 將子類物件賦給父類引用變數,稱為向下轉型,將無法訪問子類特有的方法。( F  )
  11. 繼承是多型的基礎,沒有繼承就沒有多型。(  T )
  12. 內部類作為外部類成員,許可權修飾符和其他成員一樣,可宣告為private、預設、protected或public。(  T )
  13. 對於物理連線,比如資料庫連線、輸入流輸出流、Socket連線等,垃圾回收機制無能為力,必須手動關閉才可以。(  T )
  14. 陣列和集合中的元素可以是任何資料型別,包括基本型別和引用型別。( F  )
  15. 增強的for迴圈可以遍歷陣列和集合,語法簡單 不需要知道陣列的長度,不能實現與下標相關的操作。(  T )
  16. LinkedHashMap是一種有序的HashMap,查詢速度快,便於進行新增刪除操作。( T  )
  17. Collection類是專門用來操作集合的工具類,提供一系列靜態方法實現對各種集合的操作。(  F )

Collection是介面型別,存放單值的最大介面;
 Collections是操作集合的工具類,就像陣列一樣,Arrays類是陣列工具類。

  1. 一個File物件可以代表一個檔案或目錄,它可以獲取檔案和目錄屬性,也可以訪問檔案內容。F )
  2. 程序是執行緒Thread內部的一個執行單元,它是程式中一個單一順序控制流程。( F  )
  3. Socket是傳輸層供給應用層的程式設計介面,是應用層與傳輸層之間的橋樑 。(  T )

 

四、    簡答題(共5個題目,總計25分)

  1. 方法過載和方法重寫(覆蓋)的區別。(4分)

 

英文

位置不同

修飾符

返回值

方法名

引數

丟擲異常

方法體

過載

overload

同一個類中

無關

無關

相同

不同

無關

不同

重寫

override

子類和父類間

大於等於

小於等於

相同

相同

小於等於

不同

 

    答:

    (1)相同點:

    ①方法名稱相同。

    ②都屬於多型機制。

    (2不同點:位置、引數列表、許可權修飾符、返回值型別、丟擲異常不同。

    過載(overload)發生在同一個類中,方法名相同,引數列表不同,與許可權修飾、返回值型別、丟擲異常無關。

    重寫(override): 發生在繼承類中,方法名和引數列表相同,許可權修飾符大於等於父類、返回值型別小於等於父類、丟擲異常小於等於父類。

 

  1. 寫出java.lang.Object類的六個常用方法的宣告並說明其作用。(6分)

    1)       public boolean equals(java.lang.Object) 比較內容

    2)       public native int hashCode() 雜湊碼

    3)       public java.lang.String toString() 變成字串

    4)       public final native java.lang.Class getClass() 獲取類結構資訊

    5)       protected void finalize() throws java.lang.Throwable 垃圾回收前執行的方法

    6)       protected native Object clone() throws java.la