對(duì)于很多初入編程行業(yè)的程序員來(lái)說(shuō)水评,第一次面試編程工作時(shí)是最緊張最無(wú)助的,因?yàn)樗麄儚膩?lái)沒(méi)有面試過(guò)這類(lèi)工作昼伴,不知道主考官會(huì)問(wèn)什么茶袒。那么一般初級(jí)Java面試時(shí)會(huì)問(wèn)哪些問(wèn)題呢?優(yōu)效學(xué)院在這里為大家準(zhǔn)備了20道經(jīng)典Java面試基礎(chǔ)題。
1哈蝇、如果main方法被聲明為private會(huì)怎樣?
能正常編譯棺妓,但運(yùn)行的時(shí)候會(huì)提示”main方法不是public的”。
2炮赦、說(shuō)說(shuō)&和&&的區(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á)式,例如鸡挠,對(duì)于if(str != null&& !str.equals(“”))表達(dá)式辉饱,當(dāng)str為null時(shí),后面的表達(dá)式不會(huì)執(zhí)行拣展,所以不會(huì)出現(xiàn)NullPointerException如果將&&改為&彭沼,則會(huì)拋出NullPointerException異常。If(x==33 &++y>0) y會(huì)增長(zhǎng)备埃,If(x==33 && ++y>0)不會(huì)增長(zhǎng)
&還可以用作位運(yùn)算符姓惑,當(dāng)&操作符兩邊的表達(dá)式不是boolean類(lèi)型時(shí),&表示按位與操作瓜喇,我們通常使用0x0f來(lái)與一個(gè)整數(shù)進(jìn)行&運(yùn)算挺益,來(lái)獲取該整數(shù)的最低4個(gè)bit位,例如乘寒,0x31 & 0x0f的結(jié)果為0x01望众。
備注:這道題先說(shuō)兩者的共同點(diǎn),再說(shuō)出&&和&的特殊之處,并列舉一些經(jīng)典的例子來(lái)表明自己理解透徹深入烂翰、實(shí)際經(jīng)驗(yàn)豐富夯缺。
3、如果要重寫(xiě)一個(gè)對(duì)象的equals方法甘耿,還要考慮什么?
hashCode踊兜。
4、Java的”一次編寫(xiě)佳恬,處處運(yùn)行”是如何實(shí)現(xiàn)的?
Java程序會(huì)被編譯成字節(jié)碼組成的class文件捏境,這些字節(jié)碼可以運(yùn)行在任何平臺(tái),因此Java是平臺(tái)獨(dú)立的毁葱。
5垫言、說(shuō)明一下public static void main(String args[])這段聲明里每個(gè)關(guān)鍵字的作用
public: main方法是Java程序運(yùn)行時(shí)調(diào)用的第一個(gè)方法,因此它必須對(duì)Java環(huán)境可見(jiàn)倾剿。所以可見(jiàn)性設(shè)置為pulic.
static: Java平臺(tái)調(diào)用這個(gè)方法時(shí)不會(huì)創(chuàng)建這個(gè)類(lèi)的一個(gè)實(shí)例筷频,因此這個(gè)方法必須聲明為static。
void: main方法沒(méi)有返回值前痘。
String是命令行傳進(jìn)參數(shù)的類(lèi)型凛捏,args是指命令行傳進(jìn)的字符串?dāng)?shù)組。
6芹缔、使用final關(guān)鍵字修飾一個(gè)變量時(shí)坯癣,是引用不能變,還是引用的對(duì)象不能變?
使用final關(guān)鍵字修飾一個(gè)變量時(shí)乖菱,是指引用變量不能變坡锡,引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的。例如窒所,對(duì)于如下語(yǔ)句:
final StringBuffer a=new StringBuffer("immutable");
執(zhí)行如下語(yǔ)句將報(bào)告編譯期錯(cuò)誤:
a=new StringBuffer("");
但是鹉勒,執(zhí)行如下語(yǔ)句則可以通過(guò)編譯:
a.append(" broken!");
有人在定義方法的參數(shù)時(shí),可能想采用如下形式來(lái)阻止方法內(nèi)部修改傳進(jìn)來(lái)的參數(shù)對(duì)象:
public void method(final StringBuffer param){
}
實(shí)際上吵取,這是辦不到的禽额,在該方法內(nèi)部仍然可以增加如下代碼來(lái)修改參數(shù)對(duì)象:
param.append("a");
7、是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用?
不可以皮官。因?yàn)榉莝tatic方法是要與對(duì)象關(guān)聯(lián)在一起的脯倒,必須創(chuàng)建一個(gè)對(duì)象后,才可以在該對(duì)象上進(jìn)行方法調(diào)用捺氢,而static方法調(diào)用時(shí)不需要?jiǎng)?chuàng)建對(duì)象藻丢,可以直接調(diào)用。也就是說(shuō)摄乒,當(dāng)一個(gè)static方法被調(diào)用時(shí)悠反,可能還沒(méi)有創(chuàng)建任何實(shí)例對(duì)象残黑,如果從一個(gè)static方法中發(fā)出對(duì)非static方法的調(diào)用,那個(gè)非static方法是關(guān)聯(lián)到哪個(gè)對(duì)象上的呢?這個(gè)邏輯無(wú)法成立斋否,所以梨水,一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用。
8茵臭、下面的代碼有什么不妥之處?
1. if(username.equals(“zxx”){}
username可能為NULL,會(huì)報(bào)空指針錯(cuò)誤;改為"zxx".equals(username)
2. int x = 1;
return x==1?true:false; 這個(gè)改成return x==1;就可以!
9疫诽、int 和 Integer 有什么區(qū)別
Java 提供兩種不同的類(lèi)型:引用類(lèi)型和原始類(lèi)型(或內(nèi)置類(lèi)型)。Int是java的原始數(shù)據(jù)類(lèi)型旦委,Integer是java為int提供的封裝類(lèi)奇徒。Java為每個(gè)原始類(lèi)型提供了封裝類(lèi)。
原始類(lèi)型封裝類(lèi)
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用類(lèi)型和原始類(lèi)型的行為完全不同社证,并且它們具有不同的語(yǔ)義逼龟。引用類(lèi)型和原始類(lèi)型具有不同的特征和用法评凝,它們包括:大小和速度問(wèn)題追葡,這種類(lèi)型以哪種類(lèi)型的 數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),當(dāng)引用類(lèi)型和原始類(lèi)型用作某個(gè)類(lèi)的實(shí)例數(shù)據(jù)時(shí)所指定的缺省值奕短。對(duì)象引用實(shí)例變量的缺省值為 null宜肉,而原始類(lèi)型實(shí)例變量的缺省值與它們的類(lèi)型有關(guān)。
10翎碑、如何把一段逗號(hào)分割的字符串轉(zhuǎn)換成一個(gè)數(shù)組?
如果不查jdk api谬返,我很難寫(xiě)出來(lái)!我可以說(shuō)說(shuō)我的思路:
1 用正則表達(dá)式,代碼大概為:String [] result = orgStr.split(“,”);
2 用 StingTokenizer ,代碼為:StringTokenizer tokener = StringTokenizer(orgStr,”,”);
String [] result =new String[tokener .countTokens()];
Int i=0;
while(tokener.hasNext(){result[i++]=toker.nextToken();}
記住這10道經(jīng)典Java面試基礎(chǔ)題之后日杈,大家是否對(duì)接下來(lái)的面試感到信心倍增呢?
更多java網(wǎng)絡(luò)編程遣铝、多線程面試題已經(jīng)整理好,評(píng)論并轉(zhuǎn)發(fā)小編就及時(shí)回復(fù)你了哦莉擒!