面試題(一)

1.一個“.java”源文件中是否可以包括多個類(不是內(nèi)部類)愤炸?有什么限制题造?

可以有多個類垛孔,但是只能有一個public類找颓,并且public的類名必須與文件名一致吧彪。

2.Java有沒有g(shù)oto氧急?

java中的保留字斯辰,現(xiàn)在沒有在Java中使用帆焕。

3.說說&和&&的區(qū)別救氯。

&和&&都可以用作邏輯與的運算符找田,表示邏輯與(and),當(dāng)運算符兩邊的表達(dá)式都為true時着憨,整個運算結(jié)果才為true墩衙,否則,只要一方為false甲抖,則結(jié)果為false漆改。

&&還具有短路的功能,即如果一個表達(dá)式為false准谚,則不再計算第二個表達(dá)式挫剑,例如,對于if(str柱衔!=null&&樊破!str.equals(“”))表達(dá)式,當(dāng)str為null時唆铐,后面的表達(dá)式不會執(zhí)行哲戚,所以不會出現(xiàn)NullPointException如果將&&改為&,則會拋出NullPointException異常艾岂。if(x==33&++y>0)y會增長惫恼,if(x==33&&++y>0)不會增長。

&還可以用作位運算符澳盐,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時,&表示按位與操作令宿,我們通常使用0x0f來與一個整數(shù)進(jìn)行&運算叼耙,來獲取該整數(shù)的的最低4個bit位,例如粒没,0x31&0x0f的結(jié)果為0x01筛婉。

4.在JAVA中如何跳出當(dāng)前的多重嵌套循環(huán)?

在Java中,要想跳出多重循環(huán)爽撒,可以在外面的循環(huán)語句前定義一個標(biāo)號入蛆,然后在里層循環(huán)體的代碼中使用帶有標(biāo)號的break語句,即可跳出外層循環(huán)硕勿。例如哨毁,


ok: for(int i=0;i<10;i++) {

for(int j=0;j<10;j++) {

System.out.println(“i=” + i + “,j=” + j);

if(j == 5) break ok;

 }

 }

另外,我個人通常并不使用標(biāo)號這種方式源武,而是讓外層的循環(huán)條件表達(dá)式的結(jié)果可以受到里層循環(huán)體 代碼的控制扼褪,例如,要在二維數(shù)組中查找到某個數(shù)字粱栖。


int arr[][] = {{1,2,3},{4,5,6,7},{9}};

boolean found = false;

for(int i=0;i<arr.length&&!found;i++){

for(int j=0;j<=arr[i].length;j++){

System.out.println("i="+i+"j="+j);

if(arr[i][j]==5){

found=true;

break;

}

}

}

5 话浇、switch 語句能否作用在 byte 上,能否作用在 long 上闹究,能 否作用在 String 上幔崖?

在 switch(expr1)中,expr1 只能是一個整數(shù)表達(dá)式或者枚舉常量(更大字體)渣淤,整數(shù)表達(dá)式可以是 int 基本類型或 Integer 包裝類型赏寇,由于,byte,short,char 都可以隱含轉(zhuǎn)換為 int砂代,所以蹋订,這些類型以及這些類型 的包裝類型也是可以的。顯然刻伊,long 和 String 類型都不符合 switch 的語法規(guī)定露戒,并且不能被隱式轉(zhuǎn)換成 int 類型,所以捶箱,它們不能作用于 swtich 語句中智什。另外由于 JDK1.7 中引入新特性,所以 swtich 語句可以接收 一個 String 類型的值丁屎,String 可以作用在 swtich 上荠锭。

6 、short s1 = 1; s1 = s1 + 1; 有什么錯? short s1 = 1; s1 += 1; 有什么錯?

對于 short s1 = 1; s1 = s1 + 1; 由于 s1+1 運算時會自動提升表達(dá)式的類型晨川,所以結(jié)果是 int 型证九,再賦值 給 short 類型 s1 時,編譯器將報告需要強制轉(zhuǎn)換類型的錯誤共虑。

對于 short s1 = 1; s1 += 1;由于 += 是 java 語言規(guī)定的運算符愧怜,java 編譯器會對它進(jìn)行特殊處理,因此 可以正確編譯妈拌。

7 拥坛、char 型變量中能不能存貯一個中文漢字? 為什么?

