我是毛毛蟲媽
Java基礎(chǔ)面試題都有哪些?
Java基礎(chǔ)面試題都有哪些?
Java基礎(chǔ)面試題都有哪些?
Java基礎(chǔ)面試題都有哪些?
Java基礎(chǔ)面試題都有哪些?
,一般來說現(xiàn)在流行在網(wǎng)上操作,如果手機(jī)上相對(duì)方便一些,因?yàn)樵谑謾C(jī)上只需要網(wǎng)頁(yè)或者軟件APP就可以完成了。
不忘初心258
java異常機(jī)制的原理與應(yīng)用答:每當(dāng)程序出現(xiàn)異常之后,如果程序沒有進(jìn)行相應(yīng)的處理,則程序會(huì)出現(xiàn)中斷現(xiàn)象。實(shí)際上,產(chǎn)生了異常之后,JVM會(huì)拋出一個(gè)異常類的實(shí)例化對(duì)象,如果此時(shí)使用了try語句捕獲的話,則可以進(jìn)行異常的處理,否則,交給JVM進(jìn)行處理。當(dāng)try語句捕獲異常之后,將與catch語句的異常類型進(jìn)行匹配,如果匹配成功則執(zhí)行catch內(nèi)的語句。簡(jiǎn)單的應(yīng)用:在所以throws語句的地方加入try-catch。標(biāo)準(zhǔn)應(yīng)用:try-catch-finally-throw-throws一起使用。 2. 垃圾回收機(jī)制的優(yōu)點(diǎn)答:釋放無用的對(duì)象所占用的空間。方式:自動(dòng)回收,手動(dòng)回收。使用(),實(shí)際上調(diào)用().gc()3. Error與Exception區(qū)別答:Error是jvm進(jìn)行處理,是jvm出錯(cuò)exception是可以由程序處理的,可以用try-catch捕獲的4. final,finally,finallize答:final定義的變量的值不能改變,定義的方法不能被覆蓋,定義的類不能被繼承finally是異常的統(tǒng)一出口,finallize是垃圾回收前的收尾工作,是Object類定義的5. Anonymous Inner Class是否可以extends,是否可以implements Interface答:允許繼承和實(shí)現(xiàn),因?yàn)槟涿麅?nèi)部類就是在抽象類和接口的基礎(chǔ)上發(fā)展起來的6. Static Nested Class 與Inner Class的區(qū)別答:使用Static定義的Class就是外部類,可以通過外部類. 內(nèi)部類直接訪問而Inner Class是不能被外部訪問的,只能通過外部類的實(shí)例再找到內(nèi)部類實(shí)例。7. HashMap and HashTable?答:HashMap:1) released in jdk Class 2)采用異步處理方式,性能較高,是非線程安全的 3)允許nullHashTable:1)released in jdk ,old Class 2)采用同步處理方式,性能低,是線程安全的3)不允許null8. assert代表什么?答:asserts是jdk 之后發(fā)布的新關(guān)鍵字,表示斷言,即程序執(zhí)行到某個(gè)地方肯定是預(yù)計(jì)的值,一般開發(fā)很少使用。要使用assert,必須加上 -ea參數(shù)9. gc是什么?答:gc是garbage collection,垃圾回收,使用gc可以進(jìn)行垃圾空間的釋放10. String s = new String("xyz")產(chǎn)生了幾個(gè)對(duì)象?答:一個(gè)匿名對(duì)象xyz,在??臻g內(nèi)。一個(gè)new實(shí)例化的對(duì)象,在堆空間內(nèi)。11. sleep() and wait()?答:sleep()是Thread類定義方法,表示線程的休眠,可以自動(dòng)喚醒wait()方法是Object類定義的方法,需要手動(dòng)notify()和notifyAll()//sleep()不釋放資源,wait()釋放資源12. java中存在goto,但不能使用13.數(shù)組有沒有l(wèi)ength(),String有沒有l(wèi)ength()?答:數(shù)組有l(wèi)ength屬性,String有l(wèi)ength()14. Overload與Override的區(qū)別答:Overload:重載 |- 在一個(gè)類中定義的若干方法 |- 所有的方法名相同,但參數(shù)類型或個(gè)數(shù)不同 |- 只有參數(shù)有關(guān),與返回類型無關(guān)Override:覆寫 |- 在繼承的關(guān)系中 |- 子類定義了父類同名的方法,參數(shù)類型或個(gè)數(shù)最好完全一樣。 |- 訪問權(quán)限不能更嚴(yán)格15. Set里的元素不能重復(fù),用什么方法區(qū)分?==與equals()方法的區(qū)別答:set里的元素是不能重復(fù)的,用iterator()方法來區(qū)分重復(fù)與否,==屬于地址比較, ==用于比較引用和比較基本數(shù)據(jù)類型時(shí)具有不同的功能: 比較基本數(shù)據(jù)類型,如果兩個(gè)值相同,則結(jié)果為true 而在比較引用時(shí),如果引用指向內(nèi)存中的同一對(duì)象,結(jié)果為true 16. 列出常見的 runtime exception答:NumberFormatException/ArrayOutIndexofBoundException/NullPointerException/ClassCastException17. abstract class 和 interface有什么區(qū)別?答:抽象類: |-由抽象方法和常量、變量、全局常量、構(gòu)造方法、普通方法組成 |-使用abstract聲明 |-子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法 |-存在單繼承的局限 |-抽象類可以實(shí)現(xiàn)若干個(gè)接口接口: |-由抽象方法和全局常量組成 |-使用interface關(guān)鍵字 |-子類要通過implements實(shí)現(xiàn)接口,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法 |-一個(gè)子類可以實(shí)現(xiàn)多個(gè)接口 |-接口不能繼承一個(gè)抽象類,但允許繼承多個(gè)接口18. 啟動(dòng)一個(gè)線程要用start(),因?yàn)橐ㄖ猨vm進(jìn)行cpu資源的分配19. try{}里面有一個(gè)return,問finally{}里面的代碼是否執(zhí)行,在什么時(shí)機(jī)執(zhí)行?答:finally{}里面的代碼執(zhí)行,在return之前。20. 寫一個(gè)singleton答:singleton的核心就是構(gòu)造方法私有化,Class,Runtime都采用單例package ;public class Singleton(){ private static final sin = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return sin;}}21. 程序設(shè)計(jì):輸入一組數(shù)字,然后排序輸出答:package ;import ;import ;import ;import ;import ;public class IO {public static void main(String[] args) throws Exception { BufferedReader buf = new BufferedReader(new InputStreamReader()); ("請(qǐng)輸入一組數(shù)字,中間用空格分割:"); String str = (); Set
游走老者
關(guān)鍵字,修飾類,方法,或者成員變量為最終的,使其不可被修改finally可跟在try catch語句或者try語句后使用,表示這個(gè)方法一定會(huì)被執(zhí)行finalize通知垃圾回收機(jī)制回收被finalize標(biāo)示的對(duì)象,但不保證馬上就會(huì)執(zhí)行2.可以繼承也可以實(shí)現(xiàn)接口由于構(gòu)造方法必須與類型一致,所以其沒有構(gòu)造方法,繼承有參構(gòu)造方法必須調(diào)用父類的直接new interface就是實(shí)現(xiàn)接口 Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內(nèi)部類與C++嵌套類最大的不 同就在于是否有指向外部的引用上4.&&短路與,當(dāng)兩個(gè)條件,如a>b&&b>c,中a>b為假時(shí)b>c這個(gè)語句不會(huì)被執(zhí)行而直接返回false&兩個(gè)條件都會(huì)被執(zhí)行5.最重要區(qū)別是hashtable是線程安全的(同步)而hashMap不是。。 層次結(jié)構(gòu)中的根接口,而Collections是一個(gè)工具類,它包含有各種有關(guān)集合操作的靜態(tài)方法7.系統(tǒng)測(cè)試的時(shí)候8.垃圾回收機(jī)制,因?yàn)閖ava不能手動(dòng)清理內(nèi)存,而內(nèi)存不清理系統(tǒng)資源會(huì)被耗盡,所以要有GC9.兩個(gè),String pool一個(gè)"xyz",堆里面一個(gè)String 對(duì)象 ,s1自動(dòng)轉(zhuǎn)換成int類型,其結(jié)果返回一個(gè)int,所以報(bào)錯(cuò)在睡眠一段時(shí)間后會(huì)自己醒來,而wait不能,它必須別的線程喚醒它(notify或者notifyAll)有標(biāo)簽但是沒goto14.數(shù)組沒length()方法只有l(wèi)ength這個(gè)屬性,String有15.方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被“屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。16.用equals ==只判斷內(nèi)存地址是否一致,而equals判斷是否引用的是同一個(gè)對(duì)象 數(shù)組越界NullPointerException 空指針異常SystemException 系統(tǒng)異常表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。 exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況,Set是 Map不是 class可以有實(shí)現(xiàn)方法interface不能21.都不能22.都可以()24.可以25.不可以,String 是final26.不能27.會(huì),先執(zhí)行finally里的,再<<329.如果不重寫方法是不可以,但是重寫了就難說30.引用可以,因?yàn)槠淇梢宰詣?dòng)轉(zhuǎn)換成int類型,其他都不可以 class Singleton{ private Singleton(){} //在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪? //注意這是private 只供內(nèi)部調(diào)用 private static Singleton instance = new Singleton(); //這里提供了一個(gè)供外部訪問本class的靜態(tài)方法,可以直接訪問 public static Singleton getInstance() { return instance; } } 第二種形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次 //使用時(shí)生成實(shí)例,提高了效率! if (instance==null) instance=new Singleton();return instance; } }
郁敏0729
錯(cuò)誤的地方: 一、4和5行,超出了byte類型的范圍(-128~127); 二、全局整型變量x,y在聲明時(shí)沒有聲明為static導(dǎo)致18,20,22行中用到變量x和y的地方都錯(cuò)了。不能在static塊中引用非static成員。三、check方法上可能看得出是返回一個(gè)boolean類型的變量,但是在程序中返回操作都放在了if語句塊中,那么如果沒有一個(gè)if語執(zhí)行的話,就沒有返回值了,所以應(yīng)該加上一個(gè)默認(rèn)的返回值。。。 四、28,29行錯(cuò)誤,那兩個(gè)變量都是final的,當(dāng)然不能再改變其值了。。。。。。 五、32,35行的case處,用case時(shí),必須返回一個(gè)常量,整型,或是枚舉類型,修改方法有兩個(gè),(1)上面不是定義了這兩個(gè)整型的值嗎,直接case 0,case 1,(2)在上面的定義處,加上final. 不妥的地方: 一、定義角色橫坐標(biāo),角色縱坐標(biāo)變量時(shí),最好放到方法里面,因?yàn)槟愕慕巧赡苡卸鄠€(gè)實(shí)例,每個(gè)實(shí)例會(huì)有自己的坐標(biāo),而static不是屬于某個(gè)實(shí)例的,而是屬于整個(gè)整的。所有的角色只能共用一對(duì)坐標(biāo),感覺不妥啊。。。其他全局變量也一樣,可以再細(xì)考慮一下。。 二、多加點(diǎn)注釋,,別人可能不會(huì)看check方法里幾個(gè)if是干什么的,費(fèi)時(shí)間(各人觀點(diǎn))。
劉小賤愛花錢
什么是面向?qū)ο?,重載(overloading)是什么,繼承(inheritance)是什么等等。一般這類基礎(chǔ)又重要的知識(shí)點(diǎn)是經(jīng)常被問到的,回答的時(shí)候不需要背書般的回答,面試官最希望聽到的是你結(jié)合實(shí)例來概括這類知識(shí)。
瑤瑤瑤姚
1、說出Servlet 的生命周期,并說出Servlet 和CGI 的區(qū)別?答:Web 容器加載Servlet 并將其實(shí)例化后,Servlet 生命周期開始,容器運(yùn)行其init方法進(jìn)行Servlet的初始化,請(qǐng)求到達(dá)時(shí)運(yùn)行其service 方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX 方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。與cgi 的區(qū)別在于servlet 處于服務(wù)器進(jìn)程中,它通過多線程方式運(yùn)行其service 方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI 對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。2、forward 和redirect 的區(qū)別?答:forward 是容器中控制權(quán)的轉(zhuǎn)向,是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL 的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。redirect 就是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址,一般來說瀏覽器會(huì)用剛才請(qǐng)求的所有參數(shù)重新請(qǐng)求,所以session,request 參數(shù)都可以獲取,并且從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。前者更加高效,在前者可以滿足需要時(shí),盡量使用forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接;在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用sendRedirect()方法。3、JSP 中動(dòng)態(tài)INCLUDE 與靜態(tài)INCLUDE 的區(qū)別?答:動(dòng)態(tài)INCLUDE 用jsp:include 動(dòng)作實(shí)現(xiàn)
陳家小魚兒
你就開空頭支票吧!我前天看了一個(gè)人總結(jié)的題,很不錯(cuò)的,可是忘記網(wǎng)址了!1 final, finally, finalize final 關(guān)鍵字,表明變量,方法的性質(zhì),不可修改 finally 表明這個(gè)方法一定會(huì)被執(zhí)行。 finalize gc的一種垃圾回收方法。2 都不能,因?yàn)闆]有類名!3,4,5,6都有,搜一下。7 測(cè)試的時(shí)候。8 gc是垃圾收集器,因?yàn)閖ava的對(duì)象銷毀都是自動(dòng)由gc完成的。9 2個(gè)10 s1 = s1 + 1其中s1 + 1的類型是int要顯示的轉(zhuǎn)化成short。不寫了,有事!
優(yōu)質(zhì)工程師考試問答知識(shí)庫(kù)