邏輯思考題:1:礦泉水1元錢1瓶,每2個空瓶換一瓶礦泉水,現(xiàn)有20元錢,請問可以買多少瓶礦泉水? 20+10+5+2+1+1=39(瓶)2:下面這個表達(dá)式,你移動一個數(shù)字或者符號就可以把這個表達(dá)式變成正確的.請?jiān)囋?62-63=1 將6移至2的右上方,變成2的指數(shù),即2的6次方=64 所以64-63=13: 一棟房子需要一個工匠七天建成,這個工匠的工錢是一份金條,假如現(xiàn)在你需要蓋一棟房子,而你只有一根完整的金條,怎么能把金條分三份的情況下每天都付給工匠工資,最后一天剛好付完?切兩刀,分別分成三塊,每塊大小占金條的1/7、2/7、4/7。第一天給1/7第二天給2/7還回1/7第三天再給1/7;第四天給4/7還回1/7、2/7;第五天給1/7;第六天給2/7還回1/7;第七天給1/7。面試題:1:談?wù)刦inal, finally, finalize的區(qū)別1. final:最終的意思,可以修飾類,修飾成員變量,修飾成員方法 2. 修飾類,類不能被繼承 3. 修飾變量,變量是常量 4. 修飾方法,方法不能被重寫 5. finally:是異常處理的一部分,用于釋放資源。 6. 一般來說,代碼肯定會執(zhí)行,特殊情況:在執(zhí)行到finally之前jvm退出了 7. finalize:是Object類的一個方法,用于垃圾回收 2: &和&&的區(qū)別 &和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時,整個運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。&&還具有短路的功能,即如果第一個表達(dá)式為false,則不再計(jì)算第二個表達(dá)式,例如,對于if(str != null && !str.equals(“”))表達(dá)式,當(dāng)str為null時,后面的表達(dá)式不會執(zhí)行,所以不會出現(xiàn)NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x==33 & ++y>0) y會增長,If(x==33 && ++y>0)不會增長&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數(shù)進(jìn)行&運(yùn)算,來獲取該整數(shù)的最低4個bit位,例如,0x31 & 0x0f的結(jié)果為0x01。3: Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math類中提供了三個與取整有關(guān)的方法:ceil、floor、round,這些方法的作用與它們的英文名稱的含義相對應(yīng),例如,ceil的英文意義是天花板,該方法就表示向上取整,所以,Math.ceil(11.3)的結(jié)果為12,Math.ceil(-11.3)的結(jié)果是-11;floor的英文意義是地板,該方法就表示向下取整,所以,Math.floor(11.6)的結(jié)果為11,Math.floor(-11.6)的結(jié)果是-12;最難掌握的是round方法,它表示“四舍五入”,算法為Math.floor(x+0.5),即將原來的數(shù)字加上0.5后再向下取整,所以,Math.round(11.5)的結(jié)果為12,Math.round(-11.5)的結(jié)果為-11。4: short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? 對于short s1 = 1; s1 = s1 + 1; 由于s1+1運(yùn)算時會自動提升表達(dá)式的類型,所以結(jié)果是int型,再賦值給short類型s1時,編譯器將報(bào)告需要強(qiáng)制轉(zhuǎn)換類型的錯誤。對于short s1 = 1; s1 += 1;由于 += 是java語言規(guī)定的運(yùn)算符,java編譯器會對它進(jìn)行特殊處理,因此可以正確編譯。5:數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法? java中數(shù)組有沒有l(wèi)ength()方法,求數(shù)組的長度可以使用數(shù)組的length屬性。12 int[] arr={1,2,3,4,5};int length=arr.length;//求數(shù)組的長度String 有l(wèi)ength()方法,用來求字符串的長度12 String str="Hello";int length=str.length(); //求字符串的長度6: Overload和Override的區(qū)別。Overload的方法是否可以改變返回值的類型? 重載(Overload)(1) 方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個同名函數(shù)同時存在,具有不同的參數(shù)個數(shù)/類型。 重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。(2) Java的方法重載,就是在類中可以創(chuàng)建多個方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。 調(diào)用方法時通過傳遞給它們的不同參數(shù)個數(shù)和參數(shù)類型來決定具體使用哪個方法, 這就是多態(tài)性。(3) 重載的時候,方法名要一樣,但是參數(shù)類型和個數(shù)不一樣,返回值類型可以相同也可以不相同。 無法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。 重寫(Overriding)(1) 父類與子類之間的多態(tài)性,對父類的函數(shù)進(jìn)行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。 但有時子類并不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。 方法重寫又稱方法覆蓋。(2)若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數(shù)表,則新方法將覆蓋原有的方法。 如需父類中原有的方法,可使用super關(guān)鍵字,該關(guān)鍵字引用了當(dāng)前類的父類。(3)子類函數(shù)的訪問修飾權(quán)限不能少于父類的;7:給我寫出JDK提供的5個常用類名,5個接口名,5個包名. 1、java.lang包:java的核心類庫,包含了運(yùn)行java程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類等,系統(tǒng)缺省加載這個包2、java.io包:java語言的標(biāo)準(zhǔn)輸入/輸出類庫,如基本輸入/輸出流、文件輸入/輸出、過濾輸入/輸出流等等3、java.util包:Java的實(shí)用工具類庫Java.util包。在這個包中,Java提供了一些實(shí)用的方法和數(shù)據(jù)結(jié)構(gòu)。例如,Java提供日期(Data)類、日歷(Calendar)類來產(chǎn)生和獲取日期及時間,提供隨機(jī)數(shù)(Random)類產(chǎn)生各種類型的隨機(jī)數(shù),還提供了堆棧(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等類來表示相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。包含如處理時間的date類,處理變成數(shù)組的Vector類,以及stack和HashTable類4、java.util.zip包:實(shí)現(xiàn)文件壓縮功能5、java.lang.reflect包:提供用于反射對象的工具類:1.java.lang.Object 2.java.lang.String 3.java.lang.System 4.java.io.file 5.java.io.FileInputStream 接口:1.java.util.List<E> 2.java.util.Map<E> 3.java.util.Iterator<E> 4.java.sql.CallableStatement 5.java.lang.Comparable<T>8:構(gòu)造方法是否可被override? 不可以 ,回報(bào)異常。 override是用來重寫父類中的方法以及重寫本類和object的toString()方法。9: try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后? 會。前 10: 編程題: 用最有效率的方法算出2乘以8等於幾? 2 << 311: 當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性嗎? 不可以12: switch是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch語句中的表達(dá)式只能是byte,short,char ,int以及枚舉(enum),所以當(dāng)表達(dá)式是byte的時候可以隱含轉(zhuǎn)換為int類型,而long字節(jié)比int字節(jié)多,不能隱式轉(zhuǎn)化為int類型,所以switch語句可以用在byte上而不可以用在long上,另外由于在JDK7.0中引入了新特性,所以witch語句可以接收一個String類型的值,String可以作用在switch語句上
新聞熱點(diǎn)
疑難解答
圖片精選