char 型變量是用來存儲 Unicode 編碼的字符的,unicode 編碼字符集中包含了漢字猜惋,所以丸氛,char 型變量 中當(dāng)然可以存儲漢字啦。不過著摔,如果某個特殊的漢字沒有被包含在 unicode 編碼字符集中缓窜,那么,這個 char 型變量中就不能存儲這個特殊漢字梨撞。補充說明:unicode 編碼占用兩個字節(jié)雹洗,所以,char 類型的變量也是占 用兩個字節(jié)卧波。

備注:后面一部分回答雖然不是在正面回答題目时肿,但是,為了展現(xiàn)自己的學(xué)識和表現(xiàn)自己對問題理解 的透徹深入港粱,可以回答一些相關(guān)的知識螃成,做到知無不言,言無不盡查坪。

8 寸宏、用最有效率的方法算出 2 乘以 8 等於幾?

2 << 3,

因為將一個數(shù)左移 n 位偿曙,就相當(dāng)于乘以了 2 的 n 次方氮凝,那么,一個數(shù)乘以 8 只要將其左移 3 位即可望忆, 而位運算 cpu 直接支持的罩阵,效率最高,所以启摄,2 乘以 8 等於幾的最效率的方法是 2 << 3稿壁。

9 、請設(shè)計一個一百億的計算器

首先要明白這道題目的考查點是什么歉备,一是大家首先要對計算機原理的底層細(xì)節(jié)要清楚傅是、要知道加減 法的位運算原理和知道計算機中的算術(shù)運算會發(fā)生越界的情況,二是要具備一定的面向?qū)ο蟮脑O(shè)計思想蕾羊。 首先喧笔,計算機中用固定數(shù)量的幾個字節(jié)來存儲的數(shù)值,所以計算機中能夠表示的數(shù)值是有一定的范圍 的龟再,為了便于講解和理解溃斋,我們先以 byte 類型的整數(shù)為例,它用 1 個字節(jié)進(jìn)行存儲吸申,表示的最大數(shù)值范圍 為-128 到+127。-1 在內(nèi)存中對應(yīng)的二進(jìn)制數(shù)據(jù)為 11111111,如果兩個-1 相加截碴,不考慮 Java 運算時的類型提升梳侨,運算后會產(chǎn)生進(jìn)位,二進(jìn)制結(jié)果為 1,11111110日丹,由于進(jìn)位后超過了 byte 類型的存儲空間走哺,所以進(jìn)位部 分被舍棄,即最終的結(jié)果為 11111110哲虾,也就是-2丙躏,這正好利用溢位的方式實現(xiàn)了負(fù)數(shù)的運算。-128 在內(nèi)存 中對應(yīng)的二進(jìn)制數(shù)據(jù)為 10000000束凑,如果兩個-128 相加晒旅,不考慮 Java 運算時的類型提升,運算后會產(chǎn)生進(jìn)位汪诉, 二進(jìn)制結(jié)果為 1,00000000废恋,由于進(jìn)位后超過了 byte 類型的存儲空間,所以進(jìn)位部分被舍棄扒寄,即最終的結(jié)果 為 00000000鱼鼓,也就是 0,這樣的結(jié)果顯然不是我們期望的该编,這說明 計算機中的算術(shù)運算是會發(fā)生越 界情況 的迄本,兩個數(shù)值的運算結(jié)果不能超過計算機中的該類型的數(shù)值范圍。由于 Java 中涉及表達(dá)式運算時的類型自 動提升课竣,我們無法用 byte 類型來做演示這種問題和現(xiàn)象的實驗嘉赎,大家可以用下面一個使用整數(shù)做實驗的例 子程序體驗一下:


int a = Integer.MAX_VALUE;

 int b = Integer.MAX_VALUE;

int sum = a + b;

System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);

先不考慮 long 類型,由于 int 的正數(shù)范圍為 2 的 31 次方稠氮,表示的最大數(shù)值約等于 210001000*1000曹阔, 也就是 20 億的大小,所以隔披,要實現(xiàn)一個一百億的計算器赃份,我們得自己設(shè)計一個類可以用于表示很大的整數(shù), 并且提供了與另外一個整數(shù)進(jìn)行加減乘除的功能奢米,大概功能如下:

()這個類內(nèi)部有兩個成員變量抓韩,一個表示符號,另一個用字節(jié)數(shù)組表示數(shù)值的二進(jìn)制數(shù)

()有一個構(gòu)造方法鬓长,把一個包含有多位數(shù)值的字符串轉(zhuǎn)換到內(nèi)部的符號和字節(jié)數(shù)組中

()提供加減乘除的功能


