軟件工程師( Java程序設計)階段測試題

yanguz123 13年前發布 | 3K 次閱讀 Xunsearch WebLogic JavaScript Evince

軟件工程師( Java程序設計)階段測試題

一、選擇題,共40分(有多選):

1.           名為HelloWorld.javaJava應用程序如下:

public class HelloWorld {

    public static void main(String args[]){

        System.out.println("Hello World!");  

    }

}

(編譯的時候不區分大小寫(是在WINDOW引導下執行的),但是執行的時候必須要和文件名相同(是在JAVA虛擬機引導下執行的))

 

將這個程序放在C:\Test下,然后在命令行窗口中,進入到C:\Test路徑執行如下指令:

javac helloworld.java將得到( B)結果。

A.       編譯出錯。

B.       編譯成功,生成名為HelloWorld.class的文件。

C.       編譯成功,生成名為helloworld.class的文件。

D.       找不到名為helloworld.java的文件。

 

2.           Java程序被執行前,需要編譯成.class文件。.class文件中保存的是(   B  

A、二進制的本機代碼

B、字節碼

C、原始代碼

D、原始代碼與字節碼

 

3.           下面的程序名為Student.java

public class Student{

private String name;

public Student(String s_name)    //1

{

name = s_name;      //2

}

 

public static void main(String args[])

{

Student s = new Student();    //3,,。。。。構造器缺少參數

}

}

使用如下指令編譯:javac Student.java。將會得到的結果(B )。

A.       將會順利通過編譯,并將產生一個Student.class的類文件。

B.       編譯時在//3處出錯。

C.        編譯時在//2處出錯。

D.       編譯時在//1處出錯。

 

4.           當看到以下異常信息的時候,應該檢查(  B D 

Exception in thread "main" java.lang.NoClassDefFoundError: AnyClass

AAnyClass.java是否存在

BCLASSPATH環境變量是否正確

CPATH環境變量是否正確

DAnyClass.class是否存在

 

5.           在面向對象技術中,對外部世界隱藏內部數據,只通過公共方法訪問內部數據,這被稱為(   A  

A、封裝

B、多態

C、繼承

D、動態綁定

 

6.           關于下面的類描述中正確的是( C )。

class Test {                                             // 1

void test(int i) {        (構造器是沒有返回值的,也就是不帶VOID                             // 2

System.out.println("I am an int.");                   // 3

}                                                 // 4

void test(String s) {                                  // 5

System.out.println("I am a string.");                 // 6

}                                                 // 7

// 8

public static void main(String args[]) {                   // 9

Test t=new Test();                                // 10

char ch='y';                                      // 11

t.test(ch);                                        // 12

}                                                  // 13

}                                                      // 14

 

A.       編譯出錯

B.       編譯通過,運行出錯

C.       編譯通過,運行時輸出“I am an int

D.       編譯通過,運行時輸出“I am a string

 

 

7.           ListSet的正確描述是(   C   

A、他們都是Collection的子類。(是子接口)

BList不可以包含重復元素(可以重復)

CSet不可以包含重復元素

D、里面的元素按照Hash Code排序

 

 

8.           關于下述程序:

public class Test3{

public static void main(String[] agrs) {

byte b = 2,e =3;       //1

byte f = b+e;         //2(做變量的運算時,系統會自動轉換為int型,所以要求定義變量類型要大于int才行)

System.out.println(f);  //3

}

}

描述正確的是( C )。

A.       編譯通過,運行時打印出5

B.       編譯通過,運行時打印出23

C.       編譯不通過,在//2處有錯誤,因為此處f必須是一個int類型的變量。

D.       編譯不通過,在//1處有錯誤,不能這樣定義變量

 

9.           運行以下代碼,會在控制臺輸出( C    

int x = 5;

int y = 5;

System.out.println((x++ + ++y)*(--x + y--));X++先運算在自加,++X先自加在運算)

 

A99

B96

C121

D120

 

10.       Java中,關于讓垃圾回收器強制回收對象的說法中,正確的是( A )。

A垃圾回收不能強制

B. 調用System.gc()方法

C. 調用System.gc()方法,并且將需要回收的對象引用作為參數傳遞給這個方法

D. 調用Runtime.gc()方法

 

11.       運行以下代碼,會在控制臺輸出(  A 

int x = 2;

int y = 3;

System.out.println(x/y);(默認是int)

 

A0

B1

C0.67

D0.66666667

 

12.       可以通過實現Comparable讓一個類所產生的對象能夠被排序,那么對Comparable接口的正確描述是(  B  C 

AString類沒有實現Comparable接口。

BComparable里面的排序規則可以隨意定義

C、如果把沒有實現Comparable接口的類所產生的對象放置到SortedSetSortedMap中會產生異常。

D、對中文字符,Java能夠按字典順序排序

 

13.       關于下述程序:

public class Test4{

public static void main(String[] agrs){

double x = 1.234;                //1

double y = 2;                       //2

System.out.println(""+x+y);   //3(字符串和任何形式的數運算都會變成字符串)

System.out.println(x+y+"");   //4

}

}

描述正確的是D  )。

A.       編譯出錯。

B.       編譯通過,執行的時候在//2處報錯。

C.       編譯通過,執行時在//3處打印出3.234,在//4處打印出3.234

D.       編譯通過,執行時在//3處打印出1.2342.0,在//4處打印出3.234//在這是字符串)。

 

14.       聲明Java類的語法是:

修飾符 class 類名

以下那些修飾符可以使用到Java類聲明中(   B  

Afinally

Bfinal

Cstatic

Dprivate

 

15.       方法重載(overload)的條件是( A C 

A、參數類型不同

B、參數名稱不同

C、參數數量不同

D、返回值類型不同

 

16.       下述程序:

public class Test9{

static int i = 1;

static{

i++;   (靜態屬性,代碼塊在初始化時只執行一次)

}

public Test9(){

i++;

}

public static void main(String[] args){

Test9 t1 = new Test9();

System.out.println(t1.i); //1

Test9 t2 = new Test9();

System.out.println(t2.i); //2

}

}

編譯運行后在//1//2處分別打印出(c)。

A.   22           B.  33           C.  34           D.  43

 

17.       關于下述三個接口:

public interface IA{

public void methodA();

}

 

public interface IB{

public void methodB();

}

 

public interface IC extends IA,IB{

public void methodA();

}

正確的是(D)。

A.       接口IC不能通過編譯,因為它繼承了兩個接口。(類繼承類是單一的,類實現接口可以多個,接口可以繼承多個接口)

B.       接口IC不能通過編譯,因為它定義了一個和IA中一樣的方法methodA()

C.       接口IC不能通過編譯,因為它繼承了兩個接口,并且還定義了一個和IA一樣的methodA()方法。

D.       接口IC能夠順利通過編譯。

 

18.       下述語句執行結果為( A B )。

int[] arr = new int[10];

A.   arr[0] 0                          B.  arr[9] 0 

C.   arr[10]0                          D.  arr[0] null

(數組在創建的時候,默認值是對應數據類型的默認值int 0,,…double 0.0  booleanfalse  char\u0000  引用類型默認是NULL.

19.       關于breakcontinue語句,下面說法錯誤的有(A D )。

A.       break只能用于循環語句中。

B.       continue只能用于循環語句中。

C.       在循環語句中,break語句將終止循環;而continue是略過當前循環中剩余的語句進入下一次循環。

D.       在循環語句中,continue語句將終止循環;而break是略過當前循環中剩余的語句進入下一次循環。

 

20.       下面標識符合法的有( ABD

A.   IAMAClass           B.  $byte           C.  const(是個關鍵字)         D.  _year

 

21.       關于JAVA垃圾回收機制的哪些敘述是對的?(B)    ?????????????

A.       程序開發者必須自己創建一個線程進行內存釋放的工作。

B.       垃圾回收機制將檢查并釋放不再使用的內存。

C.       JAVA允許程序開發者明確指定并立即釋放該內存。

D.       能夠在期望的時間釋放被JAVA對象使用的內存。

 

22.  取出字符串String target = "IbmSunJavaBeaWeblogicOracle..."中的子串“Java”的語句是:( B 

A.   target.substring(5,10);             B.  target.substring(6,10);(包含前面的數字內容不包含后面的數字指示內容)

C.   target.substring(5,9);              D.  target.substring(6,9);

 

23.       下列描述正確的是:(  D ???????????????????????

A.       hashCode()返回是對象在內存唯一的標識,對象不同,hashCode()返回值一定不同。

B.       hashCode()方法可以重寫,但重寫的邏輯要和equals()保持一致性(不必要保持一致)。

C.       語句System.out.println("java"=="java");打印出的結果為“false”。(“true”)

D.       HashSet容器在存放某一類的對象時,改變該類的hashCode()方法可能會影響到HashSet容器的效率

 

24.       屬于Collection容器的方法是:( A C 

A.   iterator        B.  hasNextElement      C.  toArray     D.  next

 

25.       下面的程序會有編譯錯誤,更正的方法為:( C 

class OuterClass {

  public void f() {

    String s1 = "inner";

    class InnerClass {……(內部類訪問局部變量時,要求局部變量必須是final型的,但是能夠正常訪問全局變量)

      public void g() {

        System.out.println(s1);

      }

    }

  }

}

A.   將變量s1聲明為static               B.  將變量s1聲明為public

C.   將變量s1聲明為final               

D.   將內部類InnerClass聲明為static(靜態類是不能訪問任何外部變量)

 

26.       在以下的接口定義代碼中

public interface AnyInterface {

    public int a = 6;(默認是final static

}

a 的正確描述是(  B C

A、該定義方式不合法

B、是成員變量,也就是屬性

C、是最終變量,不可以修改

D、是類變量,也就是靜態變量

 

27.       運行以下代碼之后,控制臺輸出結果是( B

String s1 = "abc";

String s2 = "abc";

String s3 = new String("abc");

System.out.print((s1 == s2) + "");

System.out.print((s1 == s3) + "");

System.out.print(s1.equals(s2) + "");

System.out.println(s1.equals(s3));

 

Atruetruetruetrue

Btruefalsetruetrue

Ctruetruefalsefalse

Dtruefalsetruefalse

 

28.       Java提供了兩類I/O流,也就是字節流和字符流.以下選項正確的是(  B    

A、字節流是建立在字符流的基礎上的。(反過來)

B、字節流每個字節的長度為8位。

CPrintWriter屬于字節流。(字符流)

DSystem類的out屬性不屬于流類。

 

29.       運行以下代碼,在控制臺會輸出(  D 

System.out.println("中國的英語單詞是china".substring(1, 10));

A、中國的英語單詞是ch

B、中國的英語單詞是c

C、國的英語單

D國的英語單詞是ch

 

30.       如果在一個trycatchfinally組成的異常處理結構中,trycatchfinally每一個代碼段都存在return語句,且代碼沒有產生異常。那么被執行的return語句是(   D

Atry代碼段中的return語句

Bcatch代碼段中的return語句

Cfinally代碼段中的return語句

Dtryfinally代碼段中的return語句

 

31.       以下對抽象類正確的描述是(   BD

A、抽象類一定存在抽象方法

B、存在抽象方法的一定是抽象類

C、抽象類可以被實例化

D、抽象類不可以被實例化

 

32.       break continue語句的正確解釋是(  BD 

Abreak continue 只能用在循環語句中

Bbreak continue 可以與標簽一起使用

Cbreak 用來結束所有包含它的循環語句(只結束包含它的那一層循環)

Dcontinue 會放棄執行后續代碼,繼續執行循環

 

33.       sleepwait語句的作用是(   D 

Asleep語句精確地將當前線程暫時停止。

(線程的執行與停止是不能精確控制的,線程是由CPU控制的)

Bwait語句精確地將當前線程暫時停止。

C、可以通過notify語句停止sleep狀態。

D、可以通過notify語句停止wait狀態。

 

34.       對接口的正確描述包括(  C 

A、接口之間可以存在繼承關系,但是每個接口只能有一個父接口

B、接口里面可以定義私有方法(只能是public的方法)

C、接口里面可以定義常量

D、一個類只可以實現一個接口

 

35.       對變量成功進行強制類型轉換的前提條件是(  A C

A、轉換之后的類型是對象直接或間接父類類型

B、轉換之后的類型是對象直接或間接子類類型

C、轉換之后的類型是對象直接或間接實現的接口類型

D、可以轉換為任意類型

 

36.       標準的對象序列化過程中,序列化內容包括( B   (序列化過程不包括方法, static的不能被序列化  )

A、靜態屬性

B、成員屬性

C、靜態方法

D、成員方法

 

37.       下面的程序的輸出結果是:(  A (靜態優先于非靜態,父類優先于子類)

class SuperClass {

  static {

    System.out.println("SuperClass");

  }

  SuperClass() {

    System.out.println("SuperClass()");

  }

  public static void main(String[] args) {

    SubClass sc = new SubClass();

  }

}

class SubClass extends SuperClass {

  static {

    System.out.println("SubClass");

  }

  SubClass() {

    System.out.println("SubClass()");

  }

}

A.       SuperClass/SubClass/SuperClass()/SubClass()/

B.       SuperClass/ SuperClass()/SubClass /SubClass()/

C.       SubClass / SuperClass / SubClass()/SuperClass()/

D.       SubClass/ SubClass()/SuperClass / SuperClass()/

 

38.       下面程序的運行結果是:(  C

class SuperClass {

  public void f() {

    System.out.print("SuperClass.f()/");

  }

}

class SubClass extends SuperClass {

  public void f() {

   System.out.print("SubClass.f()/");

 }

}

class ThirdClass {

  public void g(SuperClass arg) {

    System.out.print("g(SuperClass)/");

    arg.f();

  }

  public void g(SubClass arg) {

    System.out.print("g(SubClass)/");

    arg.f();

  }

  public static void main(String[] args) {

    ThirdClass tc = new ThirdClass();

    SuperClass sc = new SubClass();

    tc.g(sc);

  }

}

A.   g(SubClass)/SubClass.f()/           B.  g(SuperClass)/SuperClass.f()/

C.   g(SuperClass)/SubClass.f()/         D.  g(SubClass)/SuperClass.f()/

 

39.       已有接口定義:

package test;

public interface Role {

  public void action() throws java.io.IOException;

}

下面的類定義不會有編譯錯誤的是:(A  B C )

A.        

package test;

public class A implements Role {

  public void action() throws java.io.FileNotFoundException {}

}

B.        

package test;

public class B implements Role {

  public void action() throws java.io.IOException {}

}

       C

package test;

public class C implements Role {

  public void action() {};

}

       D

package test;

public class D implements Role {

  public void action() throws Exception {}(子類的異常要小于等于父類)

}

 

40.       下面的程序輸出的結果為:(D)

public class Test {

  public static void main(String[] args) {

    StringBuffer buffer = new StringBuffer();

    int value = 18;

    do {

      int temp = value & 0x07;

      buffer.append(temp);append是連接方法)

    }while((value>>>=3)!=0);

    System.out.println(buffer.reverse());reverse是反轉方法)

  }

}

A.   24              B.  23              C.  25              D.  22

 

二、數據庫(共18分)

1oraclecharvarchar2數據類型有什么區別?

有數據”test”分別存放到char(10)varchar2(10)類型的字段中,其存儲長度及類型有何區別?2分。

Char 是定長字符數據  varchar2是可變長字符數據

Char(10)是固定了10個長度,后面不滿時會補滿,而varchar2(10)的長度是可變的,后面不滿可以略去

       test4個字符,當它存放到char(10)時,會補滿10位,而varchar2(10)時只用4位)

2、在scott用戶中建立表test_table,表中包含如下字段

字段名稱 數據類型 要求

id         Number 主鍵

name      Varchar2 非空

age        Number

sex        Varchar2

salary     Number

create table test_table(

id     number(10),

name  varchar2(10),

age    number(10),

sex    varchar2(10),

salary  number(10)  

)

a、簡要寫出在scott用戶中建立序列t_sque,要求從100開始,步長為1,最小值10,最大值99999.

Create  sequence t_sque(

Increment  by  1

Start      with 100

Minvalue      10

Maxvalue      99999;

)

 

b、寫出SQL語句,向test_table表中插入一條記錄,其中ID字段的值來自序列t_sque

Insert into test_table value(t_sque.nextval…)

 

c、用SQL語句創建個一個視圖test_vw,這個視圖用來顯示test_table表中id>1000的記錄。

Create view test_vw as where id>1000;

 

3、參見如下表結構

出版社:

出版社代碼 char(2),

出版社名稱 varchar2(32)

 

圖書:

圖書編號 char(8),

圖書名稱 varchar2(128),

出版社代碼 char(2),

作者代號 char(4),

圖書簡介 varchar2(128)

 

作者:

作者代號 char(4),

作者名稱 varchar2(10),

性別 char(1),

年齡 number(3),

文學方向 varchar2(64)

 

獲獎名單:

獲獎日期 date,

獲獎人員 char(4)  --注:獲獎人員即為作者代號

 

a.編寫SQL語句,找出“作者”庫中沒有出現在“獲獎名單”表中所有作者信息的SQL語句。Select * from

 

 

b.根據 “獲獎名單”和“作者”表,寫出SQL語句,查詢出在上一個月獲獎的人員信息(代號,名稱,獲獎時間)。

Where 

 

4Oracle數據庫表存在偽列rownumber,請利用rownumber,編寫一個SQL語句,如emp表已經按sal從大到小排列,請從中找出第310條(包含)記錄。

 

 

5Oracle中,需要在查詢語句中把空值(NULL)輸出為0,如何處理?

Nvl(列名,0)//若該列為空,則輸出為0

 

6、創建表SWJ,有列名ID(字符,3)、NAME(字符,20)、AGE(數字,2)、UNIT(字符,30),BIRTH(日期)。要求:ID為主鍵,NAME不能為空,AGE1625之間。

 

 

7 根據SCOTTEMP表建立一個新表EMPLOYEES,字段與原表相同,但內容只要有工資SAL不小于2000的記錄。根據EMPLOYEES建立視圖EMP_VIEWEMP_VIEW中有IDNAMESAL。根據DEPT表建立一個新表DEPARTMENTS,結構與內容與原表的完全一致。

 

 

8 從第7題表EMPLOYEESDEPARTMENTS中顯示所有名字(EANME)G開頭且工資(SAL)大于3000的人的姓名、工資、部門名稱。

 

 

9 從第7題表EMPLOYEESDEPARTMENTS中顯示最高工資人姓名ENAME、部門名稱(DNAME)和工作崗位(JOB)。

 

 

10 從第7題表EMPLOYEES中統計出每個部門的平均工資、工資總和、部門人數、最大工資和最小工資。

 

 

三、編程題(共42分)

1.           簡述單子模式的思路,并且寫出一種實現方案:5

Public class singleton{

Private static singleton single = new singleton();

Private  singleton(){

}

Public static singleton getsingletoninstance(){

    Return single;   

}

}

2.       寫一個類,當該類的實例創建時即啟動一個線程,按照指定格式每隔5秒循環打印出當前的時間,指定的日期格式為:××××年××月××日 ××點××分××秒。5

(線程的創建和日期的格式化)

3.       寫一個程序統計輸入字符串中以“,”分隔的各種單詞出現的次數。例如:輸入的字符串為“java,java,j2ee,ibm,j2ee,ibm,j2me,java”,則該程序的輸出結果應該為:

java3;j2ee2;ibm2;j2me1個。8

 

4.       已知在文件路徑“c:\temp\”,在此文件夾下有若干.dat文件,寫出Java程序將該文件夾下所有文件拷貝到路徑“c:\bak”下。7分。

 

5.       寫出一段程序,從備選字符串“red”、“green”、“blue”、“black”、“white”中隨機選出3個不同的字符串,并打印到控制臺。7分。

 

6.寫一個服務端程序,和一個客戶端程序,并由客戶端程序記錄鍵盤敲擊事件(什么時間按什么鍵),然后發送給服務端,再由服務端把每次的信息保存到“d:\keyinfo.txt”文件中。10

 

 本文由用戶 yanguz123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!