Java基礎筆試練習(十一)

Java基礎筆試練習(十一)

1.下面的方法,當輸入爲2的時候返回值是多少?

public static int getValue(int i) {
    int result = 0;
    switch (i) {
        case 1:
        result = result + i;
        case 2:
        result = result + i * 2;
        case 3:
        result = result + i * 3;
    }
   return result;
}

A.0
B.2
C.4
D.10java

答案:
Dgit

解析:
沒有break,發生case穿透現象,程序會繼續向下執行,直到遇到break或者結束switch語句的大括號爲止。github

2.Java是從()語言改進從新設計

A.Ada
B.C++
C.Pascal
D.BASIC面試

答案:
B算法

解析:
ava是類C語言,從C++改進而來 去掉了指針和多繼承,採用自動垃圾回收等編程

3.一個以". java"爲後綴的源文件,哪些說法是正確的?

A.只能包含一個類,類名必須與文件名相同
B.只能包含與文件名相同的類,以及其中的內部類
C.只能有一個與文件名相同的類,能夠包含其餘類
D.能夠包含任意類微信

答案:
C數據結構

解析:
C。一個與文件名相同的public的類敏感詞類可隨意多個。app

4.在JAVA中,下面關於String類和StringBuffer類的描述正確的是那一個?

A.StringBuffer類的對象調用toString()方法將返回String類型的結果
B.兩個類都有append()方法
C.能夠直接將字符串「test」賦值給聲明的String類和StringBuffer類的變量
D.兩個類的實例的值都可以被改變框架

答案:
A

解析:
A. StringBuffer類調用toString()方法後將轉換爲String類型 正確
B. String類型中沒有append()方法,要追加字符串」+「便可,也沒有必要 append
C. 能夠直接將字符串「test」複製給聲明的Stirng類的變量,而StringBuffer類的不行
D. String 實例 是不可變的
String 對象/實例 是不能夠被改變的。

當new一個String對象時,JVM會在內存中建立一個String對象,當另一個String對象值與它同樣時,會將該對象直接指向對應的地址。

5. 下列關於構造方法不正確的是:( )

A.類的構造方法和類同名
B.一個類能夠有多個構造方法
C.在實例化對象時必須調用類的構造方法
D.構造方法能夠和該類其餘方法同樣被該類對象調用

答案:
D

解析:
1.構造方法也是類的方法,能夠在建立對象時爲成員變量賦值
2.構造方法能夠進行重載,可是參數列表必須不相同,不以返回值和訪問級別進行區分
3.構造方法沒有返回值
4.構造方法必定要與定義爲public的類同名
5.構造方法不能被對象調用,只會建立對象,使用new關鍵字

6.根據下面的程序代碼,哪些選項的值返回true?

public class Square {  
    long width;  
    public Square(long l) {   
        width = l;  
    }  
    public static void main(String arg[]) {   
        Square a, b, c;  
        a = new Square(42L);   
        b = new Square(42L);   
        c = b;   
        long s = 42L;  
    } 
}

A.a == b
B.s == a
C.b == c
D.a.equals(s)

答案:
C

解析:

a = new Square(42L);   
b = new Square(42L);

這裏new了兩個對象,因此a,b不是同一個引用a!=b ,s的類型跟a,b不一樣類型,因此s!=a,s!=b
c = b; 這裏b,c是同一個對象的引用,因此b==c是true

7.根據如下代碼段,執行new Child("John", 10); 要使數據域data獲得10,則子類空白處應該填寫( )。

class Parent {
    private int data;
    public Parent(int d){ data = d; }
}

class Child extends Parent{
    String name;
    public Child(String s, int d){
        ___________________
        name = s;
    }
}

A.data = d;
B.super.data = d;
C.Parent(d);
D.super(d);

答案:
D

解析:
1.子父類存在同名成員時,子類中默認訪問子類的成員,可經過super指定訪問父類的成員,格式:super.xx (注:xx是成員名);
2.建立子類對象時,默認會調用父類的無參構造方法,可經過super指定調用父類其餘構造方法,格式:s uper(yy) (注:yy是父類構造方法須要傳遞的參數)

8.Given the following code:() What is the result?

