還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

編程語言 科技 前沿夢工場 2017-07-16

前沿教育小編如期而至,後50題面試題如期而至

Q51如何限制一個類不被繼承?

Ans:使用關鍵字Final。

在下面的例子中,Stone類就不能被繼承了。

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q52訪問說明符的訪問範圍是什麼?

Ans:

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q53棧和隊列之間有什麼區別?

Ans:棧和隊列之間的主要區別在於,棧基於“後進先出(LIFO)”原則,而隊列基於FIFO(先進先出)原則。

Q54Java中,我們如何禁止序列化變量?

Ans:想要某些變量不被序列化,那麼可以在聲明時使用關鍵字transient。例如,下面的變量trans_var是一個臨時變量,不能被序列化:

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q55我們如何使用原始數據類型作為對象?

Ans:Java提倡“一切皆為對象”,引用數據類型可以實例化為對象,基本數據類型卻無法變為對象,針對這一不足,JAVA中設置了包裝類,例如,Integer是原始數據類型int的包裝類。

Q56編譯時會遇到哪些類型的異常?

Ans:程序編譯時可以捕獲被檢查的異常,為了成功編譯代碼,異常會通過try...catch來處理。

Q57請描述一下線程的不同狀態。

Ans:Java中的線程往往是處於下面的某一種狀態

NEW:通過New關鍵字創建了Thread類(或其子類)的對象

RUNNABLE:這種情況指的是Thread類的對象調用了start()方法,線程處於就緒狀態。

RUNNING:線程獲得了CPU,處於運行狀態。

DEAD:處於RUNNING狀態的線程,在執行完run方法之後,就變成了DEAD狀態了。

BLOCKED:這種狀態指的是處於RUNNING狀態的線程,出於某種原因,比如調用了sleep方法、等待用戶輸入等而讓出當前的CPU給其他的線程。

Q58定義了類的顯式構造函數之後,還可以使用默認構造函數嗎?

Ans:如果沒有定義顯式構造函數,那麼Java將提供一個默認的無參數構造函數,但是如果定義了顯式構造函數之後,就不能再調用默認構造函數。

Q59可以有兩個方法,它們方法名和參數都相同,但返回值類型不同?

Ans:相同的方法指的是方法名、參數以及返回類型都相同,因此返回類型不同的兩個方法是可以並存的。

Q60以下代碼的輸出是什麼?

Ans:輸出為4

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q61在沒有執行main()的情況下,成功編譯了一個Java類,這一說法正確嗎?

Ans:正確,雖然Java編譯器規定程序的入口點為staticmain,但是沒有main()還是能夠編譯,只是不能運行。

Q62我們可以在靜態方法中調用非靜態方法?

Ans:非靜態方法歸類的對象所有,且具有對象的級別範圍,所以如果想要在靜態方法中調用非靜態方法,首先要創建類的對象,然後使用對象引用,調用這些方法。

Q63為了運行Java程序,必須設置兩個環境變量是什麼?

Ans:PATH變量和CLASSPATH變量。

Q64 Java中變量沒有初始化可以使用嗎?

Ans:Java不會給變量分配默認值,因此變量沒有初始化的情況下,程序會編譯失敗並給出錯誤提示。

Q65 Java中的類可以繼承多個類嗎?

Ans:Java不支持多重繼承。

Q66 Java中,構造函數可以與類名不同嗎?

Ans:不可以,Java的構造函數必須與類名相同,如果不同,它將被視作普通函數。

Q67 Round(3.7)Ceil(3.7)的輸出分別是什麼?

Ans:它們的輸出都是4。Round()遵循四捨五入,Ceil()遵循向上舍入。

Q68 Java中可以使用goto來轉到特定行嗎?

Ans:不可以,Java中沒有goto關鍵字。

Q69已經死亡的線程可以再次啟動嗎?

Ans:不可以。

Q70以下類的聲明是否正確?

Ans:不正確,抽象類不能被聲明為Final。

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q71每個機器都需要JDK來運行Java程序?

Ans:JDK是Java的開發工具包,不是必需的,JRE才是必需的。

Q72 Equals()==有什麼區別?

Ans:Java中,==操作比較的是兩個變量的值是否相等,對於引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內容是否相同。equals操作表示的兩個變量是否是對同一個對象的引用,即堆中的內容是否相同

下例中,equals()返回true,而==操作符則返回false:

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q73 Java類中定義方法,可否使用其他語言代碼實現,如C語言?

Ans:可以,在基於原生開發的情況下,我們可以在Java類中定義公共靜態方法,但是不執行,然後用另外一種語言(如C)實現。

Q74如何在Java中定義析構函數?

Ans:Java類中沒必要定義析構函數,它有自己的垃圾回收機制,當不再引用對象時,會自動執行。

