Java基礎(chǔ)面試題

基礎(chǔ)

  • 談?wù)勀銓?duì)Java的理解
  1. 平臺(tái)無(wú)關(guān)性
  2. GC
  3. 語(yǔ)言特性
  4. 面向?qū)ο?/li>
  5. 類(lèi)庫(kù)
  6. 異常處理
  • 談?wù)勀銓?duì)一次編譯,到處運(yùn)行這句話(huà)的理解?
  1. 在Java中,我們使用Javac命令對(duì)程序進(jìn)行編譯,他會(huì)生成一個(gè).class文件,我們可以直接在不同的操作系統(tǒng)上運(yùn)行這個(gè).class文件,因?yàn)槊恳粋€(gè)操作系統(tǒng)有不同的JVM,Java語(yǔ)言在不同系統(tǒng)運(yùn)行時(shí)不需要進(jìn)行編譯,Java虛擬機(jī)在執(zhí)行字節(jié)碼的時(shí)候,把字節(jié)碼轉(zhuǎn)換從具體平臺(tái)上的機(jī)器指令.

數(shù)據(jù)類(lèi)型

  • Java的基本數(shù)據(jù)類(lèi)型
  1. 基本數(shù)據(jù)類(lèi)型有:byte/8位,char/16位,short/16位,int/32位,float/32位,long/64位,double/64位
  • 什么是自動(dòng)裝箱,自動(dòng)拆箱
  1. 每一個(gè)基本數(shù)據(jù)類(lèi)型都有一個(gè)對(duì)象的包裝類(lèi),基本類(lèi)型和包裝類(lèi)型之間的賦值使用自動(dòng)裝箱與拆箱完成.int的包裝類(lèi)是Integer,比如說(shuō)Integer a = 3;自動(dòng)裝箱,調(diào)用了Integer.valueOf(2);
  • new Integer(123)Integer.valueof(123)的區(qū)別在哪里?
  1. new Integer(123)每次都會(huì)新建一個(gè)對(duì)象;
  2. Integer.valueof(123)會(huì)使用IntegerCache里面的對(duì)象,多次調(diào)用取得同一個(gè)對(duì)象的引用
  3. Integer緩存池的大小是-128 ~ 127;

String

  • 講講String類(lèi)為什么不可變?為什么這樣設(shè)計(jì)?
  1. String被聲明為final,因此它不可被繼承.
  2. String內(nèi)部使用char類(lèi)型的數(shù)組存儲(chǔ)數(shù)據(jù),并且char數(shù)組用final修飾,數(shù)組不可變,保證String不可變
  3. String類(lèi)不可變,線(xiàn)程安全;
  4. 保證HashCode哈希值的不可變性
  5. String類(lèi)不可變.每次都要在堆里面創(chuàng)建一個(gè)對(duì)象,性能價(jià)差
  • String,StringBuffer,StringBuilder區(qū)別?
  1. String是一個(gè)不可變類(lèi),一旦一個(gè)String對(duì)象被創(chuàng)建之后,包含在這個(gè)對(duì)象中的字符串是不可修改,直到銷(xiāo)毀.
  2. StringBuffer對(duì)象表示一個(gè)字符序列可變的字符串,可以通過(guò)提供的,append().insert(),reverse()等方法改變這個(gè)字符串,一旦獲得了自己想要的字符串,可以通過(guò)toString()方法將他轉(zhuǎn)變成一個(gè)String對(duì)象.
  3. StringBuilder和StringBuffer類(lèi)似,只不過(guò),StringBuilder線(xiàn)程不安全,StringBuffer線(xiàn)程安全.但是StringBuilder效率高.
  • String str = "i" 和 String str = new String("i")一樣嗎?
  1. 不一樣,內(nèi)存分配方式不一樣,前者Java虛擬機(jī)會(huì)將其分配到常量池中,而后者會(huì)被分配到堆內(nèi)存中,堆用來(lái)存放對(duì)象.
  • 請(qǐng)你講講&和&&的區(qū)別?
  1. & 和 && 都能作為邏輯與操作,但是 && 具有短路功能,當(dāng)左邊的條件表達(dá)式返回false則無(wú)需繼續(xù)執(zhí)行右邊表達(dá)式,而 & 都需要進(jìn)行.
  2. & 還能作為與運(yùn)算符
  • 你還知道哪些運(yùn)算符?
  1. ~ 按位非,單目運(yùn)算符,將操作數(shù)的每個(gè)位全部取反
  2. ^按位異或,兩位相同返回0,不相同返回1
  3. <<左移運(yùn)算符
  4. >>右移運(yùn)算符
  5. >>>無(wú)符號(hào)右移運(yùn)算符
  • ==和equals的區(qū)別?
  1. ==: 如果比較的是基本數(shù)據(jù)類(lèi)型,則比較的是數(shù)值是否相等,如果比較的是引用類(lèi)型,比較的是他們的對(duì)象的地址是否相等.
  2. equals:用來(lái)比較兩個(gè)對(duì)象的內(nèi)容是否相等,equals不能用來(lái)比較基本數(shù)據(jù)類(lèi)型,如果沒(méi)有重寫(xiě)equals,判斷兩個(gè)對(duì)象的內(nèi)存地址是否相等
  • 為什么重寫(xiě)equals還要重寫(xiě)hashcode?
  1. equals():判斷兩個(gè)對(duì)象的內(nèi)存地址是否相等
  2. hashcode(): 根據(jù)兩個(gè)對(duì)象的內(nèi)存地址生成的hash碼是否相等
  3. 當(dāng)你HashMap里面key存儲(chǔ)的是引用類(lèi)型的數(shù)據(jù)的時(shí)候,HashMap中put時(shí)候會(huì)判斷key是否有重復(fù),先求出key的hashcode(),若相等在比較equals(),若相等,則認(rèn)為他們是相同的,不能兩個(gè)都put進(jìn)去;
  4. 如果你只重寫(xiě)了equals()方法,那么會(huì)出現(xiàn),表面兩個(gè)對(duì)象的地址相等,但還是能夠put進(jìn)去,因?yàn)楸举|(zhì)上他們的hashcode()還是不同的.
  5. 重寫(xiě)hashcode()是為了同一個(gè)key,能夠得到相同的hashcode值,這樣Hashmap能夠定位到我們指定的key上;重寫(xiě)equals()是為了向Hashmap表明當(dāng)前對(duì)象的key上保存的對(duì)象是相等的,這樣我們才真正獲得了這個(gè)key所對(duì)應(yīng)的鍵值對(duì).

