Java基礎(chǔ)面試題面經(jīng)整理(持續(xù)更新)

前提

臨近秋招览绿,本博文主要整理最近各大企業(yè)面經(jīng)里的那些Java基礎(chǔ)面試題慌洪,并通過(guò)對(duì)比整合給出一份參考答案顶燕。并無(wú)按照特定順序,僅僅是提供了復(fù)習(xí)了之后測(cè)試掌握冈爹。文章的答案不一定絕對(duì)正確涌攻,如果有錯(cuò)誤的地方還望指出!

1频伤、equals 和 == 的區(qū)別恳谎?

最直接,我們點(diǎn)開(kāi)equals的源碼

publicbooleanequals(Object obj){return(this== obj);? ? }

我們可以發(fā)現(xiàn)equals也是用的==?來(lái)比較的憋肖,但是為什么還要說(shuō)它們之間的區(qū)別呢因痛?因?yàn)閑quals的方法可以根據(jù)我們的需要重寫(xiě)。==如果比較的是兩個(gè)值類(lèi)型的話岸更,那么就是比較它們之間是否相等鸵膏,如果是引用類(lèi)型的話,那么就是比較它們之間的地址了怎炊。

2谭企、為什么重寫(xiě)equals一定要重寫(xiě)hashcode?

默認(rèn)的hashcode方法是根據(jù)對(duì)象的內(nèi)存地址經(jīng)哈希算法得到的评肆,如果不重寫(xiě)的話债查,那么在兩個(gè)相同的對(duì)象在使用equals方法的時(shí)候就有可能不同。這在我們的map中的話糟港,如果以對(duì)象為key的話,就會(huì)導(dǎo)致我們邏輯上的key相同卻有著不同的值院仿!

3秸抚、Integer與int的==比較是怎么樣的速和?

首先看一下下面的比較

publicstaticvoidmain(String[] args){? ? ? ? Integer a =3;intb =3;? ? ? ? Integer c = Integer.valueOf(3);? ? ? ? Integer d =newInteger(3);? ? ? ? System.out.println(a == b);//輸出trueSystem.out.println(b == c);//輸出trueSystem.out.println(b == d);//輸出trueSystem.out.println(a == c);//輸出trueSystem.out.println(c == d);//輸出false}

我們的Integer在int比較的時(shí)候,會(huì)自動(dòng)拆箱剥汤,再做值比較颠放,所以返回true;

Integer之間的比較的話吭敢,除了new Integer()之外碰凶,其他比較都是同一段地址,而new的新對(duì)象則不是鹿驼,所以返回的false欲低。

4、接口和抽象類(lèi)的區(qū)別畜晰?

接口中的所有方法都是抽象的砾莱,而抽象類(lèi)可以有抽象的和非抽象的

類(lèi)可以實(shí)現(xiàn)很多個(gè)接口,但只能繼承一個(gè)抽象類(lèi)

類(lèi)可以不實(shí)現(xiàn)抽象類(lèi)和接口聲明的所有方法凄鼻,但是該類(lèi)必須聲明成抽象的

接口的成員方法默認(rèn)是public腊瑟,而抽象類(lèi)的成員可以是private,protected块蚌,public

JDK1.8開(kāi)始闰非,接口中可以包含default方法(可以進(jìn)行實(shí)現(xiàn)),但是抽象類(lèi)沒(méi)有峭范。

5财松、Java的異常處理機(jī)制,Error和Exception的區(qū)別虎敦?

二者都有共同的父類(lèi)——Throwable游岳!

Error:表示程序發(fā)生錯(cuò)誤,是程序無(wú)法處理的其徙,不可恢復(fù)的胚迫,如OutOfMemoryError

Exception: 表示程序可處理的異常,又分為CheckedException(受檢異常)唾那、UncheckedException(非受檢異常)访锻,受檢異常發(fā)生在編譯期,必須要使用try...catch 或者 throws捕獲或者拋出異常闹获,否則編譯不通過(guò)(如IOException之類(lèi)期犬,多線程之類(lèi)的);非受檢異常發(fā)生在運(yùn)行期避诽,具有不確定性龟虎,主要由程序的邏輯問(wèn)題引起的,在程序設(shè)計(jì)的時(shí)候要認(rèn)真考慮沙庐,盡量處理異常鲤妥。(如NullPointException 參數(shù)值為null(空指針)佳吞,IndexOutOfBoundsException 下標(biāo)參數(shù)值越界)

6、++和--操作是否為原子操作棉安,為什么底扳?

不是原子性操作。原子性的意思是操作不可分割贡耽,但是我們的++和--確實(shí)可以分為三個(gè)步驟(讀寫(xiě)改)

從棧讀取我們的值

進(jìn)行加1的操作

將我們的值壓回棧

所以再多線程情況下衷模,就會(huì)導(dǎo)致我們的自增或者自減不準(zhǔn)確!

7蒲赂、面向?qū)ο蟮娜筇匦允鞘裁蹿逡保空?qǐng)簡(jiǎn)單介紹一下!

