天天看點

好程式員大資料教育訓練分享大資料面試寶典三

  好程式員大資料教育訓練分享大資料面試寶典三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.";

  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 回收,導緻耗費記憶體資源。