關(guān)鍵字

  • 講講Java里面的final關(guān)鍵字
  1. final可以用來(lái)修飾基本類(lèi)型變量,表明變量不可變;也可以修飾引用類(lèi)型變量,表示引用的地址不會(huì)改變.
  2. final可以用來(lái)修飾方法:表明方法不能被重寫(xiě)
  3. final可以用來(lái)修飾類(lèi):表明方法不能被繼承
  • 講講static關(guān)鍵字
  1. static可以用來(lái)修飾變量,說(shuō)明這是一個(gè)靜態(tài)變量,或者類(lèi)變量,可以直接使用類(lèi)名來(lái)訪(fǎng)問(wèn)
  2. static可以用來(lái)修飾方法,說(shuō)明這是一個(gè)靜態(tài)方法,說(shuō)明他在類(lèi)加載的過(guò)程中就存在了,它不依賴(lài)任何實(shí)例,可以通過(guò)類(lèi)名訪(fǎng)問(wèn).
  3. 靜態(tài)語(yǔ)句塊在類(lèi)初始化時(shí)只運(yùn)行一次

面向?qū)ο?/h3>
  • Java的三個(gè)特性?談?wù)劺斫?/strong>
  1. 封裝:他指的就是將對(duì)象的狀態(tài)信息,屬性等,隱藏在對(duì)象的內(nèi)部,不允許外部程序直接訪(fǎng)問(wèn)對(duì)象內(nèi)部信息,而是通過(guò)該類(lèi)向外暴露的方法來(lái)實(shí)現(xiàn)對(duì)內(nèi)部信息的操作和訪(fǎng)問(wèn).
  2. 繼承:通過(guò)關(guān)鍵字extends賴(lài)實(shí)現(xiàn),一個(gè)類(lèi)只能繼承一個(gè)父類(lèi)
  3. 多態(tài):Java的引用類(lèi)型有兩種類(lèi)型,一個(gè)是編譯類(lèi)型(方法重載),一個(gè)是運(yùn)行類(lèi)型(方法重寫(xiě)),編譯時(shí)類(lèi)型由聲明該變量時(shí)使用的類(lèi)型決定,運(yùn)行時(shí)類(lèi)型由實(shí)際賦予該變量的對(duì)象決定,所以當(dāng)編譯和運(yùn)行時(shí)類(lèi)型不一致,就會(huì)出現(xiàn)所謂的多態(tài).
  • 訪(fǎng)問(wèn)控制符?各自的作用范圍?
  1. private只能訪(fǎng)問(wèn)同一個(gè)類(lèi)中的信息
  2. default可以訪(fǎng)問(wèn)同一個(gè)類(lèi)和同一個(gè)包下中
  3. protected可以訪(fǎng)問(wèn)同一個(gè)類(lèi),同一個(gè)包,以及子類(lèi)中
  4. public可以訪(fǎng)問(wèn)全局范圍內(nèi).
  • 重寫(xiě)和重載的區(qū)別
  1. 重載,是編譯時(shí)多態(tài),同一個(gè)類(lèi)中相同的方法具有不同的參數(shù)列表,不能根據(jù)返回值類(lèi)型區(qū)分
  2. 重寫(xiě):是運(yùn)行時(shí)多態(tài),子類(lèi)重寫(xiě)父類(lèi)里面的方法,具有相同的返回值,參數(shù)列表.
  3. 構(gòu)造器不能被重寫(xiě),但是能夠被重載
  • 能否重寫(xiě)一個(gè)private或者static方法
  1. 重寫(xiě)方法,就是意味著你要繼承,不能繼承.
  2. private修飾的方法只能在當(dāng)前類(lèi)中使用,你繼承肯定是一個(gè)子類(lèi),而不是當(dāng)前類(lèi)
  3. 方法重寫(xiě)是根據(jù)運(yùn)行時(shí)冬天綁定的,而static是編譯時(shí)靜態(tài)綁定的,所以static方法跟任何類(lèi)的實(shí)例都不相關(guān).所以不能繼承,不能重寫(xiě).
  • 抽象類(lèi)和接口有什么區(qū)別
  1. 抽象類(lèi)是一個(gè)類(lèi),用來(lái)被繼承,接口用來(lái)被實(shí)現(xiàn)
  2. 抽象類(lèi)中可以定義構(gòu)造方法,接口不能
  3. 抽象類(lèi)中可以有具體的方法和抽象的方法,但是接口中只能有抽象的方法
  4. 抽象類(lèi)的權(quán)限可以是public,默認(rèn)和protected,不能是private,接口默認(rèn)是public
  5. JDK1.8之后,接口中可以有默認(rèn)的具體的實(shí)現(xiàn)方法.抽象類(lèi)中也可有靜態(tài)方法
  • 深克隆和淺克隆的區(qū)別?
  1. 淺克率奥怠:拷貝對(duì)象和原始對(duì)象的引用類(lèi)型引用同一個(gè)對(duì)象顺呕。淺克隆只是復(fù)制了對(duì)象的引用地址休建,兩個(gè)對(duì)象指向同一個(gè)內(nèi)存地址昼榛,所以修改其中任意的值,另一個(gè)值都會(huì)隨之變化蕴茴,這就是淺克隆琉预。
  2. 深克露巍:拷貝對(duì)象和原始對(duì)象的引用類(lèi)型引用不同對(duì)象。深拷貝是將對(duì)象及值復(fù)制過(guò)來(lái)圆米,兩個(gè)對(duì)象修改其中任意的值另一個(gè)值不會(huì)改變卒暂,這就是深拷貝(例:JSON.parse() 和 JSON.stringify(),但是此方法無(wú)法復(fù)制函數(shù)類(lèi)型)娄帖。