封裝凳宙、繼承熙揍、多態(tài)

封裝:?所謂封裝,也就是把客觀事物封裝成抽象的類(lèi)氏涩,并且類(lèi)可以把自己的數(shù)據(jù)和方法只讓可信的類(lèi)或者對(duì)象操作届囚,對(duì)不可信的進(jìn)行信息隱藏。封裝是面向?qū)ο蟮奶卣髦皇羌猓菍?duì)象和類(lèi)概念的主要特性意系。 簡(jiǎn)單的說(shuō),一個(gè)類(lèi)就是一個(gè)封裝了數(shù)據(jù)以及操作這些數(shù)據(jù)的代碼的邏輯實(shí)體饺汹。在一個(gè)對(duì)象內(nèi)部蛔添,某些代碼或某些數(shù)據(jù)可以是私有的,不能被外界訪問(wèn)兜辞。通過(guò)這種方式迎瞧,對(duì)象對(duì)內(nèi)部數(shù)據(jù)提供了不同級(jí)別的保護(hù),以防止程序中無(wú)關(guān)的部分意外的改變或錯(cuò)誤的使用了對(duì)象的私有部分逸吵。

繼承:?所謂繼承是指可以讓某個(gè)類(lèi)型的對(duì)象獲得另一個(gè)類(lèi)型的對(duì)象的屬性的方法凶硅。它支持按級(jí)分類(lèi)的概念。繼承是指這樣一種能力:它可以使用現(xiàn)有類(lèi)的所有功能扫皱,并在無(wú)需重新編寫(xiě)原來(lái)的類(lèi)的情況下對(duì)這些功能進(jìn)行擴(kuò)展足绅。 通過(guò)繼承創(chuàng)建的新類(lèi)稱(chēng)為“子類(lèi)”或“派生類(lèi)”,被繼承的類(lèi)稱(chēng)為“基類(lèi)”韩脑、“父類(lèi)”或“超類(lèi)”氢妈。繼承的過(guò)程,就是從一般到特殊的過(guò)程段多。要實(shí)現(xiàn)繼承首量,可以通過(guò)“繼承”(Inheritance)和“組合”(Composition)來(lái)實(shí)現(xiàn)。繼承概念的實(shí)現(xiàn)方式有二類(lèi):實(shí)現(xiàn)繼承與接口繼承。實(shí)現(xiàn)繼承是指直接使用基類(lèi)的屬性和方法而無(wú)需額外編碼的能力加缘;接口繼承是指僅使用屬性和方法的名稱(chēng)粥航、但是子類(lèi)必須提供實(shí)現(xiàn)的能力;

多態(tài):?所謂多態(tài)就是指一個(gè)類(lèi)實(shí)例的相同方法在不同情形有不同表現(xiàn)形式生百。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口。這意味著柄延,雖然針對(duì)不同對(duì)象的具體操作不同蚀浆,但通過(guò)一個(gè)公共的類(lèi),它們(那些操作)可以通過(guò)相同的方式予以調(diào)用搜吧。

8市俊、Java中是如何具體實(shí)現(xiàn)多態(tài)的?

9滤奈、面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別摆昧?