Q75 Java中變量可以既是局部變量又是靜態變量嗎?

Ans:不能,將局部變量定義為靜態變量會導致編譯錯誤。

Q76 Interface中可以有靜態方法嗎?

Ans:Interface中的靜態方法是沒有意義的,靜態方法在類中不能被覆蓋,而Interface中的方法默認都是抽象的,所以只能在實現Interface的類中實現。

Q77在實現接口的類中,我們可以更改接口中定義的變量的值嗎?

Ans:不能,接口中定義的變量大多都默認是public、static和final等不可更改的常量。

Q78 Java中的垃圾回收機制能夠確保程序永遠不會超出內存?

Ans:即使Java提供自動垃圾回收,也不能確保程序不會超出內存,因為與垃圾回收相比,Java對象的創建速度更快。

Q79 main()能否有除void之外的返回類型?

Ans:不可以,main()必須返回值為void,程序才能成功執行。

Q80垃圾回收之後,還能否重新觸發並使用該對象?

Ans:不能,一旦對象被回收之後,就不再存在於堆棧上,也就不能再次訪問和引用了。

Q81Java線程編程中,哪個方法是所有線程必須實現的?

Ans:Run()是一個Runnable接口的方法,必須由所有線程實現。

Q82如何在程序中控制數據庫連接,且每次只有一個線程可以進行數據庫連接?

Ans:應用同步的概念來實現,將數據庫相關代碼hs synchronized關鍵字的方法中,以便一次只有一個線程可以訪問它。

Q83程序員手動拋出異常怎麼辦?

Ans:為了處理手動拋出的異常,我們可以使用throw關鍵字,並在catch中捕獲和處理異常。

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q84如何實現一個類不允許其他類(甚至派生類)創建其對象?

Ans:將該類的構造函數聲明為private,那麼它就不會被其他類訪問。

Q85對象如何存儲在Java?

Ans:每個對象在創建時都會從堆棧中獲取內存空間,被垃圾回收器銷燬之後,其空間將被釋放重新分配給其它對象。

Q86如何確定堆棧上對象的實際大小?

Ans:Java中,沒辦法確定對象的確切大小。

Q87以下哪個類將分配更多的內存?

A類:三種方法,四個變量,無對象

B類:五個方法,三個變量,無對象

Ans:在創建對象之前,不會分配內存,所以這兩個類都沒有分配內存。

Q88如果程序中沒有處理異常,會發生什麼?

Ans:如果沒有異常處理,那麼程序將中止,且不會執行異常拋出之後的語句。

Q89如果定義了一個類定義了多個構造函數,那麼是否可以在一個構造函數中調用另一個構造函數?

Ans:如果一個類有多個構造函數,那麼可以使用this()在一個構造函數中調用另一個構造函數。

Q90什麼是匿名類?

Ans:匿名類是不能有名字的類,它們不能被引用,只能在創建時用New語句來聲明它們。

下例中,我們定義了一個匿名類:

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q91數組聲明之後是否還可以改變其大小?

Ans:數組是靜態的,一旦指定了大小,就不能改變。

Q92應用程序中有多個類,但只有一個main()可以嗎?

Ans:可以,main()方法是Java應用程序的入口方法,代碼總是從特定類的main方法開始。

Q93如果我想要保留對象的數據以供以後使用,最好的做法是什麼?

Ans:使用序列化。

Q94什麼是局部類?

Ans:如果我們在Java的特定塊中定義一個新類,那麼這個類就被稱為局部類,它在局部範圍內可用,在其定義的塊之外不可用。

Q95 StringStringBuffer都表示String對象,這兩個對象之間可以互相比較嗎?

Ans:不可以。

Q96 Java提供了哪些API用於集合類的操作?

Ans:Java提供了Collection API,可應用於一組對象的,Collection API支持的重要類包括

ArrayList,HashMap,TreeSet和TreeMap。

Q97 Java的類型轉換可以將所有其他類轉換為布爾類型嗎?

Ans:不可以,其它原始類型不能轉換為布爾類型,布爾類型也不能轉換為其它原始數據類型。

Q98方法的重寫允許返回類型不同嗎?

Ans:方法的重寫要求子類的方法的名稱及參數必須和所覆蓋的方法相同,返回類型可以不同但必須是所覆蓋方法的子類。

還記得程序員的我們面試時,背的Java葵花寶典麼?(二)

Q99所有異常類的基類是什麼?

Ans:Java.Lang.throwable。

Q100構造函數在繼承中的調用順序是什麼?

Ans:在繼承的情況下,創建派生類的新對象時,首先調用父類的構造函數,然後調用派生類的構造函數。

相關推薦

推薦中...