Java基礎筆試練習(十二)

Java基礎筆試練習(十二)

1.(C#、JAVA)擴展方法能訪問被擴展對象的public成員

A.能
B.不能java

答案:
Agit

解析:
翻譯一下,子類方法是否可以訪問父類中的public成員。github

2.若是子類要調用父類的構造函數,則經過super()調用來實現。

A.正確
B.錯誤web

答案:
A面試

解析:
super關鍵字在子類內部使用,表明父類對象。 訪問父類的屬性 super.屬性名 訪問父類的方法 super.方法名() 子類構造方法須要調用父類的構造方法時,在子類的構造方法體裏最前面的位置:super()編程

3.下列關於Java語言中String和char的說法,正確的是()

A.String是Java定義的一種基本數據類型。
B.String是以「\0」結尾的char類型的數組char[]。
C.使用equals()方法比較兩個String是否內容同樣(即字符串中的各個字符都同樣)。
D.Char類型在Java語言裏面存儲的是ASCII碼。json

答案:
Cbootstrap

解析:
A 基本數據類型包括byte,short,int,long,float,double,char,boolean,因此A錯。
B,C語言當中是這樣,java不是, String內部是用char[]數組實現的,不過結尾不用\0。
C 對,字符串內容比較用equals方法。
D char存儲的unicode碼,不進能夠存儲ascII碼,漢字也能夠。api

4.關於JAVA堆,下面說法錯誤的是()?

A.全部類的實例和數組都是在堆上分配內存的
B.堆內存由存活和死亡的對象,空閒碎片區組成
C.數組是分配在棧中的
D.對象所佔的堆內存是由自動內存管理系統回收數組

答案:
C

解析:
C應該改成,數組的引用存在棧內存中,而數組對象保存在堆裏面。

5. java 接口的修飾符能夠爲()

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

答案:
D

解析:
接口是通用的,用來描述方法是幹什麼用的,方法的默認修飾符爲public abstract.不能夠爲final 是由於方法要被重寫, 描述符若是爲private或者protected,那麼子類重寫的方法的描述符也能夠爲private或者protected,這樣就是有了訪問顯示,不符合接口所要達到的的任何人均可以使用了

6.指出下來程序運行的結果是

代碼

A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc

答案:
B

解析:
實參和形參的問題。"ex.change(ex.str, ex.ch)"語句調用"change"方法時,將ex.str變量(實參)的值賦給了"change"方法中的str變量(形參),而將ex.ch(實參)的地址賦給了"change"方法中的ch(形參)。"change"方法運行時,第一條語句改變的是方法中形參的值,對實參沒影響,第二條語句因爲是直接改變的ch所指地址的值,因此把實參也進行了改變。

7. A 是抽象父類或接口, B , C 派生自 A ,或實現 A ,如今 Java 源代碼中有以下聲明: 問如下哪一個說法是正確的?( )

1. A  a0=new  A();
2. A  a1 =new  B();
3. A  a2=new  C();

A.第1行不能經過編譯
B.第一、2行能經過編譯,但第3行編譯出錯
C.第一、二、3行能經過編譯,但第二、3行運行時出錯
D.第1行、第2行和第3行的聲明都是正確的

答案:
A

解析:
抽象類和接口不能實例化

8.try塊後必須有catch塊。()

A.正確
B.錯誤

答案:
B

解析:
catch能夠省略,try的形式有三種:
try-catch
try-finally
try-catch-finally
但catch和finally語句不能同時省略!

9. 如下 _____ 不是 Object 類的方法

A.clone()
B.finalize()
C.toString()
D.hasNext()

答案:
D

解析:

10.指出下列程序運行的結果:

public class Example{
    String str=new String("tarena");
    char[]ch={'a','b','c'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
   //引用類型變量,傳遞的是地址,屬於引用傳遞。
        str="test ok";
        ch[0]='g';
    }
}

A.tarena and abc
B.tarena and gbc
C.test ok and abc
D.test ok and gbc

答案:
B

解析:
與第六題相似。

11.如下代碼段執行後的輸出結果爲

public class Test {
    public static void main(String args[]) {
        int x = -5;
        int y = -12;
        System.out.println(y % x);
    }
}

A.-1
B.2
C.1
D.-2

答案:
D

解析:
取模運算,餘數的符號跟被除數符號相同

12.下面有關webservice的描述,錯誤的是?

A.Webservice是跨平臺,跨語言的遠程調用技術
B.Webservice通訊機制實質就是json數據交換
C.Webservice採用了soap協議(簡單對象協議)進行通訊
D.WSDL是用於描述 Web Services 以及如何對它們進行訪問

答案:
B

解析:
Webservice是跨平臺,跨語言的遠程調用技術;它的通訊機制實質就是xml數據交換;它採用了soap協議(簡單對象協議)進行通訊

13.關於ASCII碼和ANSI碼,如下說法不正確的是()?

A.標準ASCII只使用7個bit
B.在簡體中文的Windows系統中,ANSI就是GB2312
C.ASCII碼是ANSI碼的子集
D.ASCII碼都是可打印字符

答案:
D

解析:
A、標準ASCII只使用7個bit,擴展的ASCII使用8個bit。
B、ANSI一般使用 0x00~0x7f 範圍的1 個字節來表示 1 個英文字符。超出此範圍的使用0x80~0xFFFF來編碼,即擴展的ASCII編碼。不一樣 ANSI 編碼之間互不兼容。在簡體中文Windows操做系統中,ANSI 編碼表明 GBK 編碼;在繁體中文Windows操做系統中,ANSI編碼表明Big5;在日文Windows操做系統中,ANSI 編碼表明 Shift_JIS 編碼。
C、ANSI一般使用 0x00~0x7f 範圍的1 個字節來表示 1 個英文字符,即ASCII碼
D、ASCII碼包含一些特殊空字符

14. Test.main() 函數執行後的輸出是()

public class Test {  
        public static void main(String [] args){  
            System.out.println(new B().getValue());  
        }  
        static class A{  
            protected int value;  
            public A(int v) {  
                setValue(v);  
            }  
            public void setValue(int value){  
                this.value = value;  
            }  
            public int getValue(){  
                try{  
                    value++;  
                    return value;  
                } catch(Exception e){  
                    System.out.println(e.toString());  
                } finally {  
                    this.setValue(value);  
                    System.out.println(value);  
                }  
                return value;  
            }  
        }  
        static class B extends A{  
            public B() {  
                super(5);  
                setValue(getValue() - 3);  
            }  
            public void setValue(int value){  
                super.setValue(2 * value);  
            }  
        }  
    }

A.11 17 34
B.22 74 74
C.6 7 7
D.22 34 17

答案:
D

解析:

15.final、finally和finalize的區別中,下述說法正確的有?

A.final用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
B.finally是異常處理語句結構的一部分,表示老是執行。
C.finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,能夠覆蓋此方法提供垃圾收集時的其餘資源的回收,例如關閉文件等。
D.引用變量被final修飾以後,不能再指向其餘對象,它指向的對象的內容也是不可變的。

答案:
A B

解析:
A,D考的一個知識點,final修飾變量,變量的引用(也就是指向的地址)不可變,可是引用的內容能夠變(地址中的內容可變)。
B,finally表示老是執行。可是其實finally也有不執行的時候,可是這個題不要扣字眼。

  1. 在try中調用System.exit(0),強制退出了程序,finally塊不執行。
  2. 在進入try塊前,出現了異常,finally塊不執行。
    C,finalize方法,這個選項錯就錯在,這個方法一個對象只能執行一次,只能在第一次進入被回收的隊列,並且對象所屬於的類重寫了finalize方法纔會被執行。第二次進入回收隊列的時候,不會再執行其finalize方法,而是直接被二次標記,在下一次GC的時候被GC。
    放一張圖吧
    15

16.關於equals和hashCode描述正確的是()

A.兩個obj,若是equals()相等,hashCode()必定相等(符合代碼規範的狀況下)
B.兩個obj,若是hashCode()相等,equals()不必定相等
C.兩個不一樣的obj, hashCode()可能相等
D.其餘都不對

答案:
A B C

解析:
地址比較是經過計算對象的哈希值來比較的,hashcode屬於Object的本地方法,對象相等(地址相等),hashcode相等,對象不相等,hashcode()可能相等,哈希衝突

17.下面有關java類加載器,說法正確的是?

A.引導類加載器(bootstrap class loader):它用來加載 Java 的核心庫,是用原生代碼來實現的
B.擴展類加載器(extensions class loader):它用來加載 Java 的擴展庫。
C.系統類加載器(system class loader):它根據 Java 應用的類路徑(CLASSPATH)來加載 Java 類
D.tomcat爲每一個App建立一個Loader,裏面保存着此WebApp的ClassLoader。須要加載WebApp下的類時,就取出ClassLoader來使用

答案:
ABCD

解析:
jvm classLoader architecture :

a、Bootstrap ClassLoader/啓動類加載器
主要負責jdk_home/lib目錄下的核心 api 或 -Xbootclasspath 選項指定的jar包裝入工做.

B、Extension ClassLoader/擴展類加載器
主要負責jdk_home/lib/ext目錄下的jar包或 -Djava.ext.dirs 指定目錄下的jar包裝入工做

C、System ClassLoader/系統類加載器
主要負責java -classpath/-Djava.class.path所指的目錄下的類與jar包裝入工做.

B、 User Custom ClassLoader/用戶自定義類加載器(java.lang.ClassLoader的子類)
在程序運行期間, 經過java.lang.ClassLoader的子類動態加載class文件, 體現java動態實時類裝入特性.

18.下面哪項技術能夠用在WEB開發中實現會話跟蹤實現?

A.session
B.Cookie
C.地址重寫
D.隱藏域

答案:
ABCD

解析:
會話跟蹤是一種靈活、輕便的機制,它使Web上的狀態編程變爲可能。
HTTP是一種無狀態協議,每當用戶發出請求時,服務器就會作出響應,客戶端與服務器之間的聯繫是離散的、非連續的。當用戶在同一網站的多個頁面之間轉換時,根本沒法肯定是不是同一個客戶,會話跟蹤技術就能夠解決這個問題。當一個客戶在多個頁面間切換時,服務器會保存該用戶的信息。
有四種方法能夠實現會話跟蹤技術:URL重寫、隱藏表單域、Cookie、Session。
1).隱藏表單域:,很是適合步須要大量數據存儲的會話應用。
2).URL 重寫:URL 能夠在後面附加參數,和服務器的請求一塊兒發送,這些參數爲名字/值對。
3).Cookie:一個 Cookie 是一個小的,已命名數據元素。服務器使用 SET-Cookie 頭標將它做爲 HTTP
響應的一部分傳送到客戶端,客戶端被請求保存 Cookie 值,在對同一服務器的後續請求使用一個
Cookie 頭標將之返回到服務器。與其它技術比較,Cookie 的一個優勢是在瀏覽器會話結束後,甚至
在客戶端計算機重啓後它仍能夠保留其值
4).Session:使用 setAttribute(String str,Object obj)方法將對象捆綁到一個會話