面向?qū)ο蠓椒ㄖ校褦?shù)據(jù)和數(shù)據(jù)操作放在一起蜒程,組成對(duì)象绅你;對(duì)同類(lèi)的對(duì)象抽 象出其共性組成類(lèi);類(lèi)通過(guò)簡(jiǎn)單的接口與外界發(fā)生聯(lián)系昭躺,對(duì)象和對(duì)象之間通過(guò)消 息進(jìn)行通信忌锯。而面向過(guò)程方法是以過(guò)程為中心的開(kāi)發(fā)方法,它自頂向下順序進(jìn)行领炫, 程序結(jié)構(gòu)按照功能劃分成若干個(gè)基本模塊偶垮,這些模塊形成樹(shù)狀結(jié)構(gòu)。

(過(guò)程)優(yōu)點(diǎn):性能比面向?qū)ο蟾叩酆椋驗(yàn)轭?lèi)調(diào)用時(shí)需要實(shí)例化似舵,開(kāi)銷(xiāo)比較大,比較消耗源;比如嵌入式開(kāi)發(fā)葱峡、Linux/Unix等一般采用面向過(guò)程開(kāi)發(fā)砚哗,性能是最重要的因素。缺點(diǎn):沒(méi)有面向?qū)ο笠拙S護(hù)族沃、易復(fù)用频祝、易擴(kuò)展。

(對(duì)象)優(yōu)點(diǎn):易維護(hù)脆淹、易復(fù)用常空、易擴(kuò)展,由于面向?qū)ο笥蟹庋b盖溺、繼承漓糙、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng)烘嘱。缺點(diǎn):性能比面向過(guò)程低昆禽。

10蝗蛙、String/StringBuffer/StringBuilder的區(qū)別?

String:不可變字符序列

StringBuffer:可變字符序列醉鳖、效率低捡硅、線程安全(使用Synchronized修飾)

StringBuilder:可變字符序列、效率高盗棵、線程不安全

字符串直接相加本質(zhì)也是轉(zhuǎn)換成StringBuilder調(diào)用append壮韭,但是因?yàn)闀?huì)產(chǎn)生大量的StringBuilder對(duì)象所以不如直接new一個(gè)StringBuilder來(lái)用效率高!

11纹因、什么是面向函數(shù)式編程喷屋?

12、談?wù)剆tatic瞭恰,final關(guān)鍵字屯曹?

13、談?wù)剉olatile惊畏、synchronized關(guān)鍵字恶耽?

談到這兩個(gè)關(guān)鍵字需要了解到JMM和內(nèi)存模型,可以看看我的另一篇【https://mp.weixin.qq.com/s/le8My8lmRMV_8rn7BTmKPA】

14颜启、談?wù)勆羁截惡蜏\拷貝驳棱?

15、Java線程和系統(tǒng)線程的區(qū)別农曲?

16社搅、開(kāi)多個(gè)Java進(jìn)程和多個(gè)線程的區(qū)別?

17乳规、什么是同步與異步形葬,阻塞與非阻塞?

18暮的、多進(jìn)程之間如何進(jìn)行通信笙以?

待更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冻辩,隨后出現(xiàn)的幾起案子猖腕,更是在濱河造成了極大的恐慌,老刑警劉巖恨闪,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倘感,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咙咽,警方通過(guò)查閱死者的電腦和手機(jī)老玛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜡豹,你說(shuō)我怎么就攤上這事麸粮。” “怎么了镜廉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵弄诲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我娇唯,道長(zhǎng)威根,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任视乐,我火速辦了婚禮,結(jié)果婚禮上敢茁,老公的妹妹穿的比我還像新娘佑淀。我一直安慰自己,他們只是感情好彰檬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布伸刃。 她就那樣靜靜地躺著,像睡著了一般逢倍。 火紅的嫁衣襯著肌膚如雪捧颅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天较雕,我揣著相機(jī)與錄音碉哑,去河邊找鬼。 笑死亮蒋,一個(gè)胖子當(dāng)著我的面吹牛扣典,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慎玖,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贮尖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了趁怔?” 一聲冷哼從身側(cè)響起湿硝,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎润努,沒(méi)想到半個(gè)月后关斜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铺浇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蚤吹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裁着,死狀恐怖繁涂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情二驰,我是刑警寧澤扔罪,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站桶雀,受9級(jí)特大地震影響矿酵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矗积,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一全肮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棘捣,春花似錦辜腺、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至茵烈,卻和暖如春百匆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呜投。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工加匈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仑荐。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓矩动,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親释漆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悲没,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351