无码人妻一区二区三区免费不卡_日韩AV无码综合久久五月_国产成人aⅴ片在线观看_欧美成人片高清在线观看

蜜蜂職場文庫 > 面試技巧 >

java面試題目_java經(jīng)典面試題

時間: 小龍 面試技巧

  Java工程師在求職面試中,想要得到面試官的肯定,那么做好面試準(zhǔn)備,了解面試題目很有必要。下面小編已經(jīng)為你們整理了java面試題目,一起來看看吧。

  java面試題目一

 1、String 是最基本的數(shù)據(jù)類型嗎?

  答:不是。Java中的基本數(shù)據(jù)類型只有8個:byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type)和枚舉類型(enumeration type),剩下的都是引用類型(reference type)。

  2、float f=3.4;是否正確?

  答:不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點型(float)屬于下轉(zhuǎn)型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉(zhuǎn)換float f =(float)3.4; 或者寫成float f =3.4F;。

  3、short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?

  答:對于short s1 = 1; s1 = s1 + 1;由于1是int類型,因此s1+1運算結(jié)果也是int 型,需要強制轉(zhuǎn)換類型才能賦值給short型。而short s1 = 1; s1 += 1;可以正確編譯,因為s1+= 1;相當(dāng)于s1 = (short)(s1 + 1);其中有隱含的強制類型轉(zhuǎn)換。

  4、Java有沒有g(shù)oto?

  答:goto 是Java中的保留字,在目前版本的Java中沒有使用。(根據(jù)James Gosling(Java之父)編寫的《The Java Programming Language》一書的附錄中給出了一個Java關(guān)鍵字列表,其中有g(shù)oto和const,但是這兩個是目前無法使用的關(guān)鍵字,因此有些地方將其稱之為保留字,其實保留字這個詞應(yīng)該有更廣泛的意義,因為熟悉C語言的程序員都知道,在系統(tǒng)類庫中使用過的有特殊意義的單詞或單詞的組合都被視為保留字)

  java面試題目二

  1、&和&&的區(qū)別?

  答:&運算符有兩種用法:(1)按位與;(2)邏輯與。&&運算符是短路與運算。邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運算符左右兩端的布爾值都是true整個表達(dá)式的值才是true。&&之所以稱為短路運算是因為,如果&&左邊的表達(dá)式的值是false,右邊的表達(dá)式會被直接短路掉,不會進(jìn)行運算。很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應(yīng)當(dāng)寫為:username != null &&!username.equals(“”),二者的順序不能交換,更不能用&運算符,因為第一個條件如果不成立,根本不能進(jìn)行字符串的equals比較,否則會產(chǎn)生NullPointerException異常。注意:邏輯或運算符(|)和短路或運算符(||)的差別也是如此。

  補充:如果你熟悉JavaScript,那你可能更能感受到短路運算的強大,想成為JavaScript的高手就先從玩轉(zhuǎn)短路運算開始吧。

  2、解釋內(nèi)存中的棧(stack)、堆(heap)和靜態(tài)區(qū)(static area)的用法。

  答:通常我們定義一個基本數(shù)據(jù)類型的變量,一個對象的引用,還有就是函數(shù)調(diào)用的現(xiàn)場保存都使用內(nèi)存中的??臻g;而通過new關(guān)鍵字和構(gòu)造器創(chuàng)建的對象放在堆空間;程序中的字面量(literal)如直接書寫的100、”hello”和常量都是放在靜態(tài)區(qū)中。??臻g操作起來最快但是棧很小,通常大量的對象都是放在堆空間,理論上整個內(nèi)存沒有被其他進(jìn)程使用的空間甚至硬盤上的虛擬內(nèi)存都可以被當(dāng)成堆空間來使用。

  1String str = new String("hello");

  上面的語句中變量str放在棧上,用new創(chuàng)建出來的字符串對象放在堆上,而”hello”這個字面量放在靜態(tài)區(qū)。

  補充:較新版本的Java(從Java 6的某個更新開始)中使用了一項叫”逃逸分析”的技術(shù),可以將一些局部對象放在棧上以提升對象的操作性能。

  3、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

  答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行下取整。

  4、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

  答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。從Java 5開始,Java中引入了枚舉類型,expr也可以是enum類型,從Java 7開始,expr還可以是字符串(String),但是長整型(long)在目前所有的版本中都是不可以的。

  java面試題目三

  1、數(shù)組有沒有l(wèi)ength()方法?String有沒有l(wèi)ength()方法?

  答:數(shù)組沒有l(wèi)ength()方法,有l(wèi)ength 的屬性。String 有l(wèi)ength()方法。JavaScript中,獲得字符串的長度是通過length屬性得到的,這一點容易和Java混淆。

  2、在Java中,如何跳出當(dāng)前的多重嵌套循環(huán)?

  答:在最外層循環(huán)前加一個標(biāo)記如A,然后用break A;可以跳出多重循環(huán)。(Java中支持帶標(biāo)簽的break和continue語句,作用有點類似于C和C++中的goto語句,但是就像要避免使用goto一樣,應(yīng)該避免使用帶標(biāo)簽的break和continue,因為它不會讓你的程序變得更優(yōu)雅,很多時候甚至有相反的作用,所以這種語法其實不知道更好)

 3、構(gòu)造器(constructor)是否可被重寫(override)?

  答:構(gòu)造器不能被繼承,因此不能被重寫,但可以被重載。

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

  答:不對,如果兩個對象x和y滿足x.equals(y) == true,它們的哈希碼(hash code)應(yīng)當(dāng)相同。Java對于eqauls方法和hashCode方法是這樣規(guī)定的:(1)如果兩個對象相同(equals方法返回true),那么它們的hashCode值一定要相同;(2)如果兩個對象的hashCode相同,它們并不一定相同。當(dāng)然,你未必要按照要求去做,但是如果你違背了上述原則就會發(fā)現(xiàn)在使用容器時,相同的對象可以出現(xiàn)在Set集合中,同時增加新元素的效率會大大下降(對于使用哈希存儲的系統(tǒng),如果哈希碼頻繁的沖突將會造成存取性能急劇下降)。

  補充:關(guān)于equals和hashCode方法,很多Java程序都知道,但很多人也就是僅僅知道而已,在Joshua Bloch的大作《Effective Java》(很多軟件公司,《Effective Java》、《Java編程思想》以及《重構(gòu):改善既有代碼質(zhì)量》是Java程序員必看書籍,如果你還沒看過,那就趕緊去亞馬遜買一本吧)中是這樣介紹equals方法的:首先equals方法必須滿足自反性(x.equals(x)必須返回true)、對稱性(x.equals(y)返回true時,y.equals(x)也必須返回true)、傳遞性(x.equals(y)和y.equals(z)都返回true時,x.equals(z)也必須返回true)和一致性(當(dāng)x和y引用的對象信息沒有被修改時,多次調(diào)用x.equals(y)應(yīng)該得到同樣的返回值),而且對于任何非null值的引用x,x.equals(null)必須返回false。實現(xiàn)高質(zhì)量的equals方法的訣竅包括:1. 使用==操作符檢查”參數(shù)是否為這個對象的引用”;2. 使用instanceof操作符檢查”參數(shù)是否為正確的類型”;3. 對于類中的關(guān)鍵屬性,檢查參數(shù)傳入對象的屬性是否與之相匹配;4. 編寫完equals方法后,問自己它是否滿足對稱性、傳遞性、一致性;5. 重寫equals時總是要重寫hashCode;6. 不要將equals方法參數(shù)中的Object對象替換為其他的類型,在重寫時不要忘掉@Override注解。

  5、是否可以繼承String類?

  答:String 類是final類,不可以被繼承。

  補充:繼承String本身就是一個錯誤的行為,對String類型最好的重用方式是關(guān)聯(lián)關(guān)系(Has-A)和依賴關(guān)系(Use-A)而不是繼承關(guān)系(Is-A)。

  
看了“java面試題目”

51279