public class Test {
    private static int j = 0;
    private static Boolean methodB(int k) {
        j += k;
        return true;
    }
    public static void methodA(int i) {
        boolean b;
        b = i < 10 | methodB(4);
        b = i < 10 || methodB(8);
    }
    public static void main(String args[]) {
        methodA(0);
        System.out.println(j);
    }
}

A.The program prints」0」
B.The program prints」4」
C.The program prints」8」
D.The program prints」12」
E.The code does not complete.

答案:
B

解析:
選 B
在main函數中先調用methodA(0)
在methodA中,第二行
b = i < 10 | methodB(4); //中間爲與計算符,執行完methodB(4)後,j = 4
methodA中,第三行
b = i < 10 || methodB(8);//中間爲或計算符,由於i < 10 已成立,不須要後續計算
因此最後結果輸出爲4

9.一個文件中的字符要寫到另外一個文件中,首先須要( )?

A.System.out.print (buffer[i]);
B.FileOutputStream fout = new FileOutputStream(this.filename);
C.FileInputStream fin = new FileInputStream(this.filename);
D.System.in.read(buffer)

答案:
C

解析:
程序的邏輯很簡單。程序必須打開兩個文件,以可讀的方式打開一個已有文件和以可寫的方式打開一個新文件,後將已有文件中的內容,暫時存放在內存中,再寫入新的文件,後關閉全部文件,程序結束。
根據題意,首先須要讀入一個文件中的字符,須要FileInputStream fin = new FileInputStream(this.filename);

10. 閱讀如下 foo 函數,請問它的時間複雜度是:

int foo(intarray[], int n, int key){
    int n1=0,n2=n-1,m;
    while(n1<=n2){
        m=(n1+n2)/2;
        if(array[m]==key)
            return m;
        if(array[m]>key)
            n2=m-1;
        else
            n1=m+1;
    }
    return -1;
}

A.O(n2)
B.O(n3)
C.O(log(n))
D.O(n)

答案:
C

解析:
二分查找時間複雜度爲O(logn) ,關注個人微信公衆號,裏面有關於時間複雜度和空間複雜度介紹的文章。

11.下列關於管道(Pipe)通訊的敘述中,正確的是()?

A.進程對管道進行讀操做和寫操做均可能被阻塞
B.一個管道只能有一個進程或一個寫進程對其操做
C.一個管道可實現雙向數據傳輸
D.管道的容量僅受磁盤容量大小限制

答案:
A

解析:
A.正確,由於管道爲空,讀操做會被阻塞;管道滿了,寫操做會被阻塞
B.能夠有多個進程對其讀;也能夠有多個進程寫,只不過不能同時寫。而且題目沒有說「同時」,B不對
C.匿名管道只能單向;命名管道能夠雙向;因此C過於絕對
D.管道是內存中的,因此D不對

12.要導入java/awt/event下面的全部類,敘述正確的是?()

A.import java.awt.和import java.awt.event.均可以
B.只能是import java.awt.
C.只能是import java.awt.event.

D.import java.awt.和import java.awt.event.都不能夠

答案:
C

解析:
導包只能夠導到當前層,不能夠再導入包裏面的包中的類

13.對於JVM內存配置參數:

-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
,其最小內存值和Survivor區總大小分別是()

A.5120m,1024m
B.5120m,2048m
C.10240m,1024m
D.10240m,2048m

答案:
D

解析:
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn: 年輕代大小
-XXSurvivorRatio:年輕代中Eden區與Survivor區的大小比值
年輕代5120m, Eden:Survivor=3,Survivor區大小=1024m(Survivor區有兩個,即將年輕代分爲5份,每一個Survivor區佔一份),總大小爲2048m。
-Xms初始堆大小即最小內存值爲10240m

14.URL u =new URL("http://www.123.com");。若是www.123.com不存在,則返回______。

A.http://www.123.com
B.」」
C.null
D.拋出異常

答案:
A

解析:
new URL()時必須捕獲檢查異常,但這個異常是因爲字符串格式和URL不符致使的,與網址是否存在無關。URL的toString方法返回字符串,不管網址是否存在

15.存根(Stub)與如下哪一種技術有關