public class BigInteger{

 int sign;

byte[] val;

public Biginteger(String val) {

sign = ;

val = ;

}

public BigInteger add(BigInteger other) {

 }

public BigInteger subtract(BigInteger other) {

 }

 public BigInteger multiply(BigInteger other){

 }

 public BigInteger divide(BigInteger other){

}

 }

備注:要想寫出這個類的完整代碼谒拴,是非常復(fù)雜的,如果有興趣的話涉波,可以參看 jdk 中自帶的 java.math.BigInteger 類的源碼英上。面試的人也知道誰都不可能在短時間內(nèi)寫出這個類的完整代碼的炭序,他要的 是你是否有這方面的概念和意識,他最重要的還是考查你的能力苍日,所以惭聂,你不要因為自己無法寫出完整的 最終結(jié)果就放棄答這道題,你要做的就是你比別人寫得多相恃,證明你比別人強辜纲,你有這方面的思想意識就可以了,畢竟別人可能連題目的意思都看不懂拦耐,什么都沒寫耕腾,你要敢于答這道題,即使只答了一部分杀糯,那也 與那些什么都不懂的人區(qū)別出來扫俺,拉開了距離,算是矮子中的高個火脉,機會當(dāng)然就屬于你了牵舵。另外,答案中 的框架代碼也很重要倦挂,體現(xiàn)了一些面向?qū)ο笤O(shè)計的功底畸颅,特別是其中的方法命名很專業(yè),用的英文單詞很 精準(zhǔn)方援,這也是能力没炒、經(jīng)驗、專業(yè)性犯戏、英語水平等多個方面的體現(xiàn)送火,會給人留下很好的印象,在編程能力和 其他方面條件差不多的情況下先匪,英語好除了可以使你獲得更多機會外种吸,薪水可以高出一千元。

10使用 final 關(guān)鍵字修飾 一個變量時呀非,是引用不能變坚俗,還 是引用的對象不能變?

使用 final 關(guān)鍵字修飾一個變量時,是指引用變量不能變岸裙,引用變量所指向的對象中的內(nèi)容還是可以改 變的猖败。例如,對于如下語句:


 final StringBuffer a=new StringBuffer("immutable");

執(zhí)行如下語句將報告編譯期錯誤:


 a=new StringBuffer("");

但是降允,執(zhí)行如下語句則可以通過編譯:


 a.append(" broken!");

有人在定義方法的參數(shù)時恩闻,可能想采用如下形式來阻止方法內(nèi)部修改傳進(jìn)來的參數(shù)對象:


 public void method(final StringBuffer param){

}

實際上,這是辦不到的剧董,在該方法內(nèi)部仍然可以增加如下代碼來修改參數(shù)對象:


 param.append("a");
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末幢尚,一起剝皮案震驚了整個濱河市破停,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侠草,老刑警劉巖辱挥,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異边涕,居然都是意外死亡,警方通過查閱死者的電腦和手機褂微,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門功蜓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宠蚂,你說我怎么就攤上這事式撼。” “怎么了求厕?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵著隆,是天一觀的道長。 經(jīng)常有香客問我呀癣,道長美浦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任项栏,我火速辦了婚禮浦辨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沼沈。我一直安慰自己流酬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布列另。 她就那樣靜靜地躺著芽腾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪页衙。 梳的紋絲不亂的頭發(fā)上摊滔,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音拷姿,去河邊找鬼惭载。 笑死,一個胖子當(dāng)著我的面吹牛响巢,可吹牛的內(nèi)容都是我干的描滔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼踪古,長吁一口氣:“原來是場噩夢啊……” “哼含长!你這毒婦竟也來了券腔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拘泞,失蹤者是張志新(化名)和其女友劉穎纷纫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陪腌,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡辱魁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诗鸭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片染簇。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖强岸,靈堂內(nèi)的尸體忽然破棺而出锻弓,到底是詐尸還是另有隱情,我是刑警寧澤蝌箍,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布青灼,位于F島的核電站,受9級特大地震影響妓盲,放射性物質(zhì)發(fā)生泄漏杂拨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一本橙、第九天 我趴在偏房一處隱蔽的房頂上張望扳躬。 院中可真熱鬧,春花似錦甚亭、人聲如沸贷币。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽役纹。三九已至,卻和暖如春暇唾,著一層夾襖步出監(jiān)牢的瞬間促脉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工策州, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘸味,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓够挂,卻偏偏與公主長得像旁仿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子孽糖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355