好程式設計師大資料培訓分享大資料面試寶典三

好程式設計師發表於2020-05-15

  好程式設計師大資料培訓分享大資料面試寶典三 1 、當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞 ? 【基礎】

  答:是值傳遞。Java 程式語言只有值傳遞引數。當一個物件例項作為一個引數被傳遞到方法中時,引數的值就是對該物件的引用。物件的內容可以在被呼叫的方法中改變,但物件的引用是永遠不會改變的。

  2 String StringBuffer 的區別 ? 【基礎】

  答:JAVA 平臺提供了兩個類: String StringBuffer ,它們可以儲存和操作字串,即包含多個字元的字元資料。

  這個String 類提供了數值不可改變的字串。

  而這個StringBuffer 類提供的字串進行修改。當你知道字元資料要改變的時候你就可以使用 StringBuffer 。典型地,你可以使用 StringBuffers 來動態構造字元資料。

  3 String, StringBuffer StringBuilder 的區別。【基礎】

  答:String 的長度是不可變的; StringBuffer 的長度是可變的,如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用 StringBuffer ,如果最後需要 String ,那麼使用 StringBuffer toString() 方法;執行緒安全; StringBuilder 是從 JDK 5 開始,為 StringBuffer 該類補充了一個單個執行緒使用的等價類;通常應該優先使用 StringBuilder 類,因為它支援所有相同的操作,但由於它不執行同步,所以速度更快。

  4 Overload Override 的區別。 Overloaded 的方法是否可以改變返回值的型別 ? 【基礎】

  答:方法的重寫Overriding 和過載 Overloading Java 多型性的不同表現。重寫 Overriding 是父類與子類之間多型性的一種表現,過載 Overloading 是一個類中多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding) 。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被“遮蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別,則稱為方法的過載 (Overloading) Overloaded 的方法是可以改變返回值的型別。

  5 、定義類 A 和類 B 如下:【基礎】

  class A {

  int a=1;

  double d=2.0;

  void show(){

  System.out.println("Class A: a="+a +"\td="+d);

  }

  }

  class B extends A{

  float a=3.0f;

  String d="Java program.";

  void show(){

  super.show( );

  System.out.println("Class B: a="+a +"\td="+d);

  }

  }

  (1) 若在應用程式的 main 方法中有以下語句:

  A a=new A();

  a.show();

  則輸出的結果如何?

  (2) 若在應用程式的 main 方法中定義類 B 的物件 b

  A b=new B();

  b.show();

  則輸出的結果如何?

  答:輸出結果為:

  1 Class A: a=1 d=2.0

  2 Class A: a=1 d=2.0

  Class B: a=3.0 d=Java program

  6 、描述一下 JVM 載入 class 檔案的原理機制 ? 【基礎】

  答:JVM 中類的裝載是由 ClassLoader 和它的子類來實現的 ,Java ClassLoader 是一個重要的 Java 執行時系統元件。它負責在執行時查詢和裝入類檔案的類。

  7 char 型變數中能不能存貯一箇中文漢字 ? 為什麼 ? 【基礎】

  答:能夠定義成為一箇中文的,因為java 中以 unicode 編碼,一個 char 16 個位元組,所以放一箇中文是沒問題的。

  8 abstract class interface 有什麼區別 ? 【基礎】

  答:宣告方法的存在而不去實現它的類被叫做抽象類(abstract class ),。然而可以建立一個變數,其型別是一個抽象類,它用於要建立一個體現某些基本行為的類,併為該類宣告方法,但不能在該類中實現該類的情況。不能建立 abstract 類的例項並讓它指向具體子類的一個例項。不能有抽象建構函式或抽象靜態方法。 Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。介面( interface )是抽象類的變體。新型多繼承性可透過實現這樣的介面而獲得。介面中的所有方法都是抽象的,所有成員變數都是 publicstatic final 的。一個類可以實現多個介面,當類實現特殊介面時,它定義(即

  將程式體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何物件上呼叫介面的方法。由於有抽象類,它允許使用介面名作為引用變數的型別。通常的動態聯編將生效。引用可以轉換到介面型別或從介面型別轉換,instanceof 運算子可以用來決定某物件的類是否實現了介面。

  9 Static Nested Class Inner Class 的不同?【基礎】

  答:Static Nested Class 是被宣告為靜態( static )的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化。

  10 Java 中會存在記憶體洩漏嗎,請簡單描述。【基礎】

  答:會;存在無用但可達的物件,這些物件不能被GC 回收,導致耗費記憶體資源。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2692354/,如需轉載,請註明出處,否則將追究法律責任。

相關文章