企業(yè)面試題集綿_第1頁
企業(yè)面試題集綿_第2頁
企業(yè)面試題集綿_第3頁
企業(yè)面試題集綿_第4頁
企業(yè)面試題集綿_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、(一)Java中有沒有g(shù)oto關(guān)鍵字?(二)基本數(shù)據(jù)類型有哪些?String是不是基本數(shù)據(jù)類型?基本數(shù)據(jù)類型:byte,char,short,int,long,float,double,booleanString不屬于基本數(shù)據(jù)類型?因為String是一個類(java.lang.String)(三)shorts1=1;s1=s1+1;有什么錯?shorts1=1;s1+=1;有什么錯?1)對于shorts1=1;s1=s1+1;由于s1+1運算時會自動提升表達式的類型,所以結(jié)果是int型,再賦值給short類型s1時,編譯器將報告需要強制轉(zhuǎn)換類型的錯誤。2)對于shorts1=1;s1+=1;由

2、于+=是java語言規(guī)定的運算符,java編譯器會對它進行特殊處理,因此可以正確編譯。(四)char型變量中能不能存貯一個中文漢字?為什么?char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以,char型變量中當(dāng)然可以存儲漢字啦。不過,如果某個特殊的漢字沒有被包含在Unicode編碼字符集中,那么,這個char型變量中就不能存儲這個特殊漢字。補充說明:Unicode編碼占用兩個字節(jié),所以,char類型的變量也是占用兩個字節(jié)。(五)自增+和自減-:i. 后+,后-?變量的原值先被使用或輸出后,變量的值再自增或自減。intage=20;System.out

3、.println(age+);ii. 刖+,刖-?變量值先自增或自減后,變量的新值再參與運算或輸出,其優(yōu)先級高。intage=20;System.out.println(-age);(六)&與&&的區(qū)別。a) &和&&都可以用作邏輯與的運算符,表示邏輯與(and),當(dāng)運算符兩邊的表達式的結(jié)果都為true時,整個運算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為falseo?b) &&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,&還可以用作位運算符,當(dāng)&操作符兩邊的表達式不是b

4、oolean類型時,&表示按位與操作。(七)=與equals()方法的區(qū)別?a)=對于基本類型比較的是其值是否相同,對于引用類型比較的是對象的地址是否相同。b)equals()方法比較的是兩個對象的內(nèi)容是否相等,如果兩個對象的地址相等那么必定是同一對象其內(nèi)容也就必定相等;如果兩個對象的地址不相等但需要確定內(nèi)容相等時我們需要重寫equal()方法,在該方法中編寫確定對象內(nèi)容相等的規(guī)則代碼。 這里嗯荒妾跳、到J7M對手符S的號配機例,這卡StLingEtz-方式回建的字特中JVMa把它放在GN中一個稱作龕景池的內(nèi)存區(qū)域* 當(dāng)船建fingstcZ="jamds"才時而8套

5、先菊常量池看吉是落后布寺內(nèi)奪的后"ing.如果有批不創(chuàng)點了 亙技使用之,即樗mtG的地址與mtr指向的相同. 如是是瑟本散落壬至的值比較如:1g,dwblE,介”1等可以支線中一吉了比較.*/£tringst工='j=it-三s'tStringstcS="一舊:ifl3tr=st.r2)/比切.忖力的蛀址昌¥六口:71.仃11一口七51:171廣兩亍花tr喧:«li«Syftmm.ouH.pEiRtlnrK:-士產(chǎn)聲不中昔System.out.printin(""):stringstr3=newST

6、rir.21("jam>e?sn);tiLrj-TL-uEtr4"newSt-rjCJ<±iniP,);li(str3-5tr4JFyiu.out»p£inclTi(i':-衿牛日W”卜els0Fya-out.prinlnf-手法由F喟等”);Sy5Zsa.out.print上口*-*"7iftstrS.squdLe(Etr41)門口輕刑急的大考是否相¥£ystem,out,printin廠商企字符隼相絲"j;alaa3丫£工?。?;1.0112.pr工電:1理'占亨匚

7、營卜"3號”>;“忌笏r-比較19等的對象,內(nèi)容一定相等:口:ju&rj相等的地址不一定由同.(八)打印各種三角形:參看Triangle.java類(九)按值傳遞與按引用傳遞的區(qū)別?(十)靜態(tài)與非靜的區(qū)別1)變量和方法的分類:a) 變量的分類有兩種:i. 靜態(tài)變量(也叫類變量):變量值被該類的所有對象共享。ii. 非靜態(tài)變量(也叫實例變量、屬性):其值只屬于單個對象。b) 方法的分類有兩種:i. 靜態(tài)方法(也叫類方法):此種方法被所有該類的對象共享。ii. 非靜態(tài)方法(也叫實例方法):此種方法對該類的所有對象都是獨立的。2)要理解static的作用,首先對內(nèi)存區(qū)域有所了

8、解:JVM內(nèi)存里分四個區(qū)域:a) codesegment代碼段(存放代碼)b) datasegment數(shù)據(jù)段(存放靜態(tài)變量、常量)c) Stack棧(存放局部變量,對象地址)d) Heap堆(存放new出來的對象或者數(shù)組)(H一)靜態(tài)初始化塊與初化塊的不同靜態(tài)初始化代碼塊,這里的代碼會在類被裝載到JVM后馬上執(zhí)行。初始化塊,會在對象被創(chuàng)建出來以后執(zhí)行。創(chuàng)建多個對象時靜態(tài)初始化代碼塊只會執(zhí)行一次。靜態(tài)燈始七代嶼塊不同publicclassstaticccdeuiackoemo丁好態(tài)初始化代乂塊,這里的代碼會在類被裝載到3Y后馬上執(zhí)行staticf"初始化代碼三¥3七工.out

