時(shí)間:2018-07-19 00:00:00 來源:信盈達(dá) 作者:信盈達(dá)
學(xué)習(xí)完課程之后緊接著就是面試找工作,去應(yīng)聘面試會遇到什么問題呢?信盈達(dá)小編整理了一份面試問題,方便大家了解面試問題
1、一個(gè)".java"源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制?
可以有多個(gè)類,但只能有一個(gè)public的類,并且public的類名必需與文件名相一致。
2、Java有沒有g(shù)oto?
3、說說&和&&的區(qū)別。
&和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí),整個(gè)運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。
&&還具有短路的功能,即假如第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式,例如,對于if(str!= null&& !str.equals(s))表達(dá)式,當(dāng)str為null時(shí),后面的表達(dá)式不會執(zhí)行,所以不會泛起NullPointerException假如將&&改為&,則會拋出NullPointerException異常。If(x==33 &++y>0) y會增長,If(x==33 && ++y>0)不會增長
&還可以用作位運(yùn)算符,當(dāng)&操縱符兩邊的表達(dá)式不是boolean類型時(shí),&表示按位與操縱,我們通常使用0x0f來與一個(gè)整數(shù)進(jìn)行&運(yùn)算,來獲取該整數(shù)的最低4個(gè)bit位,例如,0x31 & 0x0f的結(jié)果為0x01。
4、在JAVA中如何跳出當(dāng)前的多重嵌套輪回?
在Java中,要想跳出多重輪回,可以在外面的輪回語句前定義一個(gè)標(biāo)號,然后在里層輪回體的代碼中使用帶有標(biāo)號的break語句,即可跳出外層輪回。
例如:
for(int i=0;i<10;i++){ for(intj=0;j<10;j++){ System.out.println(“i=” + i + “,j=” + j); if(j == 5) break ok; } }
另外,我個(gè)人通常并不使用標(biāo)號這種方式,而是讓外層的輪回前提表達(dá)式的結(jié)果可以受到里層輪回體代碼的控制,例如,要在二維數(shù)組中查找到某個(gè)數(shù)字。
int arr[][] ={{1,2,3},{4,5,6,7},{9}}; boolean found = false; for(int i=0;i
5、switch語句能否作用在byte上,能否作用在long上,能否作用在String上?
在switch(e)中,e只能是一個(gè)整數(shù)表達(dá)式或者枚舉常量(更大字體),整數(shù)表達(dá)式可以是int基本類型或Integer包裝類型,因?yàn)閎yte,short,char都可以隱含轉(zhuǎn)換為int,所以,這些類型以及這些類型的包裝類型也是可以的。顯然,long和String類型都不符合switch的語法劃定,并且不能被隱式轉(zhuǎn)換成int類型,所以,它們不能作用于swtich語句中。
switch語句能否作用在String上說錯(cuò)了,Java1.7之后已經(jīng)支持這種寫法了!
6、short s1= 1; s1 = (s1+1是int類型,而等號左邊的是short類型,所以需要強(qiáng)轉(zhuǎn))1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?(沒有錯(cuò))
對于short s1= 1; s1 = s1 + 1;因?yàn)閟1+1運(yùn)算時(shí)會自動晉升表達(dá)式的類型,所以結(jié)果是int型,再賦值給short類型s1時(shí),編譯器將講演需要強(qiáng)制轉(zhuǎn)換類型的錯(cuò)誤。
對于short s1= 1; s1 += 1;因?yàn)?+=是java語言劃定的運(yùn)算符,java編譯器會對它進(jìn)行特殊處理,因此可以準(zhǔn)確編譯。
7、char型變量中能不能存貯一個(gè)中文漢字?為什么?
char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以,char型變量中當(dāng)然可以存儲漢字啦。不外,假如某個(gè)特殊的漢字沒有被包含在unicode編碼字符集中,那么,這個(gè)char型變量中就不能存儲這個(gè)特殊漢字。增補(bǔ)說明:unicode編碼占用兩個(gè)字節(jié),所以,char類型的變量也是占用兩個(gè)字節(jié)。
8、用最有效率的方法算出2乘以8等於幾?
2<< 3,(左移三位)由于將一個(gè)數(shù)左移n位,就相稱于乘以了2的n次方,那么,一個(gè)數(shù)乘以8只要將其左移3位即可,而位運(yùn)算cpu直接支持的,效率最高,所以,2乘以8等於幾的最效率的方法是2<< 3。
9、使用final樞紐字潤飾一個(gè)變量時(shí),是引用不能變,仍是引用的對象不能變?
使用final樞紐字潤飾一個(gè)變量時(shí),是指引用變量不能變,引用變量所指向的對象中的內(nèi)容仍是可以改變的。例如,對于如下語句:
finalStringBuffer a=new StringBuffer("immutable");
執(zhí)行如下語句將講演編譯期錯(cuò)誤:
a=new StringBuffer("");
但是,執(zhí)行如下語句則可以通過編譯:
a.append(" broken!");
有人在定義方法的參數(shù)時(shí),可能想采用如下形式來阻止方法內(nèi)部修改傳進(jìn)來的參數(shù)對象:
public void method(final StringBuffer param){
}
實(shí)際上,這是辦不到的,在該方法內(nèi)部仍舊可以增加如下代碼來修改參數(shù)對象:
param.append("a");
10,靜態(tài)變量和實(shí)例變量的區(qū)別?
在語法定義上的區(qū)別:靜態(tài)變量前要加static樞紐字,而實(shí)例變量前則不加。
在程序運(yùn)行時(shí)的區(qū)別:實(shí)例變量屬于某個(gè)對象的屬性,必需創(chuàng)建了實(shí)例對象,其中的實(shí)例變量才會被分配空間,才能使用這個(gè)實(shí)例變量。靜態(tài)變量不屬于某個(gè)實(shí)例對象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實(shí)例對象,靜態(tài)變量就會被分配空間,靜態(tài)變量就可以被使用了。總之,實(shí)例變量必需創(chuàng)建對象后才可以通過這個(gè)對象來使用,靜態(tài)變量則可以直接使用類名來引用。
例如,對于下面的程序,不管創(chuàng)建多少個(gè)實(shí)例對象,永遠(yuǎn)都只分配了一個(gè)staticVar變量,并且每創(chuàng)建一個(gè)實(shí)例對象,這個(gè)staticVar就會加1;但是,每創(chuàng)建一個(gè)實(shí)例對象,就會分配一個(gè)instanceVar,即可能分配多個(gè)instanceVar,并且每個(gè)instanceVar的值都只自加了1次。
public class VariantTest{ publicstatic int staticVar = 0; publicint instanceVar = 0; publicVariantTest(){ staticVar++; instanceVar++; System.out.println(staticVar +instanceVar); } }
信盈達(dá)2008年在深圳特區(qū)南山高新科技園成立。自成立至今近九年來專注為企業(yè)和個(gè)人提供高端方案設(shè)計(jì)、高端嵌入式/Android培訓(xùn)等服務(wù)。公司下設(shè)信盈達(dá)實(shí)訓(xùn)學(xué)院、信盈達(dá)研發(fā)中心、信盈達(dá)教學(xué)儀器三大業(yè)務(wù)板塊。九年來公司堅(jiān)持"技術(shù)領(lǐng)先、服務(wù)領(lǐng)先",以雄厚的實(shí)力和專業(yè)的品質(zhì)成為國內(nèi)唯一有實(shí)力從產(chǎn)品最底層研發(fā)到系統(tǒng)層開發(fā)的嵌入式實(shí)訓(xùn)、產(chǎn)品解決方案提供商。為中國IT行業(yè)提供最具價(jià)值的職業(yè)教育服務(wù)。專業(yè)培訓(xùn)i嵌入式、物聯(lián)網(wǎng)、人工智能、Java、單片機(jī)等課程,想了解更多信息點(diǎn)擊立馬咨詢
免費(fèi)領(lǐng)取試聽卡
申請已經(jīng)提交
老師會馬上給您安排試聽課程!
申請出錯(cuò)了
您可以加老師QQ:914865590報(bào)名咨詢!