Java基礎筆試題

來源:互聯網
上載者:User

標籤:方法   foo   引用傳遞   局部變數   操作   package   style   super   值傳遞   

Java基礎筆試題

筆試目的:鍛煉大家的筆試能力,不會讓你在筆試中出現提筆忘字的情況出現。同時也是對自己學習成果的一次檢驗,掌握本階段最核心最精華的知識點。

 

  1. 問題:什麼是物件導向?(10分)

本題目的:檢測對物件導向概念,物件導向特性的理解

答案:

物件導向是一種編程思想. 在使用對象的過程中,  不需要去管對象內部是怎麼實現的, 只需要知道可以實現什麼功能就可以了.(3分)物件導向具有封裝性,繼承性,多態性(3分)。封裝隱蔽了對象內部不需要暴露的細節,使得內部細節的變動跟外界脫離,只依靠介面進行通訊.封裝性降低了編程的複雜性.。通過繼承,使得建立一個類變得容易,一個類從衍生類別那裡獲得其非私人的方法和公用屬性的繁瑣工作交給了編譯器。而繼承和實現介面和運行時的類型綁定機制所產生的多態,使得不同的類所產生的對象能夠對相同的訊息作出不同的反應,極大地提高了代碼的通用性(4分). 

 

  1. 問題:範圍public,private,protected,以及不寫時的區別 ?(10分)

本題目的:檢測修飾符與範圍的理解。

答案:區別如下:

範圍           當前類       同一package  子孫類       其他package

public               √                       √                  √                   √              (2分)

protected        √                        √                  √              × (2分)

default             √                        √                   ×             × (2分)

private            √                         ×                   ×             × (2分)

不寫時預設為default(2分)

 

  1. 問題:簡述final的用法?(10分)·

本題目的:檢測final的理解和使用

答案:

           final修飾類(1),不能被繼承(2)。

           final修飾屬性(1),值不可被更改(2)。

           final修飾方法(1),不可被重寫(2)。

           在匿名內部類的方法中調用局部變數,局部變數需要被final修飾。(1)

   
  1. 問題:當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞。(10分)

本題目的:檢測值傳遞和引用傳遞的區別

答案:

是值傳遞(4)。Java 程式設計語言只有值傳遞參數(3)。當一個對象執行個體作為一個參數被 傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的(3)。
  1. 問題:簡述static的用法。(10分)

本題目的:檢測static的理解和使用

答案:

        static修飾的屬性和方法,隨著類的載入而載入,優先於對象存在。(3)被所有的對象共用, 既可以通過類調用,也可以通過對象調用。(3)static修飾的方法,只能訪問static修飾的成員。(2)static關鍵字不能和this,super同時使用。(2)

     

      

  1. 問題:Overload和Overrid的區別。Overloaded的方法是否可以改變傳回值的類型(10分)

本題目的:檢測對於Overload和Overrid的理解

答案:

方法的重寫Overriding和重載Overloading是Java多態性的不同表現。(2)重寫Overriding是父類與子類之間多態性的一種表現,(1)重載Overloading是一個類中多態性的一種表現。(1)如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。(3)如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變傳回值的類型。(3)

 

 

  1. 問題:String與StringBuffer的區別?(10分)

本題目的:檢測對於字串處理的掌握情況

答案:

String的長度是不可變的(3),StringBuffer的長度是可變的(3)。如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer(2),如果最後需要String,那麼使用StringBuffer的toString()方法(2)。

 

  1. 問題:"=="和equals方法究竟有什麼區別?(10分)

本題目的:對於"=="和equals的理解

答案:

==操作符專門用來比較兩個變數的值是否相等,也就是用於比較變數所對應的記憶體中所儲存的數值是否相同。(4)

equals方法是用於比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。(4)

例如,對於下面的代碼:

String a=new String("foo");

String b=new String("foo");

兩條new語句建立了兩個對象,然後用a,b這兩個變數分別指向了其中一個對象,這是兩個不同的對象,它們的首地址是不同的,即a和b中儲存的數值是不相同的,所以,運算式a==b將返回false,而這兩個對象中的內容是相同的,所以,運算式a.equals(b)將返回true。(2)

 

  1. 問題:構造器Constructor是否可被override?abstract是否可以和final同時修飾方法?(10)

本題目的:檢測對於override的理解

答案:

構造器Constructor不能被重寫Overriding(2),構造器Constructor不能被繼承,因此不能被重寫,但可以被重Overloading(3)。 abstract不可以和final同時修飾方法(2),因為abstract修飾的方法需要被重寫Overrifing,而final修飾的方法不能被重寫(3)。

 

 

  1. 問題:什麼是多態。(10分)

本題目的:檢測對於多態的理解

答案:

我們通常說的多態指的是對象的多態。(1)也就是說對象具有多種心態。編譯時間的類型由聲明該變數時使用的類型決定;運行時的類型由實際賦給變數的對象決定。 如果編譯時間類型和運行時類型不同,就出現多態。(2)

繼承是多態產生的前提條件。(1)

實現多態的機制: 父類的引用變數可以指向子類的執行個體對象,而程式調用的方法在運行期才動態綁定,就是引用變數所指向的真正執行個體對象的方法,也就是記憶體裡正在啟動並執行那個對象的方法,而不是引用變數的類型中定義的方法。(3)

多態的作用: 把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼 , 做出通用的編程,以適應需求的不斷變化。(3)

 

 

Java基礎筆試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.