Java基礎筆試練習(五)

Java基礎筆試練習(五)

1.如下關於Integer與int的區別錯誤的是?

A.int是java提供的8種原始數據類型之一
B.Integer是java爲int提供的封裝類
C.int的默認值爲0
D.Integer的默認值爲1java

答案:
Dgit

解析:
github

2.給定如下方法聲明,調用執行mystery(1234)的輸出結果?

//precondition:  x >=0
public void mystery (int x)
{
System.out.print(x % 10);
 
if ((x / 10) != 0)
{
mystery(x / 10);
}
System.out.print(x % 10);
}

A.1441
B.43211234
C.3443
D.12344321web

答案:
B面試

解析:
遞歸調用算法

3.下面不是類及類成員的訪問控制符的是( )。(不考慮內部類的狀況)

A.public
B.private
C.static
D.protected編程

答案:
C安全

解析:
類訪問控制符只有三種:public ,private, protected static和訪問控制無關微信

4.下列修飾符中與訪問控制權限無關的是?( )

A.private
B.public
C.protected
D.final網絡

答案:
D

解析:
private : 修飾私有變量
public : 修飾公有變量
protected: 修飾受保護變量
沒有final, final用於保護變量不受改變

5.局部變量可否和成員變量重名?

A.能夠,局部變量能夠與成員變量重名,這時可用「this」來指向成員變量
B.能夠,這時可用「local」關鍵字來指向局部變量
C.不能,局部變量不能與成員變量重名
D.不能,在一個類中不能有重名變量,不論是成員變量仍是函數中的局部變量

答案:
A

解析:
JAVA訪問變量採用就近原則,局部變量與成員變量重名時,局部變量比較近,使用局部變量

6.下列說法正確的是()

A.在類方法中可用this來調用本類的類方法
B.在類方法中調用本類的類方法可直接調用
C.在類方法中只能調用本類的類方法
D.在類方法中絕對不能調用實例方法

答案:
B

解析:
在類方法中調用本類的類方法可直接調用。 實例方法也叫作對象方法。
類方法是屬於整個類的,而實例方法是屬於類的某個對象的。
因爲類方法是屬於整個類的,並不屬於類的哪一個對象,因此類方法的方法體中不能有與類的對象有關的內容。即類方法體有以下限制:

(1) 類方法中不能引用對象變量;

(2) 類方法中不能調用類的對象方法;

(3) 在類方法中不能使用super、this關鍵字。
(4)類方法不能被覆蓋。
若是違反這些限制,就會致使程序編譯錯誤。
與類方法相比,對象方法幾乎沒有什麼限制:

(1) 對象方法中能夠引用對象變量,也能夠引用類變量;

(2) 對象方法中能夠調用類方法;

(3) 對象方法中可使用super、this關鍵字。

7.關於依賴注入,下列選項中說法錯誤的是()?

A.依賴注入可以獨立開發各組件,而後根據組件間關係進行組裝
B.依賴注入提供使用接口編程
C.依賴注入使組件之間相互依賴,相互制約
D.依賴注入指對象在使用時動態注入

答案:
C

解析:
依賴注入目的是減小組件之間的耦合度,使開發變得簡單。

8.運行下面代碼,輸出的結果是()

class A {
    public A() {
        System.out.println("class A");
    }
    { System.out.println("I'm A class"); }
    static { System.out.println("class A static"); }
}
public class B extends A {
    public B() {
        System.out.println("class B");
    }
    { System.out.println("I'm B class"); }
    static { System.out.println("class B static"); }
     
    public static void main(String[] args) {
 new B();
 }
}

A.

class A static 
class B static 
I'm A class 
class A
I'm B class 
class B

B.

class A static
I'm A class
class A
class B static
I'm B class
class B

C.

class A static
class B static
class A
I'm A class 
class B
I'm B class

D.

class A static
class A
I'm A class
class B static
class B
I'm B class

答案:
A

解析:
此題考慮 Java 中構造器、初始化塊、靜態初始化塊的執行順序。

靜態初始化塊 > 初始化塊 > 構造器
父類 > 子類
綜合下來順序就是:

父類靜態初始化塊
子類靜態初始化塊
父類初始化塊
父類構造器
子類初始化塊
子類構造器
須要注意靜態初始化塊是在類第一次加載的時候就會進行初始化。

9.下面哪一個標識符是合法的?

A."9HelloWorld"
B."_Hello World"
C."Hello*World"
D."Hello$World"

答案:
D

