Java面試題二十

更多面試題歡迎訪問:面試題專欄​​​​​​​

1,有關線程的哪些敘述是對的( )

        A,一旦一個線程被創建,它就立即開始運行。

        B,使用start()方法可以使一個線程成爲可運行的,但是它不一定立即開始運行。

        C,當一個線程因爲搶先機制而停止運行,它被放在可運行隊列的前面。

        D,一個線程可能因爲不同的原因停止並進入就緒狀態。

 

答案:BCD

        在搶佔式線程模型中,操作系統可以在任何時候打斷線程。通常會在它運行了一段時間(就是所謂的一個時間片)後纔打斷它。這樣的結果自然是沒有線程能夠不公平地長時間霸佔處理器。

 

2,哪個關鍵字可以對對象加互斥鎖 ()

        A,serialize 

        B,synchronized

        C,transient

        D,static

 

答案:B
A是對象串行化、C是關鍵字transient修飾的屬性將不被串行化、D是靜態的

 

3,下列關於線程優先級的說法中,正確的是()
        A、線程的優先級是不能改變的 
        B、線程的優先級是在創建線程時設置的 
        C、在創建線程後的任何時候都可以設置 
        D、B和C

 

答案:C

        Java語言中線程的優先級是用一個介於MIN_PRIORITY和MAX_PRIORITY之間的整數來表示的。可以在創建線程後的任何時候修改線程的優先級。

 

4,爲了使模塊儘可能獨立,要求(  )
        A.模塊的內聚程度要儘量高,且耦合程度要儘量強
        B.模塊的內聚程度要儘量高,且耦合程度要儘量弱
        C.模塊的內聚程度要儘量低,且耦合程度要儘量弱
        D.模塊的內聚程度要儘量低,且耦合程度要儘量強

 

答案:B

        系統設計的質量主要反映在模塊的獨立性上。評價模塊獨立性的主要標準有兩個:一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度;二是模塊內部之間的關係是否緊密,稱爲內聚。一般來說,要求模塊之間的耦合儘可能地弱,即模塊儘可能獨立,而要求模塊的內聚程度儘量高。

 

5,下列對於線性鏈表的描述中正確的是()
        A.存儲空間不一定是連續,且各元素的存儲順序是任意的  
        B.存儲空間不一定是連續,且前件元素一定存儲在後件元素的前面  
        C.存儲空間必須連續,且前件元素一定存儲在後件元素的前面  
        D.存儲空間必須連續,且各元素的存儲順序是任意的

 

答案:A

        在鏈式存儲結構中,存儲數據結構的存儲空間可以不連續,各數據結點的存儲順序與數據元素之間 的邏輯關係可以不一致,而數據元素之間的邏輯關係是由指針域來確定的。

 

6,下列敘述中錯誤的是( )

        A.線性表是由n個元素組成的一個有限序列

        B.線性表是一種線性結構

        C.線性表的所有結點有且僅有一個前件和後件

        D.線性表可以是空表

 

答案:C

        線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前驅,最後一個結點沒有後繼,其他結點有且只有一個前驅和後繼,所以選項C是錯誤的。

 

7,已知一棵二叉樹前序遍歷和中序遍歷分別爲ABDEGCFH和DBGEACHF,則該二叉樹的後序遍歷爲( )

        A.GEDHFBCA

        B.DGEBHFCA

        C.ABCDEFGH

        D.ACBFEDHG

 

答案:B

        二叉樹的遍歷有3種:前序、中序和後序。

        先序:先訪問根結點、左結點、右結點

        中序:先訪問左結點、根結點、右結點

        後序:先訪問左結點、右結點、根結點

本題根據前序遍歷和中序遍歷的結果可以得出二叉樹的結構,然後再對其進行後序遍歷。

 

8,面向對象方法中,繼承是指( )
        A.一組對象所具有的相似性質
        B.一個對象具有另一個對象的性質
        C.各對象之間的共同性質
        D.類之間共享屬性和操作的機制

 

答案:D
        繼承:在程序設計中,繼承是指子類自動享用父類的屬性和方法,並可以增加新的屬性和方法的一種機制。它是實現代碼共享的重要手段,可以使軟件更具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,也是面向對象的主要優點之一。

        繼承又分爲單重繼承和多重繼承,單重繼承是指子類只能繼承一個父類的屬性和操作;而多重繼承是指子類可以繼承了多個父類的屬性和操作。

        擴展:Java是一種單重繼承語言,而C++是一種多重繼承語言。

 

9,棧和隊列的共同點是( )
        A.都是先進先出
        B.都是先進後出
        C.只允許在端點處插入和刪除元素
        D.沒有共同特點

 

答案:C
        棧是隻允許在表的一端進行插入和刪除的操作,隊列是允許在表的一端進行插入,另一端進行刪除的操作。

 

10,下列關於修飾符混用的說法,錯誤的是()
        A.abstract不能與final並列修飾同一個類
        B.abstract類中不可以有private的成員
        C.abstract方法必須在abstract類中
        D.static方法中能處理非static的數據

 

答案:D

        靜態方法是屬於類的,而普通方法是屬於對象的。
        屬於類的靜態方法可以在對象不存在的時候就能訪問到,而普通方法必須先new一個對象才能用這個對象訪問。當我們訪問調用靜態方法的時候(使用類名.靜態方法名)這個時候就沒有對象創建,所以普通方法是訪問不到的。爲了避免這種錯誤,所以java就不允許在靜態方法中訪問非靜態方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章