好程式員大資料教育訓練分享大資料面試寶典一第一部分:Java語言基礎
1、面向對象的特征有哪些方面?
1)抽象:抽象就是忽略一個主題中與目前目标無關的那些方面,以便更充分地注意與目前目标有關的方面。抽象并不打算了解全部問題,而隻是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是資料抽象。
2)繼承:繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明确表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和執行個體變量,并且類可以修改或增加新的方法使之更适合特殊的需要。
3)封裝:封裝是把過程和資料包圍起來,對資料的通路隻能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口通路其他對象。
4)多态性:多态性是指允許不同類的對象對同一消息作出響應。多态性包括參數化多态性和包含多态性。多态性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程式函數同名問題。
2、作用域public,private,protected,以及不寫時的差別?
答:差別如下:
作用域 目前類 同包 子孫類 其他
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
不寫時預設為default。
3、String 是最基本的資料類型嗎? 【基礎】
答:不是。
4、float 型float f=3.4是否正确? 【基礎】
答:不正确;
精度不準确,應該用強制類型轉換,如下所示:float f=(float)3.4 。
或者使用 float f = 3.4f;
5、語句float f=1.3;編譯能否通過?【基礎】
答:不能;
應該用強制類型轉換,如下所示:float f=(float)1.3;
或者使用 float f = 1.3f;
6、short s1 = 1; s1 = s1 + 1;有什麼錯?
short s1 = 1; s1 += 1;有什麼錯? 【基礎】
答:short s1 = 1; s1 = s1 + 1;s1+1運算結果是int 型,需要強制轉換類型;short s1 = 1; s1 += 1;可以正确編譯,自動類型提升。
7、Java 有沒有goto? 【基礎】
答:goto 是java 中的保留字,現在沒有在java 中使用。
8、int 和Integer 有什麼差別? 【基礎】
答:Java 提供兩種不同的類型:引用類型和原始類型(或内置類型);
int 是java 的原始資料類型,Integer 是java 為int 提供的封裝類。
Java 為每個原始類型提供了封裝類:
原始類型: boolean,char,byte,short,int,long,float,double
封裝類型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的資料結構存儲,當引用類型和原始類型用作某個類的執行個體資料時所指定的預設值。對象引用執行個體變量的預設值為null,而原始類型執行個體變量的預設值與它們的類型有關。
9、&和&&的差別?【基礎】
答:&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。
10、簡述邏輯操作(&,|,^)與條件操作(&&,||)的差別?【基礎】
答:差別主要有兩點:
a.條件操作隻能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數值型
b.邏輯操作不會産生短路。