解析:
標識符是以字母開頭的字母數字序列:
數字是指0~9,字母指大小寫英文字母、下劃線(_)和美圓符號($),也能夠是Unicode字符集中的字符,如漢字;
字母、數字等字符的任意組合,不能包含+、- 等字符;
不能使用關鍵字;
大小寫敏感
由此能夠看出:
A:不能夠數字開頭
B:用下劃線開頭符合,可是中間有空格
C:不能包含「

排除ABC,答案便是D

10.如下程序執行的結果是:

class X{
    Y y=new Y();
    public X(){
        System.out.print("X");
    }
}
class Y{
    public Y(){
        System.out.print("Y");
    }
}
public class Z extends X{
    Y y=new Y();
    public Z(){
        System.out.print("Z");
    }
    public static void main(String[] args) {
        new Z();
    }
}

A.ZYXX
B.ZYXY
C.YXYZ
D.XYZX

答案:
C

解析:
1.父類靜態代碼塊 (java虛擬機加載類時,就會執行該塊代碼,故只執行一次)
2 .子類靜態代碼塊 (java虛擬機加載類時,就會執行該塊代碼,故只執行一次)

  1. 父類屬性對象初始化
    4.父類普通代碼塊(每次new,每次執行 )
  2. 父類構造函數(每次new,每次執行)
    6.子 類 屬性對象初始化
    7.子類普通代碼塊(每次new,每次執行 )
    8.子 類構造函數(每次new,每次執行)

11.如下聲明合法的是

A.default String s
B.public final static native int w( )
C.abstract double d
D.abstract final double hyperbolicCosine( )

答案:
B

解析:
A:java的訪問權限有public、protected、private和default的,default不能修飾變量
C:普通變量不能用abstract修飾,abstract通常修飾方法和類
D:被定義爲abstract的類須要被子類繼承,可是被修飾爲final的類是不能被繼承和改寫的心存疑問能夠實驗一下,看是否能經過編譯.

12.java用()機制實現了進程之間的同步執行

A.虛擬機
B.多個CPU
C.異步調用
D.監視器

答案:
D

解析:
同步執行,須要監視器,即鎖。

13.What is displayed when the following is executed;

double d1=-0.5;
System.out.println("Ceil d1="+Math.ceil(d1));
System.out.println("floor d1="+Math.floor(d1));

A.Ceil d1=-0.0 floor d1=-1.0
B.Ceil d1=0.0 floor d1=-1.0
C.Ceil d1=-0.0 floor d1=-0.0
D.Ceil d1=0.0 floor d1=0.0
E.Ceil d1=0 floor d1=-1

答案:
A

解析:

14.有關下述Java代碼描述正確的選項是____。

public class TestClass {
   private static void testMethod(){
        System.out.println("testMethod");
   }
   public static void main(String[] args) {
        ((TestClass)null).testMethod();
   }
}

A.編譯不經過
B.編譯經過,運行異常,報NullPointerException
C.編譯經過,運行異常,報IllegalArgumentException
D.編譯經過,運行異常,報NoSuchMethodException
E.編譯經過,運行異常,報Exception
F.運行正常,輸出testMethod

答案:
F

解析:
1)此處是類對方法的調用,不是對象對方法的調用。
2)方法是static靜態方法,直接使用"類.方法"便可,由於靜態方法使用不依賴對象是否被建立。null能夠被強制類型轉換成任意類型(不是任意類型對象),因而能夠經過它來執行靜態方法。
3)非靜態的方法用"對象.方法"的方式,必須依賴對象被建立後才能使用,若將testMethod()方法前的static去掉,則會報 空指針異常 。此處也驗證了2)的觀點
固然,不論是否靜態方法,都是已經存在的,只是訪問方式不一樣。

15.下面哪些具體實現類能夠用於存儲鍵,值對,而且方法調用提供了基本的多線程安全支持:()

A.java.util.ConcurrentHashMap
B.java.util.Map
C.java.util.TreeMap
D.java.util.SortMap
E.java.util.Hashtable
F.java.util.HashMap

答案:
A E

解析:

  • ConcurrentHashMap簡稱CHM,CHM 容許併發的讀和線程安全的更新操做。在執行寫操做時,CHM 只鎖住部分的 Map,併發的更新是經過內部根據併發級別將 Map 分割成小部分實現的,高的併發級別會形成時間和空間的浪費,低的併發級別在寫線程多時會引發線程間的競爭,CHM 的全部操做都是線程安全,CHM 返回的迭代器是弱一致性, fail-safe 而且不會拋出ConcurrentModificationException 異常,CHM不容許null的鍵值。可使用 CHM 代替 HashTable,但要記住 CHM 不會鎖住整個 Map
  • 除了Hashtable,其餘是非線性安全的。

