Java程序員面試是必過的一關(guān),如果能在面試前做好充足的準(zhǔn)備,就離高薪更近一些,本文總結(jié)Java程序員常見面試題及答案,快來學(xué)學(xué)吧。
第一,anonymousinnerclass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?
不行,對于匿名內(nèi)部類,看到的一句話說的很到位:
new <類或接口> <類的主體>
這種形式的new語句聲明一個新的匿名類,他對一個給定的類進(jìn)行擴(kuò)展,或?qū)崿F(xiàn)一個給定的接口。他還創(chuàng)建那個類的一個新實(shí)例,并把他作為語句的結(jié)果而返回。
這就是匿名類的實(shí)質(zhì),它本身就是一個類的繼承或一個接口的實(shí)現(xiàn),所以繼承其它類或借口是無意義的.在eclipse中冶證實(shí)了我的想法.無論是繼承其它類還是實(shí)現(xiàn)其它借口都顯示Syntax error on token。
第二,staticnestedclass和innerclass的不同,說得越多越好(面試題有的很籠統(tǒng))。
static nested class 指靜態(tài)嵌套類,或稱嵌套類,是C++中常用的說法,inner class指內(nèi)部類,是JAVA中的說法。
內(nèi)部類是一個類內(nèi)部類的統(tǒng)稱,具體分為四種:成員類,靜態(tài)成員類,局部類,匿名類。其中匿名類是局部類的特殊情況。對于成員類和靜態(tài)成員類都存在于類的頂層代碼中。相當(dāng)于類的靜態(tài)方法和非靜態(tài)方法的關(guān)系。區(qū)別在于成員類依賴于類實(shí)例而靜態(tài)成員類不依賴。
所以前者只能訪問實(shí)例方法和成員而后者只能訪問靜態(tài)方法和成員。它們都用于創(chuàng)建一個只和當(dāng)前類有關(guān)。和其它類無關(guān)的依賴類.是否靜態(tài)取決于是否依賴類的實(shí)例。局部類相當(dāng)于局部變量。存在于類的局部代碼中。相當(dāng)于在main()中隨意定義和使用類。
唯一的不同是它只能使用final型的局部變量。這和垃圾回收機(jī)制有關(guān)。即局部變量會在代碼塊結(jié)束后被回收。而對象不一定。所以對象只能使用final的局部變量。
同樣,局部類存在的局部代碼塊也可以有靜態(tài)和非靜態(tài)的差別。局部類罪常見的應(yīng)用就是匿名類。匿名類就是無名子的局部類。常在SWING設(shè)計(jì)中的添加監(jiān)聽中出現(xiàn)。
static nested class相當(dāng)于inner class中的靜態(tài)成員類。
第三,&和&&的區(qū)別。
這個問得很少。
&和^,<<,<<<,|同屬于位運(yùn)算符,其中&是按位與,例如,1&1=1,1&0=0,&&是邏輯運(yùn)算符,處理真假值,例如,true&&true=true。
如果你想學(xué)習(xí)Java可以來這個群,首先是二二零,中間是142,最后是906,里面可以學(xué)習(xí)和交流,也有資料可以下載。
第四,hashmap和hashtable的區(qū)別。
常問。
hashmap可以看做是hashtable的替代者,HashMap的Value和Key都可為NULL,而HashTable不可以,同時,HashTable是線程同步的,而HashMap不是.HashTable用Iterator遍歷,HashMap用Enumeration遍歷。HashTable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)。計(jì)算index的方法不同,HashTable直接利用hashcode()得出,HashMap對hashcode重新計(jì)算得出。
第五,collection和collections的區(qū)別。
你千萬別說一個是單數(shù)一個是復(fù)數(shù)。
collection是結(jié)合類的上級接口,子接口有List和Set等,Collections是java.util下的一個工具類,提供一些列靜態(tài)方法對集合搜索排序線程同步化等。
第六,什么時候用assert。
api級的技術(shù)人員有可能會問這個。
在調(diào)試和優(yōu)化中使用,用于判斷邏輯表達(dá)式真假,若為假,終止程序并返回異常.assert比if的優(yōu)點(diǎn)在于可以選擇是否開啟assert檢查,也就是說assert產(chǎn)生的測試代碼可以在正式發(fā)布時候選擇忽略,這帶來極大便利,默認(rèn)assert檢查是關(guān)閉的。此外,Junit相比assert來說,有著相似但更強(qiáng)大的測試能力。
第七,gc是什么?為什么要有g(shù)c?
基礎(chǔ)。
GC 即 garbage collection(垃圾收集),是JAVA用于回收內(nèi)存的一種方式,主要的實(shí)現(xiàn)方法有引用計(jì)數(shù),標(biāo)記回收,復(fù)制清除等,GC可以避免內(nèi)存泄露和堆棧溢出,有效提高內(nèi)存的利用效率,同時將程序員從繁瑣的內(nèi)存管理中釋放出來。
第八,string s=new string("xyz");創(chuàng)建了幾個stringobject?
2個,文字池中1個,堆中1個,先在文字池中創(chuàng)建1個"xyz"對象,再在堆中拷貝一個"xyz"對象,并將其賦給引用s。
第九,math.round(11.5)等於多少?math.round(-11.5)等於多少?
Math.round(x)相當(dāng)于(int)Math.floor(x+o.5f),
故math.round(11.5)=Math.floor(11.5+0.5)=Math.floor(12)=12;
Math.round(-11.5)=Math.floor(-11)=-11;
第十,short s1=1;s1=s1+1;有什么錯?short s1=1;s1+=1;有什么錯?
面試題都是很變態(tài)的,要做好受虐的準(zhǔn)備。
s1=s1+1會出錯,s1+1是int型,不能將int賦值給s1.需要顯示轉(zhuǎn)換,s1=(int)(s1+1).而s1+=1不會出錯,至于原因,有人說和編譯器的機(jī)制有關(guān),需要看編譯原理,話說編譯原理什么的最討厭了,就這樣吧。
第十一,sleep()和wait()有什么區(qū)別?
搞線程的最愛。
1,sleep()是java.lang.Thread中的靜態(tài)方法,wait()是java.lang.Object中的方法;
2,sleep()用作當(dāng)前線程阻塞自己,并在制定時間后恢復(fù),wait()用于當(dāng)前線程決定其他線程阻塞,是線程通信的表現(xiàn);
3,sleep()不釋放資源,wait()釋放資源;
4,sleep()必須捕獲異常,而wait()不需要。
第十二,java有沒有g(shù)oto?
很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進(jìn)這家公司。
goto是java的關(guān)鍵字,但java不支持goto,goto會影響程序的可讀性,使邏輯顯得混亂。我的這本java教程上說因?yàn)橥瑯拥脑?要盡量少用continue和break,且可以用等價的無continue/break循環(huán)代替,更不要說goto了...總之一句話,java不支持goto。
第十三,數(shù)組有沒有l(wèi)ength()這個方法?string有沒有l(wèi)ength()這個方法?
數(shù)組無,數(shù)組是成員變量,length.String是成員函數(shù)length();我不知道這個題意義何在,平時都用eclipse的,會在意這個么...
第十四,overload和override的區(qū)別。overloaded的方法是否可以改變返回值的類型?
常問。
我寫的一篇隨筆詳細(xì)說明了重載,重寫和多態(tài)之間的關(guān)系,返回值類型不包含在函數(shù)簽名中,所以只有返回值不同的重載不成立。
第十五,set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用hashcode()還是equals()?它們有何區(qū)別?
這個屬于集合類的查找機(jī)制問題,在集合類中,確定兩個元素是否相同,是用equals方法進(jìn)行比較,hashcode的存在在于可以給元素快速分配一個index來存儲?梢詫ollection看做很多個大箱子,index是箱子的編號,先將要扔進(jìn)去的物品進(jìn)行hash確定index,扔進(jìn)響應(yīng)箱子,然后再喝箱子里德其它物品equals()來比較是否相同。
此外,相等的物品一定具有相同的hashcode,不等的物品不一定。具有相同hashcode的元素不一定相等。不同的hashcode的元素肯定不等。以上規(guī)則可以想象一下相等物品一定要分在同一個箱子中的情況。
第十六,給我一個你最常見到的runtimeexception。
如果你這個答不出來,面試的人會認(rèn)為你沒有實(shí)際編程經(jīng)驗(yàn)。
NullPointerException,空引用異常.說實(shí)話,中軟的筆試題就有這個,我連題目意思都理解錯了,壓根沒認(rèn)出來runtime exception是指運(yùn)行時異常。
第十七,error和exception有什么區(qū)別?
為什么水的題最容易出現(xiàn)?
感覺這個題很水,要說C++的話有區(qū)別,感覺JAVA里區(qū)別不大。反正中軟的題目里我就瞎扯了。單純從字面的角度去說,error就是嚴(yán)重的錯誤,像JVM產(chǎn)生的一些錯誤等,會停止程序運(yùn)行或產(chǎn)生錯誤結(jié)果。exception是一定程度上可預(yù)見的錯誤,可以捕獲以及處理。其實(shí)error也可以捕獲...
第十八,list,set,map是否繼承自collection接口?
Collection的子接口包括BeanContext, BeanContextServices, BlockingQueue, List, Queue, Set,SortedSet.不包括Map
差點(diǎn)被某網(wǎng)頁忽悠了,還是JAVA DOC比較專業(yè)。
第十九,abstractclass和interface有什么區(qū)別?
常問。
真的是常問...
抽象類可以有抽象方法和普通方法,也可以有自己的數(shù)據(jù)成員。接口只允許有常量,抽象方法和靜態(tài)類成員。接口可以被多繼承,抽象類不行。接口被實(shí)現(xiàn)時,所有方法必須被重寫。抽象類被繼承時如果有抽象方法沒被重寫,則子類也為抽象類。
第二十,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
abstact方法需要子類重寫,重寫的概念是就實(shí)例方法而言, 所以不能是static。因?yàn)橥辉,要重寫就不能native,抽象方法在抽象類中,無實(shí)例,不能被調(diào)用,也沒有內(nèi)容,所以synchronized沒有意義。abstract方法的修飾符只有private和public。
第二十一,接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承實(shí)體類(concreteclass)?
接口可以繼承接口,抽象類可以實(shí)現(xiàn)接口,抽象類可以繼承實(shí)體類。換句話說,抽象類除了不能實(shí)例化以外和普通類沒什么區(qū)別。
第二十二,啟動一個線程是用run()還是start()?
用start(),start()會通過調(diào)用run()來實(shí)現(xiàn)多進(jìn)程。
第二十三,構(gòu)造器constructor是否可被override?
構(gòu)造函數(shù)不能被重寫。
第二十四,是否可以繼承string類?
String類為final,不可被繼承。
第二十五,當(dāng)一個線程進(jìn)入一個對象的一個synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法?
多線程編程涉及不多,運(yùn)用到鎖的更是少的可憐
1 可以進(jìn)入此對象其他非同步方法.
2 不可進(jìn)入此對象此同步方法
3 不可進(jìn)入此對象其他同步方法
初級會計(jì)職稱中級會計(jì)職稱經(jīng)濟(jì)師注冊會計(jì)師證券從業(yè)銀行從業(yè)會計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級會計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計(jì)資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計(jì)算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護(hù)士資格證初級護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論