天天看點

JAVA選擇練習2

1. 編譯 Java 源程式檔案産生的位元組碼檔案的擴充名為(B)
 A. java
 B. class
 C. html
 D. exe
 解析:java源檔案的字尾名是.java。源檔案通過jvm虛拟機編譯後會生成二進制位元組碼檔案,字尾是.class
           
2. Java 語言中建立一個對象使用的關鍵字是(C)
 A. class
 B. interface
 C. new
 D. create
 解析:class是一個類的關鍵字,建立一個對象關鍵字肯定是new。
           
3. 在基本JAVA類型中,如果不明确指定,整數型的預設是什麼類型?帶小數的預設是什麼類型?(B)
 A. int float
 B. int double
 C. long float
 D. long double
 解析:整數類型 預設為 int,帶小數的預設為 double
           
4. Which of the following statements are valid array declaration?(A)
(A) int number();
(B) float average[];
(C) double[] marks;
(D) counter int[];
 A. (B) & (C)
 B. (A)
 C. (A) & (C)
 D. (D)
 解析:Java兩種數組聲明方式 1.int[] nums;
2.int nums[];
           
5. 要求比對以下16進制顔色值,正規表達式可以為:  #ffbbad  #Fc01DF  #FFF  #ffE     (B)
 A. /#([0-9a-f]{6}|[0-9a-fA-F]{3})/g
 B. /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
 C. /#([0-9a-fA-F]{3}|[0-9a-f]{6})/g
 D. /#([0-9A-F]{3}|[0-9a-fA-F]{6})/g
 解析:以#開頭,後面是數字和a-f的字元(大寫或小寫),這個值是6位或3位。要比對一個3位是為了符合16進制顔色的簡寫規則。
           
6. 枚舉(enum)屬于原始資料類型(primitive type)。(B)
 A. 正确
 B. 錯誤
 解析:在Java中,變量有兩種類型,一種是原始類型,一種是引用類型。
原始類型一共有8種,它們分别是char,boolean,byte,short,int,long,float,double。在Java API中,有它們對應的包裝類,分别是(首字母大寫)Character,Boolean,Byte,Short,Integer,Long,Float,Double(char,int的變化稍微大點)。
JAVA JVM對于不同的原始類型會配置設定不同的存儲空間,具體配置設定如下:
byte  : 1個位元組    8位                           127 (有符号)
short : 2個位元組    16位                            32767
int :     4個位元組    32位                            2147483647
long:   8個位元組    64位                            9223372036854775807
float:   4個位元組    32位                            3.4028235E38
double:8個位元組   64位                            1.7976931348623157E308
枚舉(enum)類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的資料片斷,而且全部都以類型安全的形式來表示,是特殊的類,可以擁有成員變量和方法。
           
7. 建立Statement對象的作用是?(C)
 A. 連接配接資料庫
 B. 聲明資料庫
 C. 執行SQL語句
 D. 儲存查詢結果
 解析:1、Statement對象用于執行不帶參數的簡單SQL語句。 
2、Prepared Statement 對象用于執行預編譯SQL語句。 
3、Callable Statement對象用于執行對存儲過程的調用。
           
8. 給出以下代碼
public class TestObj{
    public static void main(String[] args){
        Object o=new Object(){
            public boolean equals(Object obj){
                return true;
            }
        };
        System.out.println(o.equals(“Fred”));
    }
}
請給出結果:(B)
 A. 運作時抛出異常
 B. true
 C. Fred
 D. 第三行編譯錯誤
 解析:本題涉及匿名内部類、多态和覆寫三個知識點。 語句
Object o=new Object(){
            public boolean equals(Object obj){
                return true;
            }
        };
建立了一個匿名内部類,并将所建立的匿名對象賦給 Object (多态:子類對象賦給超類引用)。同時,該匿名内部類重寫了 Object 類的 equals 方法。
在執行語句
o.equals(“Fred”)
時,根據多态及覆寫原則,會調用匿名内部類重寫後的 equals 方法。
           
9. 在jdk 1.7中,以下說法正确的是(A)。
 A. Java中所有的非抽象方法都必須在類内定義
 B. Java中主方法可以不在類内定義,其他方法都必須定義在類内
 C. Java中主方法必須定義在類内,其他方法可以不必定義在類内
 D. Java中所有方法都不必在類内定義
 解析:ava是純粹的面向對象語言,所有的方法都必須存在于類中。類才有封裝,繼承,多态的特性。 在一些非純粹的面向對象語言中,如PHP,定義的方法是可以脫離類而單獨存在的
           