19.下面有關forward和redirect的描述,正確的是() ?

A.forward是服務器將控制權轉交給另一個內部服務器對象,由新的對象來全權負責響應用戶的請求
B.執行forward時,瀏覽器不知道服務器發送的內容是從何處來,瀏覽器地址欄中仍是原來的地址
C.執行redirect時,服務器端告訴瀏覽器從新去請求地址
D.forward是內部重定向,redirect是外部重定向
E.redirect默認將產生301 Permanently moved的HTTP響應

答案:
B C D

解析:

1.從地址欄顯示來講
forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容再發給瀏覽器.瀏覽器根本不知道服務器發送的內容從哪裏來的,因此它的地址欄仍是原來的地址.
redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址.因此地址欄顯示的是新的URL.

2.從數據共享來講
forward:轉發頁面和轉發到的頁面能夠共享request裏面的數據.
redirect:不能共享數據.

3.從運用地方來講
forward:通常用於用戶登錄的時候,根據角色轉發到相應的模塊.
redirect:通常用於用戶註銷登錄時返回主頁面和跳轉到其它的網站等.

4.從效率來講
forward:高.
redirect:低.

20.下面關於volatile的功能說法正確的是哪一個

A.原子性
B.有序性
C.可見性
D.持久性

答案:
B C

解析:
synchronized保證三大性,原子性,有序性,可見性,volatile保證有序性,可見性,不能保證原子性

推薦

筆試內容集合 持續更新中....

文末

歡迎關注我的微信公衆號:Coder編程
獲取最新原創技術文章和免費學習資料,更有大量精品思惟導圖、面試資料、PMP備考資料等你來領,方便你隨時隨地學習技術知識!

文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~
微信公衆號

相關文章
相關標籤/搜索