9、.pii口tlu廠靜態(tài)初始化代碼塊!",;6V'"初始化抉,會在對象被創(chuàng)律出來以后執(zhí)行11(Syutet-.outsprintIn(初始化代t烏塊!")t13 114lipublicstaticvoidmain(string1a.rgs)揩Ma3裝載到JVMff寸叮靜態(tài)初始化代碼塊"就會執(zhí)行,且只執(zhí)行一次clazz=StaticCpdeBlQCDemo-clas;IE19在創(chuàng)建對象時”初始化塊”每次都會執(zhí)行StaticCodeBLockDemosobd2=nevStatIcCodeBlockDeiuo()fStaticCodeBlockDemo&

10、#174;cbd3=newStaticCodeBlockDemo();(十二)Java這種面向?qū)ο蟮木幊陶Z言有四大特性:a)抽象:是將現(xiàn)實世界中的事物描述為系統(tǒng)中的類、對象及方法的過程,在這個過程中去除了不相關(guān)數(shù)據(jù)和信息,保留的數(shù)據(jù)用來實現(xiàn)系統(tǒng)特定功能。b)封裝:是將對象的實現(xiàn)細(xì)節(jié)隱藏起來(用戶無需知道這些細(xì)節(jié)),通過抽象將對象的屬性和方法封裝在一個Java類文件中,只提供一些公共的方法將對象的功能展現(xiàn)出來。c)繼承:繼承是面向?qū)ο髮崿F(xiàn)軟件復(fù)用的重要手段。描述出事物間具有父子類關(guān)系的一種技術(shù),滿足“is-a”是一個的關(guān)系;父類的屬性和方法可用于子類等優(yōu)點。利用繼承,人們可以基于已存在的類構(gòu)建一

11、個新類,子類繼承已存在的類就是重用父類的方法和屬性,除此之外,子類還可以添加一些新的方法和屬性來滿中新的需求。d)多態(tài)性:多態(tài)是指通過父類型的變量引用不同的子類對象(也就是說子類對象可以直接賦值給父類變量),來動態(tài)調(diào)用在不同子類中實現(xiàn)的方法。Java引用變量有兩種類型,分別是編譯時類型和運行時類型,編譯時類型由聲明類型決定,運行時類型由賦值對象的類型決定。如果編譯時類型和運行類型不一致,就會出現(xiàn)所謂多態(tài)。(十三)談?wù)勈裁词嵌鄳B(tài)性?a) 可以這樣理解:多態(tài)是指通過父類型的變量引用不同的子類對象(也就是說父類型變量指向的是一個子類對象,JVM會在運行時動態(tài)的綁定父類型變量所指向的子類對象)來調(diào)用在

12、不同子類中實現(xiàn)的方法。b) 繼承和抽象類、接口都是多態(tài)性的實現(xiàn)技術(shù)。c) 多態(tài)有利于代碼的靈活性和擴展性。d) 多態(tài)包括方法重寫和方法重載。(十四)什么是抽象類?a) 為什么要抽象類:當(dāng)父類的某些操作存在不確定性時,就應(yīng)該將這樣的類定義成抽象類。b) 抽象類使用abstract關(guān)鍵聲明,有抽象方法的類一定是抽象類;但抽象類不一定就包含有抽象方法,理由是強迫開發(fā)人員一定從該類進行繼承。c) 抽象類普通的類沒有什么大的區(qū)別,只是多了抽象方法,抽象類可以有屬性,普通方法,靜態(tài)的東西(屬性、方法)。d) 子類應(yīng)該將父類的抽象方法進行實現(xiàn),如果子類沒有實現(xiàn)抽象方法那么它也是抽象類。e) 注意:抽象不能n