10. It is an important feature of the Java language that it always provides a default constructor to a class.(A)
 A. FALSE
 B. TRUE
 解析:題目:總是為一個類提供了一個預設的構造函數是Java語言的一個重要特性 。
事實上隻有在我們沒有顯示聲明任何構造方法時java才會為我們提供一個預設的無參構造函數。
           
11. Which statement is true for the class java.util.ArrayList?(A)
 A. The elements in the collection are ordered.
 B. The collection is guaranteed to be immutable.
 C. The elements in the collection are guaranteed to be unique.
 D. The elements in the collection are accessed using a unique key.
 E. The elements in the collections are guaranteed to be synchronized.
 解析:題目:下面那個選項有關java.util.ArrayList是正确的
A.The elements in the collection are ordered.
集合中的元素是排序的
B.The collection is guaranteed to be immutable.
集合不可改變
C.The elements in the collection are guaranteed to be unique.
集合中的元素必須唯一
D.The elements in the collection are accessed using a unique key.
集合中元素的鍵是唯一的
E.The elements in the collections are guaranteed to be synchronized.
集合中的元素是線程同步的
           
12. 下面有關webservice的描述,錯誤的是?(B)
 A. Webservice是跨平台,跨語言的遠端調用技術
 B. Webservice通信機制實質就是json資料交換
 C. Webservice采用了soap協定(簡單對象協定)進行通信
 D. WSDL是用于描述 Web Services 以及如何對它們進行通路
 解析:Webservice是跨平台,跨語言的遠端調用技術;
它的通信機制實質就是xml資料交換;
它采用了soap協定(簡單對象協定)進行通信
           
13. 以下代碼結果是什麼?(C)
public class foo {
public static void main(String sgf[]) {
StringBuffer a=new StringBuffer(“A”);
StringBuffer b=new StringBuffer(“B”);
operate(a,b);
System.out.println(a+”.”+b);
}
static void operate(StringBuffer x,StringBuffer y) {
x.append(y);
y=x;
}
}
 A. 代碼可以編譯運作,輸出“AB.AB”。
 B. 代碼可以編譯運作,輸出“A.A”。
 C. 代碼可以編譯運作,輸出“AB.B”。
 D. 代碼可以編譯運作,輸出“A.B”。
 解析:引用a指向對象A,引用b指向對象B,引用x指向對象A,引用y指向對象B
在operate方法中,引用x指向的對象A被連接配接了B,對象A也就被改變為AB
然後又把引用y指向了x所指向的對象位址,也就是此時引用a,x,y指向同一個對象AB
而引用b沒有發生任何變化,依舊指向對象B
           
14. 下列關于JavaBean的說法正确的是:(A)
A. Java檔案與Bean所定義的類名可以不同,但一定要注意區分字母的大小寫
 B. 在JSP檔案中引用Bean,其實就是用語句
 C. 被引用的Bean檔案的檔案名字尾為.java
 D. Bean檔案放在任何目錄下都可以被引用
 解析:(1)懂得将 Bean 放在哪個目錄下:在 Resin 中 JavaBean 放在 doc\web-inf\classes 目錄  中。 
(2)懂得如何使用 JBuilder 定義一個 Bean;其中的文法規範不一定要記住,但要了解 
其中的結構。 
(3)Java 檔案和 Bean所定義的類名一定要相同,并且是大小寫敏感。
(4)Bean中要聲明公共方法,與 Bean的名字相同。 
(5)懂得如何在JSP 檔案中引用JavaBean,其實就是<jsp:useBean>的語句。 
(6)一定要緊記Java 是區分大小寫的。
           
15. 下面有關SPRING的事務傳播特性,說法錯誤的是?(B)
 A. PROPAGATION_SUPPORTS:支援目前事務,如果目前沒有事務,就以非事務方式執行
 B. PROPAGATION_REQUIRED:支援目前事務,如果目前沒有事務,就抛出異常
 C. PROPAGATION_REQUIRES_NEW:建立事務,如果目前存在事務,把目前事務挂起
 D. PROPAGATION_NESTED:支援目前事務,新增Savepoint點,與目前事務同步送出或復原
 解析:PROPAGATION_REQUIRED--支援目前事務,如果目前沒有事務,就建立一個事務。這是最常見的選擇。 
PROPAGATION_SUPPORTS--支援目前事務,如果目前沒有事務,就以非事務方式執行。 
PROPAGATION_MANDATORY--支援目前事務,如果目前沒有事務,就抛出異常。 
PROPAGATION_REQUIRES_NEW--建立事務,如果目前存在事務,把目前事務挂起。 
PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果目前存在事務,就把目前事務挂起。 
PROPAGATION_NEVER--以非事務方式執行,如果目前存在事務,則抛出異常。
           
