JAVA面試題(4)

1. 下面float的賦值語句錯誤的是?()

A:float f=3.4;
B:float f=3.4F;
C:float f=1.0;
D:float f=1;
答:AC

解析
3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於下轉型(down-casting,也稱爲窄化)會造成精度損失,因此需要強制類型轉換float
f =(float)3.4; 或者寫成float f =3.4F; float a =
1;這裏的1是整形,當賦值給一個float時,存在一個隱式轉換,不損失精度。 float a = 1f; 1f就是float類型的。
如果你這樣定義 float f = 1.0; 肯定會出錯。
因爲1.0默認是double類型的。double範圍比float大。爲了不損失精度,不會自動轉換。這是必須這樣寫 float f =
1.0f;

2.面向對象的特徵有哪些方面?()

A:抽象;
B:繼承;
C:多態;
D:封裝;

答:面向對象的特徵主要有以下幾個方面:

1)抽象:抽象是將一類對象的共同特徵總結出來構造類的過程,包括數據抽象和行爲抽象兩方面。抽象只關注對象有哪些屬性和行爲,並不關注這些行爲的細節是什麼。

2)繼承:繼承是從已有類得到繼承信息創建新類的過程。提供繼承信息的類被稱爲父類(超類、基類);得到繼承信息的類被稱爲子類(派生類)。繼承讓變化中的軟件系統有了一定的延續性,同時繼承也是封裝程序中可變因素的重要手段(如果不能理解請閱讀閻宏博士的《Java與模式》或《設計模式精解》中關於橋樑模式的部分)。

3)封裝:通常認爲封裝是把數據和操作數據的方法綁定起來,對數據的訪問只能通過已定義的接口。面向對象的本質就是將現實世界描繪成一系列完全自治、封閉的對象。我們在類中編寫的方法就是對實現細節的一種封裝;我們編寫一個類就是對數據和數據操作的封裝。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口(可以想想普通洗衣機和全自動洗衣機的差別,明顯全自動洗衣機封裝更好因此操作起來更簡單;我們現在使用的智能手機也是封裝得足夠好的,因爲幾個按鍵就搞定了所有的事情)。

4)多態性:多態性是指允許不同子類型的對象對同一消息作出不同的響應。簡單的說就是用同樣的對象引用調用同樣的方法但是做了不同的事情。多態性分爲編譯時的多態性和運行時的多態性。如果將對象的方法視爲對象向外界提供的服務,那麼運行時的多態性可以解釋爲:當A系統訪問B系統提供的服務時,B系統有多種提供服務的方式,但一切對A系統來說都是透明的(就像電動剃鬚刀是A系統,它的供電系統是B系統,B系統可以使用電池供電或者用交流電,甚至還有可能是太陽能,A系統只會通過B類對象調用供電的方法,但並不知道供電系統的底層實現是什麼,究竟通過何種方式獲得了動力)。方法重載(overload)實現的是編譯時的多態性(也稱爲前綁定),而方法重寫(override)實現的是運行時的多態性(也稱爲後綁定)。運行時的多態是面向對象最精髓的東西,要實現多態需要做兩件事:1.
方法重寫(子類繼承父類並重寫父類中已有的或抽象的方法);2.
對象造型(用父類型引用引用子類型對象,這樣同樣的引用調用同樣的方法就會根據子類對象的不同而表現出不同的行爲)。

3.java類可以作爲?()

A:類型定義機制;
B:數據封裝機制;
C:類型定義機制和數據封裝機制
D:上述都不對;
答:C
解析:類即可以作爲類型定義機制也可以作爲數據封裝機制。

4.以下哪個約束符可用於定義成員常量?()

A、 static
B、final
C、abstract
D、No modifier can be used
答案 B 解析:static
靜態成員變量(在定義這個變量的類的實例中,這個變量是唯一的,即多個實例間這個變量爲共享的) final
成員常量(必須在定義時或在構造方法中賦初值) final static 靜態成員常量,必須在定義這個常量時給定其初始化值

5. 在使用interface聲明一個接口時,只可以使用()修飾符修飾該接口

A private
B protected
C private protected
D public
答案:D
解析:接口必須要具體類實現纔有意義,所以必須是public。

6. java語言使用的字符碼集是()

A ASCII
B BCD
C DCB
D Unicode
答案:D
解析:Java語言使用的是Unicode字符集,ASCII是國際上使用最廣泛的字符編碼

7. 下列關於繼承的哪項敘述是正確的?

A 在java中允許多繼承
B 在java中一個類只能實現一個接口
C 在java中一個類不能同時繼承一個類和實現一個接口
D java的單一繼承使代碼更可靠
答案:D
解析: A:Java只能單繼承。所以A選項錯誤 B:Java中一個類可以實現多個接口,所以B錯誤
C:Java中一個類只能實現繼承一個父類但是可以同時實現多個接口,所以C錯誤 D:Java的單一繼承使代碼更可靠,是正確的。

(不定項選擇題)8. 不能用來修飾interface的有( )

A private
B public
C protected
D static
答案:ACD
解析:
A,C,D都不能用來修飾interface。
就訪問來說,可以用public,默認修飾符,而不能用private,因爲接口本身就是爲了讓別的類或接口使用的,用private就沒有了意義。
protected也是不可以的,ptotected的訪問權限是包內對象以及包外繼承該類的包外對象,其實和public意義也就一樣了,也就沒必要選擇protected。
static是用來修飾變量或者方法的,而不修飾類。(在接口中 static只能修飾變量不能修飾方法) (final同樣不能修飾接口)。

9.現在有T1、T2、T3三個線程,你怎樣保證T2在T1執行完後執行,T3在T2執行完後執行?

這個線程問題通常會在第一輪或電話面試階段被問到,目的是檢測你對”join”方法是否熟悉。這個多線程問題比較簡單,可以用join方法實現。

10.在Java中Lock接口比synchronized塊的優勢是什麼?你需要實現一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現它?

lock接口在多線程和併發編程中最大的優勢是它們爲讀和寫分別提供了鎖,它能滿足你寫像ConcurrentHashMap這樣的高性能數據結構和有條件的阻塞。Java線程面試的問題越來越會根據面試者的回答來提問。我強烈建議在你去參加多線程的面試之前認真讀一下Locks,因爲當前其大量用於構建電子交易終統的客戶端緩存和交易連接空間。

如果覺得我寫的還行,請關注我的公衆號,每天定時推送乾貨.
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章