16.JavaWEB中有一個類,當會話種邦定了屬性或者刪除了屬性時,他會獲得通知,這個類是:( )

A.HttpSessionAttributeListener
B.HttpSessionBindingListener
C.HttpSessionObjectListener
D.HttpSessionListener;
E.HttpSession
F.HttpSessionActivationListener

答案:
A

解析:
HttpSessionAttributeListener:能夠實現此偵聽器接口獲取此web應用程序中會話屬性列表更改的通知;
HttpSessionBindingListener:當該對象從一個會話中被綁定或者解綁時通知該對象,這個對象由HttpSessionBindingEvent對象通知。這多是servlet程序顯式地從會話中解綁定屬性的結果,多是因爲會話無效,也多是因爲會話超時;
HttpSessionObjectListener:沒有該接口API;
HttpSessionListener:當web應用程序中的活動會話列表發生更改時通知該接口的實現類,爲了接收該通知事件,必須在web應用程序的部署描述符中配置實現類;
HttpSessionActivationListener:綁定到會話的對象能夠偵聽容器事件,通知它們會話將被鈍化,會話將被激活。須要一個在虛擬機之間遷移會話或持久會話的容器來通知全部綁定到實現該接口會話的屬性。

17.在java中重寫方法應遵循規則的包括()

A.訪問修飾符的限制必定要大於被重寫方法的訪問修飾符
B.能夠有不一樣的訪問修飾符
C.參數列表必須徹底與被重寫的方法相同
D.必須具備不一樣的參數列表

答案:
B C

解析:
方法重寫

  • 參數列表必須徹底與被重寫方法的相同;
  • 返回類型必須徹底與被重寫方法的返回類型相同;
  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:若是父類的一個方法被聲明爲public,那麼在子類中重寫該方法就不能聲明爲protected。
  • 父類的成員方法只能被它的子類重寫。
  • 聲明爲final的方法不能被重寫。
  • 聲明爲static的方法不能被重寫,可是可以被再次聲明。
  • 子類和父類在同一個包中,那麼子類能夠重寫父類全部方法,除了聲明爲private和final的方法。
  • 子類和父類不在同一個包中,那麼子類只可以重寫父類的聲明爲public和protected的非final方法。
  • 重寫的方法可以拋出任何非強制異常,不管被重寫的方法是否拋出異常。可是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更普遍的強制性異常,反之則能夠。
  • 構造方法不能被重寫。
  • 若是不能繼承一個方法,則不能重寫這個方法。
    方法重載
  • 被重載的方法必須改變參數列表(參數個數或類型或順序不同);
  • 被重載的方法能夠改變返回類型;
  • 被重載的方法能夠改變訪問修飾符;
  • 被重載的方法能夠聲明新的或更廣的檢查異常;
  • 方法可以在同一個類中或者在一個子類中被重載。
  • 沒法以返回值類型做爲重載函數的區分標準。

18.What might cause the current thread to stop or pause executing

A.An InterruptedException is thrown.
B.The thread executes a wait() call.
C.The thread constructs a new Thread.
D.A thread of higher priority becomes ready.
E.The thread executes a waitforID()call on a MediaTracker.

答案:
A B E

解析:

19.下列說法錯誤的有( )

A.Java面嚮對象語言允許單獨的過程與函數存在
B.Java面嚮對象語言允許單獨的方法存在
C.Java語言中的非靜態方法屬於類中的成員(member)
D.Java語言中的方法一定隸屬於某一類(對象),調用方法與C語言的過程或C++語言的函數相同

答案:
A B C D

解析:
Java的靜態方法屬於類的成員,實例方法屬於對象的成員。

20.下列流當中,屬於處理流的是:()

A.FilelnputStream
B.lnputStream
C.DatalnputStream
D.BufferedlnputStream

答案:
C D

解析:
此題考察對於java流的理解
節點流是實際工做的流,
處理流(咱們叫包裝流可能容易理解一點)設計的目的是讓對流中數據的操做,轉化成咱們能更簡單明瞭的看懂的數據(而不是二進制的字節等)的操做,但實際上增長了不少類,是io流變的更復雜
字節流必是一個接點流,字符流就是一個操做流
使用時,必須是有一個結點流,而後才能用操做流來包裝結點流,即把結點流當參數傳個操做流

注:以上筆試題均來自網絡,由筆者整理得出

推薦

大廠筆試內容集合(內有詳細解析) 持續更新中....

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

文末

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

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

相關文章
相關標籤/搜索