16. 下面程式的輸出結果是什麼。
public class A2{ 
public static void main(String[] args){
    int[] a={2,4,6,8,3,6,9,12};
    doSomething(a,0,a.length-1);
    for(int i=0;i<=a.length-1;i++)
    System.out.print(a[i]+" ");
} 
private static void doSomething(int[] a,int start,int end){
    if(start<end){
        int p=core(a,start,end);
        doSomething(a,start,p-1);
        doSomething(a,p+1,end);
    }
}
private static int core(int[] a,int start,int end)
{
    int x=a[end];
    int i=start;
    for(int j=start;j<=end-1;j++){
        if(a[j]>=x){
            swap(a,i,j);
            i++;//交換了幾次 
        }
    }//把最大的放到最後
    swap(a,i,end);//把最大的放到i的位置 
    return i;
} 
  
private static void swap(int[] a,int i,int j) 
{
    int tmp=a[i];
    a[i]=a[j];
    a[j]=tmp;
}
} 
 A. 找到最大值
 B. 找到最小值
 C. 從大到小的排序
 D. 從小到大的排序
 解析:根據交換的次數,決定存儲的位置,交換0次,存在第一位,代表最大,交換1次,存在第二位,代表次大,以此類推.....結果可以拿一個有序的遞增序列進行驗證。
           
17. 以下哪一個不是指派符号?(C)
 A. +=
 B. <<=
 C. <<<=
 D. >>>=
 解析:混合指派運算符的使用
<<表示左移位
>>表示帶符号右移位
>>>表示無符号右移
但是沒有<<<運算符
           
18. 運作代碼,輸出的結果是(A)
public class P {
public static int abc = 123;
static{
System.out.println("P is init");
}
}
public class S extends P {
static{
System.out.println("S is init");
}
}
public class Test {
public static void main(String[] args) {
System.out.println(S.abc);
}
}
 A. P is init<br />123
 B. S is init<br />P is init<br />123
 C. P is init<br />S is init<br />123
 D. S is init<br />123
 解析:屬于被動引用不會出發子類初始化 
 1.子類引用父類的靜态字段,隻會觸發子類的加載、父類的初始化,不會導緻子類初始化 
 2.通過數組定義來引用類,不會觸發此類的初始化 
 3.常量在編譯階段會進行常量優化,将常量存入調用類的常量池中, 本質上并沒有直接引用到定義常量的類,是以不會觸發定義常量的類的初始化
           
19. 給定includel.isp檔案代碼片段,如下:(B)
  <% pageContext.setAttribute(“User”,”HAHA”);%>
______ // 此處填寫代碼
  給定include2.jsp檔案代碼片段如下:
  <%=pageContext.getAttribute(“User”)%>
  要求運作include1.jsp時,浏覽器上輸出:HAHA
 A. <jsp:include page=”include2.jsp” flash=”true”>
 B. <%@include file=”include2.jsp”%>
 C. <jsp:forward page=”include2.jsp”>
 D. <% response.sendRedirect(“include2.jsp”); %>
 解析:B選項是靜态包含,相當于不include2.jsp頁面内容拷貝到此處,是以可以輸出User屬性值
D選項是轉發重定向,轉發的時候pageContent内的屬性值不能被傳遞,是以得不到User屬性值
           
20. 對于JVM記憶體配置參數:
-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
,其最小記憶體值和Survivor區總大小分别是(D)
 A. 5120m,1024m
 B. 5120m,2048m
 C. 10240m,1024m
 D. 10240m,2048m
 解析:-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn:年輕代大小
-XXSurvivorRatio:年輕代中Eden區與Survivor區的大小比值
年輕代5120m, Eden:Survivor=3,Survivor區大小=1024m(Survivor區有兩個,即将年輕代分為5份,每個Survivor區占一份),總大小為2048m。
-Xms初始堆大小即最小記憶體值為10240m
           
21. 以下哪些語言是面向對象的(BC)
 A. C
 B. C++
 C. JAVA
 D. 彙編
 解析:c是面向過程,c++面向對象,JAVA面向對象,彙編是面向機器
           
22. 面向對象程式設計方法的優點包含:(ABC)
 A. 可重用性
 B. 可擴充性
 C. 易于管理和維護
 D. 簡單易懂
 解析:面向對象的三大特性 A.多态 B.繼承 C.封裝
           
