【JAVA面試資料】程式設計師面試之葵花寶典2

魯雨沒有晴天發表於2019-03-03

【JAVA面試資料】程式設計師面試之葵花寶典2

一晃畢業將近兩年,再次翻看當年畢業時準備的相關JAVA資料,所有的故事放佛都在昨天一樣,幾個月的努力最終沒有白費。那會老師說過程式猿的最優點就是可以無私幫助,我也謹記教誨,將這些資料整理一一奉獻給大家,希望能給新人帶來一定幫助。

31、應用伺服器有那些?

  • BEA WebLogic Server
  • IBM WebSphere Application Server
  • Oracle9i Application Server
  • jBoss
  • Tomcat

32、給我一個你最常見到的runtime exception。

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

33、介面是否可繼承介面?抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)? 

 介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的建構函式。

34、List, Set, Map是否繼承自Collection介面?

List,Set是;

Map不是


35、說出資料連線池的工作機制是什麼?

J2EE伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其表記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。當使用的池連線呼叫完成後,池驅動程式將此連線表記為空閒,其他呼叫就可以使用這個連線。

36、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?

都不能。

37、陣列有沒有length()這個方法? String有沒有length()這個方法?

陣列沒有length()這個方法,有length的屬性。

String有length()這個方法。


38、Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?

  • Set裡的元素是不能重複的,那麼用iterator()方法來區分重複與否。
  • equals()是判讀兩個Set是否相等。
  • equals()和==方法決定引用值是否指向同一物件equals()在類中被覆蓋,為的是當兩個分離的物件的內容和型別相配的話,返回真值。

39、構造器Constructor是否可被override?

構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被過載Overloading。

40、是否可以繼承String類?

String類是final類故不可以繼承。

41、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一個整數表示式。因此傳遞給 switch case 語句的引數應該是 int、 short、 char 或者 bytelong,string 都不能作用於swtich

42、try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?

會執行,在return前執行。

43、程式設計題: 用最有效率的方法算出2乘以8等於幾? 

2 << 3

44、兩個物件值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

不對,有相同的hash code。

45、當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?

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

46、當一個執行緒進入一個物件的一個synchronized方法後,其它執行緒是否可進入此物件的其它方法?

不能,一個物件的一個synchronized方法只能由一個執行緒訪問。

47、程式設計題: 寫一個Singleton出來。

Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個例項存在。一般Singleton模式通常有幾種種形式:
  • 第一種形式: 定義一個類,它的建構函式為private的,它有一個static的private的該類變數,在類初始化時例項話,通過一個public的getInstance方法獲取對它的引用,繼而呼叫其中的方法。

    public class Singleton {
        private Singleton(){}
        private static Singleton instance = new     Singleton(); public static Singleton getInstance() { 
        return instance;  } 
    } 複製程式碼
  • 第二種形式: 

    public class Singleton { 
        private static Singleton instance = null; 
        public static synchronized Singleton getInstance() { 
        if (instance==null) instance=new     Singleton();    return instance; 
    } }複製程式碼
  •  其他形式: 定義一個類,它的建構函式為private的,所有方法為static的。一般認為第一種形式要更加安全些 

48、Java的介面和C++的虛類的相同和不同處。

由於Java不支援多繼承,而有可能某個類或物件要使用分別在幾個類或物件裡面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,介面有更高的靈活性,因為介面中沒有任何實現程式碼。當一個類實現了介面以後,該類要實現介面裡面所有的方法和屬性,並且介面裡面的屬性在預設狀態下面都是public static,所有方法預設情況下是public.一個類可以實現多個介面。

49、Java中的異常處理機制的簡單原理和應用。

當JAVA程式違反了JAVA的語義規則時,JAVA虛擬機器就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內建的語義檢查。例如陣列下標越界,會引發IndexOutOfBoundsException;訪問null的物件時會引發NullPointerException。另一種情況就是JAVA允許程式設計師擴充套件這種語義檢查,程式設計師可以建立自己的異常,並自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。

50、垃圾回收的優點和原理。並考慮2種回收機制。

Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程式設計師最頭疼的記憶體管理的問題迎刃而解,它使得Java程式設計師在編寫程式的時候不再需要考慮記憶體管理。由於有個垃圾回收機制,Java中的物件不再有"作用域"的概念,只有物件的引用才有"作用域"。垃圾回收可以有效的防止記憶體洩露,有效的使用可以使用的記憶體。垃圾回收器通常是作為一個單獨的低階別的執行緒執行,不可預知的情況下對記憶體堆中已經死亡的或者長時間沒有使用的物件進行清楚和回收,程式設計師不能實時的呼叫垃圾回收器對某個物件或所有物件進行垃圾回收。回收機制有分代複製垃圾回收和標記垃圾回收,增量垃圾回收。

51、請說出你所知道的執行緒同步的方法。

  • wait():使一個執行緒處於等待狀態,並且釋放所持有的物件的lock。
  • sleep():使一個正在執行的執行緒處於睡眠狀態,是一個靜態方法,呼叫此方法要捕捉InterruptedException異常。
  • notify():喚醒一個處於等待狀態的執行緒,注意的是在呼叫此方法的時候,並不能確切的喚醒某一個等待狀態的執行緒,而是由JVM確定喚醒哪個執行緒,而且不是按優先順序。
  • Allnotity():喚醒所有處入等待狀態的執行緒,注意並不是給所有喚醒執行緒一個物件的鎖,而是讓它們競爭。

52、你所知道的集合類都有哪些?主要方法?

最常用的集合類是 List Map。 List 的具體實現包括 ArrayList Vector,它們是可變大小的列表,比較適合構建、儲存和操作任何型別物件的元素列表。 List 適用於按數值索引訪問元素的情形。 Map 提供了一個更通用的元素儲存方法。 Map 集合類用於儲存元素對(稱作"鍵"和"值"),其中每個鍵對映到一個值。

53、描述一下JVM載入class檔案的原理機制?

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

54、char型變數中能不能存貯一箇中文漢字?為什麼?

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

55、多執行緒有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?

多執行緒有兩種實現方法,分別是繼承Thread類與實現Runnable介面 ,同步的實現方面有兩種,分別是synchronized,waitnotify


56、JSP的內建物件及方法。

request表示HttpServletRequest物件。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於獲取cookie, header, session資料的有用的方法,response表示HttpServletResponse物件,並提供了幾個用於設定送回 瀏覽器的響應的方法(如cookies,頭資訊等)


檢視此係列文章

【JAVA面試資料】程式設計師面試之葵花寶典1

PS:技術人都喜歡開公眾號,我也不例外我會在裡面不時分享自己心得,給大家提供有價值的內容,想要內推的同學也可以關注我,有阿里、拼多多、美團、今日頭條、AutoDesk等網際網路巨頭的內推資源。

公眾號名稱:魯雨沒有晴天

SLOGAN:一個半路子程式猿

【JAVA面試資料】程式設計師面試之葵花寶典2


相關文章