異常

  • Error和Exeption有什么區(qū)別?
  1. Error類(lèi)和Excepttion類(lèi)都是Throwable類(lèi)
  2. Error類(lèi)一般是指虛擬機(jī)相關(guān)的問(wèn)題,如系統(tǒng)崩潰,虛擬機(jī)錯(cuò)誤,內(nèi)存空間不足等,這類(lèi)錯(cuò)誤將導(dǎo)致應(yīng)用程序中斷.
  3. Exception類(lèi)分位運(yùn)行時(shí)異常和受檢查異常,運(yùn)行時(shí)異常如空指針異常,指定的類(lèi)找不到,數(shù)組越界,方法傳遞參數(shù)錯(cuò)誤,類(lèi)型轉(zhuǎn)換;受檢查異常:可以用try...catch捕獲.
  • throw和throws有什么區(qū)別
  1. Throw用于拋出異常對(duì)象,后面跟異常對(duì)象,用在方法體內(nèi)部
  2. Throws是方法可能拋出異常的聲明,在方法體外.后面跟異常類(lèi)名
  • 主線(xiàn)程可以捕捉到子線(xiàn)程的異常嗎
  1. 線(xiàn)程的設(shè)計(jì)理念是線(xiàn)程的問(wèn)題應(yīng)該線(xiàn)程自己本身來(lái)解決,而不要委托到外部.
  2. 正常情況下,主線(xiàn)程不會(huì)捕捉到子線(xiàn)程的異常
  • Java 的泛型是如何工作的 ? 什么是類(lèi)型擦除 ?
  1. 泛型是通過(guò)類(lèi)型擦除來(lái)實(shí)現(xiàn)的也祠,編譯器在編譯時(shí)擦除了所有類(lèi)型相關(guān)的信息,所以在運(yùn)行時(shí)不存在任何類(lèi)型相關(guān)的信息近速。例如:List<String> 在運(yùn)行時(shí)僅用一個(gè) List 來(lái)表示诈嘿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市削葱,隨后出現(xiàn)的幾起案子奖亚,更是在濱河造成了極大的恐慌,老刑警劉巖析砸,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昔字,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡首繁,警方通過(guò)查閱死者的電腦和手機(jī)李滴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛮瞄,“玉大人,你說(shuō)我怎么就攤上這事谆扎」彝保” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵堂湖,是天一觀的道長(zhǎng)闲先。 經(jīng)常有香客問(wèn)我,道長(zhǎng)无蜂,這世上最難降的妖魔是什么伺糠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮斥季,結(jié)果婚禮上训桶,老公的妹妹穿的比我還像新娘累驮。我一直安慰自己,他們只是感情好舵揭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布谤专。 她就那樣靜靜地躺著,像睡著了一般午绳。 火紅的嫁衣襯著肌膚如雪置侍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天拦焚,我揣著相機(jī)與錄音蜡坊,去河邊找鬼。 笑死赎败,一個(gè)胖子當(dāng)著我的面吹牛秕衙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播螟够,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼灾梦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了妓笙?” 一聲冷哼從身側(cè)響起若河,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寞宫,沒(méi)想到半個(gè)月后萧福,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辈赋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年鲫忍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钥屈。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悟民,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出篷就,到底是詐尸還是另有隱情射亏,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布竭业,位于F島的核電站智润,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏未辆。R本人自食惡果不足惜窟绷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咐柜。 院中可真熱鬧兼蜈,春花似錦攘残、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钥平,卻和暖如春实撒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涉瘾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工知态, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人立叛。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓负敏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親秘蛇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子其做,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • “噔噔噔”,連綿的轱轆聲赁还,在這片平原上飄動(dòng)妖泄。 細(xì)細(xì)的秀冬,生長(zhǎng)成簇艘策,伴隨淡淡玫熙的香氣蹈胡,綠色和淺黃色交融,成了這條...
    請(qǐng)叫我斯人閱讀 208評(píng)論 0 0
  • 近幾日朋蔫,腸胃不舒服罚渐,病情稍重,感覺(jué)瘦了許多驯妄。上秤一稱(chēng)荷并,果不其然,三斤以上的肉沒(méi)了青扔。 有兩個(gè)禮拜了璧坟,一直有點(diǎn)拉肚子,...
    靜水流深深幾許閱讀 291評(píng)論 0 4
  • 昨天晚上赎懦,有新入學(xué)前班的學(xué)生在哭,哭了好幾個(gè)幻工,然后有一個(gè)管理的爺爺嚇唬他們励两,鬼會(huì)來(lái)的。但是那個(gè)小孩子說(shuō)囊颅,爺...
    墨江030鄢倩閱讀 150評(píng)論 0 0
  • 這是早年李安導(dǎo)演拍完父親三部曲的《喜宴》之后,接受采訪(fǎng)時(shí)候說(shuō)的一段話(huà): (除李安外的畫(huà)面皆來(lái)自電影《喜宴》) 李安...
    心家園成長(zhǎng)工作室閱讀 241評(píng)論 0 0
  • 院子里有一個(gè)監(jiān)獄里回來(lái)的兒時(shí)的一個(gè)同校盲憎,我們都熟悉嗅骄,彼此都很客氣 ,遇到了也聊幾句饼疙,沒(méi)打過(guò)交道溺森,聽(tīng)說(shuō)他擺了一個(gè)攤子...
    花色春秋閱讀 388評(píng)論 2 3