23. 程式中常采用變量表示資料,變量具有名、位址、值、作用域、生存期等屬性。關于變量的叙述,(ACD)是正确的。
 A. 根據作用域規則,在函數中定義的變量隻能在函數中引用
 B. 在函數中定義的變量,其生存期為整個程式執行期間
 C. 在函數中定義的變量不能與其所在函數的形參同名
 D. 在函數中定義的變量,其存儲單元在記憶體的棧區
 解析:A.函數中定義的變量是局部變量,作用域為目前函數或循環等
B.局部變量在函數内部或循環内部,随函數的退出或循環退出就不存在了
           
24. 在java中,下列辨別符不合法的有(ACD)
 A. new
 B. $Usdollars
 C. 1234
 D. car.taxi
 解析:ava辨別符由數字,字母和下劃線(_),美元符号($)組成。在Java中是區分大小寫的,而且還要求首位不能是數字。最重要的是,Java關鍵字不能當作Java辨別符。
           
25. 以下哪些方法可以取到http請求中的cookie值(BD)?
 A. request.getAttribute
 B. request.getHeader
 C. request.getParameter
 D. request.getCookies
 解析:1)Cookie[] getCookies()
傳回一個數組,包含用戶端發送該請求的所有的 Cookie 對象。
2)Object getAttribute(String name)
以對象形式傳回已命名屬性的值,如果沒有給定名稱的屬性存在,則傳回 null。
3)String getHeader(String name)
以字元串形式傳回指定的請求頭的值。Cookie也是頭的一種;
4)String getParameter(String name)
以字元串形式傳回請求參數的值,或者如果參數不存在則傳回 null。
           
26. 以下哪幾種方式可用來實作線程間通知和喚醒:(AC)
 A. Object.wait/notify/notifyAll
 B. ReentrantLock.wait/notify/notifyAll
 C. Condition.await/signal/signalAll
 D. Thread.wait/notify/notifyAll
 解析:wait()、notify()和notifyAll()是 Object類 中的方法 ;
Condition是在java 1.5中才出現的,它用來替代傳統的Object的wait()、notify()實作線程間的協作,相比使用Object的wait()、 notify(),使用Condition1的await()、signal()這種方式實作線程間協作更加安全和高效。
           
27. 判斷一塊記憶體空間是否符合垃圾收集器收集的标準有哪些?(ABD)
 A. 給對象賦予了空值null,以下再沒有調用過
 B. 對象重新配置設定了記憶體空間
 C. 給對象賦予了空值null
 D. 給對象賦予了新值
 解析:在java語言中,判斷一塊記憶體空間是否符合垃圾收集器收集标準的标準隻有兩個:
1.給對象指派為null,以下沒有調用過。
2.給對象賦了新的值,重新配置設定了記憶體空間。
           
28. 以下程式執行後,錯誤的結果是(ABC)
public class Test {
    private String name = "abc";
    public static void main(String[] args) {
        Test test = new Test();
        Test testB = new Test();
        String result = test.equals(testB) + ",";
        result += test.name.equals(testB.name) + ",";
        result += test.name == testB.name;
        System.out.println(result);
    }
}
 A. true,true,true
 B. true,false,false
 C. false,true,false
 D. false,true,true
 解析:關于name比較,String與String相比較==相等,比較的是在常量池裡的值,傳回true。如果new了一個String,比較就會變成堆裡對象不相等,常量池值相等,傳回false。
           
29. 有關hashMap跟hashTable的差別,說法正确的是?(ABCD)
 A. HashMap和Hashtable都實作了Map接口
 B. HashMap是非synchronized,而Hashtable是synchronized
 C. HashTable使用Enumeration,HashMap使用Iterator
 D. HashMap允許将 null 作為一個 entry 的 key 或者 value,而 Hashtable 不允許。
           
30. Java類Demo中存在方法func0、func1、func2、func3和func4,請問該方法中,哪些是不合法的定義?(AD)
public class Demo{
  float func0()
  {
    byte i=1;
    return i;
  }
  float func1()
  {
    int i=1;
    return;
  }
  float func2()
  {
    short i=2;
    return i;
  }
  float func3()
  {
    long i=3;
    return i;
  }
  float func4()
  {
    double i=4;
    return i;
  }
}
 A. func1
 B. func2
 C. func3
 D. func4
 解析:A:return;   沒有傳回值,錯誤
B:short → float 無須強制轉換,正确
C:long → float  無須強制轉換,正确。、
D:double → float 沒有強制轉換,錯誤。