13、ew出對象(十五)(重要)談?wù)劤橄箢惡徒涌诘膮^(qū)別:a) abstractclass在Java語言中表示的是一種繼承關(guān)系,一個類只能使用一次繼承關(guān)系。但是,一個類卻可以實現(xiàn)多個interfaceo這彌補了類的多繼承問題。b) 在abstractclass中可以有自己的數(shù)據(jù)成員,也可以有非abstract的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(常量:也就是必須是staticfinal的),所有的成員方法都是abstract的。c) abstractclass和interface所反映出的設(shè)計理念不同。其實abstractclass表示的是"is-a&qu

14、ot;關(guān)系,interface表示的是"has-a"關(guān)系。注意:當(dāng)一個行為與一個類的所屬行為方法不相關(guān)聯(lián)時,應(yīng)該采用接口來實現(xiàn)這個行為,不能使用抽象類,否則違反面向?qū)ο蟮腎SP(InterfaceSegregationPrinciple)規(guī)則和OCP(OpenClosePrinciple)原貝U。d) 接口中的方法默認(rèn)都是publicabstract的。(十六)使用編碼對JVM做垃圾回收有幾種方式:a)調(diào)用Object.finalize()b) Runtime.gc():運行垃圾回收器。c) System.gc():運行垃圾回收器(十七)使用final關(guān)鍵字修飾一個變量時,

15、是引用不能變,還是引用的對象不能變?使用final關(guān)鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中的內(nèi)容還是可以改變的。例如,對于如下語句:finalStringBuffera=newStringBuffer("immutable");執(zhí)行如下語句將報告編譯期錯誤:a=newStringBuffer("");但是,執(zhí)行如下語句則可以通過編譯:a.append("broken!");有人在定義方法的參數(shù)時,可能想采用如下形式來阻止方法內(nèi)部修改傳進來的參數(shù)對象:publicvoidmethod(finalStringBuf

16、ferparam)實際上,這是辦不到的,在該方法內(nèi)部仍然可以增加如下代碼來修改參數(shù)對象:param.append("a");(十八)如何實現(xiàn)單例模式:a)懶漢式仃忸法式,單值模式pxivat*staticSi_ng1ecnPatterne=n«wSingletonFateri()privatesingletoaPatternU)publicstatic5inqletorPatternetinstsnce()I工fastaijje;b)俄漢式(比懶漢式更常用一些)/懶漢式一單例靛式privatestaticsinjletonPattrnSinstance=null;

17、privateSingLetonPattern2_(HJpublicstaticSir.jletDnPittern2ytLliiLdricti();Ifijistance-null)1;二5f與廣口e=newSingleton?atterr2i;1,turninstance;|(十九)super.getClass(彷法調(diào)用下面程序的輸出結(jié)果是多少?importjava.util.Date;publicclassTestextendsDatepublicstaticvoidmain(String口args)newTest().test();publicvoidtest()/java.lang.C

18、lasscls=super.getClass();System.out.println(super.getClass().getName();很奇怪,結(jié)果是Test這屬于腦筋急轉(zhuǎn)彎的題目,在一個qq群有個網(wǎng)友正好問過這個問題,我覺得挺有趣,就研究了一下,沒想到今天還被你面到了,哈哈。在test方法中,直接調(diào)用getClass().getName()方法,返回的是Test類名,由于getClass(而Object類中定義成了Anal,子類不能覆蓋該方法,所以,在test方法中調(diào)用getClass().getName()方法,其實就是在調(diào)用從父類繼承的getClass()方法,等效于調(diào)用super

19、.getClass().getName()方法,所以,super.getClass().getName()方法返回的也應(yīng)該是Test。如果想得到父類的名稱,應(yīng)該用如下代碼:getClass().getSuperClass().getName();(二十)(面試常見)ArrayList與LinkedList的性能區(qū)另1J:隨機獲取兀素(隨便獲取指定位置上的兀素)插入或刪除兀素ArrayList好差LinkedList差好(二H一)HashMap與HashTable的區(qū)另1?(二十二)怎樣實現(xiàn)一個線程?有幾種方法?(二十三)談?wù)勬i的概念,什么是死鎖?(二十四)什么是同步?(二十五)sleep()方法與wait()方法的區(qū)別(非常重要)a)線程調(diào)用了sleep()方法,當(dāng)前線程進入睡眠,但不會釋放所占用資源對象的鎖。在sleep時間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行(其它線程可能沒執(zhí)行完)。1. sleep()是線程的靜態(tài)方法b)線程調(diào)用了它所占用資源對象的wait()時,使當(dāng)前線程進入等待隊列,同時釋放所占用資源對象的鎖。直到其他線程調(diào)用此資源對象上的notify()方法喚醒一個等待線程或notifyAll()方法喚醒所有等待資源對象的線程。i. wa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論