A.交換
B.動態連接
C.動態加載
D.磁盤調度

答案:
B

解析:
理解爲適配器模式,繼承該類則不須要實現一個接口所有方法。

16.Java中的集合類包括ArrayList、LinkedList、HashMap等類,下列關於集合類描述正確的是()

A.ArrayList和LinkedList均實現了List接口
B.ArrayList的訪問速度比LinkedList快
C.添加和刪除元素時,ArrayList的表現更佳
D.HashMap實現Map接口,它容許任何類型的鍵和值對象,並容許將null用做鍵或值

答案:
A B D

解析:
關於D,值對象能夠容許null

17.下列說法正確的是()?

A.咱們直接調用Thread對象的run方法會報異常,因此咱們應該使用start方法來開啓一個線程
B.一個進程是一個獨立的運行環境,能夠被看作一個程序或者一個應用。而線程是在進程中執行的一個任務。Java運行環境是一個包含了不一樣的類和程序的單一進程。線程能夠被稱爲輕量級進程。線程須要較少的資源來建立和駐留在進程中,而且能夠共享進程中的資源
C.synchronized能夠解決可見性問題,volatile能夠解決原子性問題
D.ThreadLocal用於建立線程的本地變量,該變量是線程之間不共享的

答案:
B D

解析:
volatile與synchronized的區別:
volatile本質是在告訴jvm當前變量在寄存器中的值是不肯定的,須要從主存中讀取,synchronized則是鎖定當前變量,只有當前線程能夠訪問該變量,其餘線程被阻塞住.
volatile僅能使用在變量級別,synchronized則可使用在變量,方法.
volatile僅能實現變量的修改可見性,但不具有原子特性,而synchronized則能夠保證變量的修改可見性和原子性.
volatile不會形成線程的阻塞,而synchronized可能會形成線程的阻塞.
volatile標記的變量不會被編譯器優化,而synchronized標記的變量能夠被編譯器優化.

18.對於構造方法,下列敘述正確的是( )。

A.構造方法的優先級通常比代碼塊低。
B.構造方法的返回類型只能是void型。
C.構造方法的主要做用是完成對類的對象的初始化工做。
D.通常在建立新對象時,系統會自動調用構造方法。

答案:
A C D

解析:
A:靜態成員變量或靜態代碼塊>main方法>非靜態成員變量或非靜態代碼塊>構造方法
B:think in java中提到構造器自己並無任何返回值。
C: 構造方法的主要做用是完成對類的對象的初始化工做。
D: 通常在建立(new)新對象時,系統會自動調用構造方法。

19.下列有關JAVA異常處理的敘述中正確的是()

A.finally是爲確保一段代碼不論是否捕獲異常都會被執行的一段代碼
B.throws是用來聲明一個成員方法可能拋出的各類非運行異常狀況
C.final用於能夠聲明屬性和方法,分別表示屬性的不可變及方法的不可繼承
D.throw是用來明確地拋出一個異常狀況

答案:
A B D

解析:
C根本就跟異常處理沒有關係,因此不選。

20.character流和byte流的區別不包括()

A.每次讀入的字節數不一樣
B.前者帶有緩衝,後者沒有。
C.前者是字符讀入,後者是字節讀入。
D.兩者沒有區別,能夠互換。

答案:
A B D

解析:
字符流和字節流每次讀入的字節數是不肯定的,可能相同也可能不相同
例FileInputStream 的read() 方法每次讀入一個字節,read(byte b[]) 每次讀入b.length個字節
FileReader 的read()方法每次讀入一個字符,read(char cbuf[], int offset, int length)每次讀入length個字符
另外,字符流和字節流讀入一個ASCII字符,字節數是相同的
例UTF-8字符編碼中一個漢字佔三個字節,數字1佔一個字節,用字符流讀入的數字1長度爲一個字節,用字節流讀入的數字1長度也爲一個字節

推薦

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

ProcessOn是一個在線做圖工具的聚合平臺~

文末

歡迎關注我的微信公衆號:Coder編程
歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~
新建了一個qq羣:315211365,歡迎你們進羣交流一塊兒學習。謝謝了!也能夠介紹給身邊有須要的朋友。

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

相關文章
相關標籤/搜索