JAVA常見面試題

1基本數(shù)據(jù)類型和對應(yīng)包裝類

整型:byte Byte short Short ing Integer long Long

浮點(diǎn)型:float Float double Double

字符型:char Character

布爾型:boolean Boolean

2final finally finalize的區(qū)別 final修飾(list)有什么的特性

final為修飾關(guān)鍵字 意思為最終的 可以修飾變量 方法 類

final修飾變量時 表示該變量為常量不能被改變

final修飾方法時該方法不餓呢過被重寫

final修飾類時 該類為最終類不餓呢過被實(shí)現(xiàn)

final修飾list基本無影響

finally屬于異常處理機(jī)制的try..catch..finally的一部分finally的部分一定會執(zhí)行

一般用于關(guān)閉資源

finalize是JAVA中GC(垃圾回收)的一個方法 用于在下一次訪問時回收垃圾對象

3arraylist和linkedlist,hashmap和hashtable區(qū)別

ArrayList與LinkList的區(qū)別

ArrayLiat的底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組結(jié)構(gòu) 適合做查詢不適合做增刪 支持隨機(jī)查

詢 時間復(fù)雜度為O(1)

LinkLIst的底層數(shù)據(jù)結(jié)構(gòu)是雙向鏈表結(jié)構(gòu) 適合做增刪不適合查詢 不支持隨機(jī)

查詢 時間復(fù)雜度為O(n)

4HashMap與HashTable的區(qū)別

HashMap沒有排序 允許出現(xiàn)一個null鍵和多個null值 HashTable不允許

HashTable把Contains方法去掉改為ContainsValue和ContainsKey兩個方法

HashTable繼承Dictionary類實(shí)現(xiàn)Map接口 HashMap是Map接口的實(shí)現(xiàn)

Hashtable的方法使用synchornize關(guān)鍵字線程安全 HashMap線程不安全

Hashtable使用Hash算法 HashMap使用rehash算法

4多線程迸發(fā)可能出現(xiàn)的問題

解決線程安全與線程不安全問題時可能發(fā)生死鎖

解決死鎖可以使用線程同步的方法wait()和notify()

5concrrenthashmap的底層實(shí)現(xiàn)

底層為鏈表+分段數(shù)組結(jié)構(gòu) 線程安全的效率高 默認(rèn)值為16

使用鎖分離技術(shù)敛劝,適用于高并發(fā)

插入前檢測需不需要擴(kuò)容间聊,有效避免無效擴(kuò)容

6static的特點(diǎn) 在什么階段實(shí)現(xiàn)初始化

static為修飾關(guān)鍵字 意思為靜態(tài) 可以修飾屬性 方法 代碼塊

static修飾屬性時該屬性為靜態(tài)屬性 又可以叫做類屬性 隸屬于該類 可以直接使用類進(jìn)

行訪問

static修飾方法時該方法為靜態(tài)方法 屬于該類? 靜態(tài)方法不能直接調(diào)用非靜態(tài)方法 需

要創(chuàng)建對象

static代碼塊時代碼塊為靜態(tài)代碼塊 可以用于做程序優(yōu)化 只會在加載類文件時加載一

7抽象類和接口的區(qū)別

抽象類與接口共同點(diǎn)是都不能被實(shí)例化(就是不能創(chuàng)建出該文件的對象)

不同點(diǎn) 1抽象類可以定義構(gòu)造方法 接口不能

2抽象類可以定義變量和常量 接口只能定義常量

3抽象類只能單繼承接口是多實(shí)現(xiàn)

4抽象類可以有普通法方法 接口中是只能有抽象方法

8講一下string stringbuffer stringbuilder的區(qū)別

String Stringbuffer StringBuilder都是用于做字符操作的

String 是字符長度不可變的 StringBuffer和StringBuilder是長度可變的

Stringbuffer使用了synchornize關(guān)鍵字是線程安全的 StringBUilder是線程不安全的

9八種常用的排序方法 按照穩(wěn)定性區(qū)別 實(shí)際在項(xiàng)目中用夠哪幾種排序

穩(wěn)定:冒泡,插入,歸并排序类溢,基數(shù)排序

不穩(wěn)定:快速端圈,選擇,堆排序埠巨,希爾排序随闺,

在進(jìn)行Hash算法時底層使用堆排序

數(shù)組對數(shù)進(jìn)行的排序使用快速排序方式

10TCP/IP與UDP協(xié)議的區(qū)別 他們的應(yīng)用場景

TCP/ID可靠的網(wǎng)絡(luò)傳輸應(yīng)用于郵件,下載淮阐。? UDP不可靠網(wǎng)絡(luò)傳輸 應(yīng)用于直播

11==與equals的區(qū)別

==可以用于判斷基本數(shù)據(jù)類型的值是否相等 也可以用于判斷兩個對象的地址是否相同叮阅,

也就是判斷兩個對象收費(fèi)是同一個對象

equals通常使用與判斷字符是否相同

12對JAVA中的synchronized與volatile兩個關(guān)鍵字有什么樣的看法

volatile的作用就是使它修飾的變量的讀寫操作都必須在內(nèi)存中進(jìn)行,

以便于其他線程感知到變量值的變化

volatile本質(zhì)是在告訴jvm當(dāng)前變量在寄存器中的值是不確定的,需要從主存中讀

取,synchronized則是鎖定當(dāng)前變量,只有當(dāng)前線程可以訪問該變量,其他線程被阻塞住.

volatile僅能使用在變量級別,synchronized則可以使用在變量,方法.

volatile僅能實(shí)現(xiàn)變量的修改可見性,但不具備原子特性,而synchronized則可以保證變

量的修改可見性和原子性.

volatile不會造成線程的阻塞,而synchronized可能會造成線程的阻塞.

volatile標(biāo)記的變量不會被編譯器優(yōu)化,而synchronized標(biāo)記的變量可以被編譯器優(yōu)化.

13對IO流的理解

IO流是用于操作本地文件輸入輸出的 按照操作分可分為輸出流和輸入流 按照類型分可

分為字符流字節(jié)流

JAVA的IO只要分為三個部分

1.流式部分——IO的主體部分

2.非流式部分——主要包含一些輔助流式部分的類如:file

類.RandomAccessfile類等

3.文件讀取部分和安全相關(guān)的類 如:serializablePermission類

流具體分可分為:

1.介質(zhì)流 2.過濾流

14spring? IOC? AOP的概念? 通過什么樣的技術(shù)實(shí)現(xiàn)的

IOC(控制反轉(zhuǎn))思想將對象的控制權(quán)限有程序猿轉(zhuǎn)交給Spring框架泣特。

AOP(面向切面編程)思想就是將一些具有共同特性的放在一塊浩姥,建立一個切入點(diǎn)。

15SpringMVC的實(shí)現(xiàn)原理

springMVC使用的是一種web層MVC框架状您,用于替代servlet(處理響應(yīng)請求勒叠,獲取表單參

數(shù))。springMVC是方法級別的攔截

16Mybatis的實(shí)現(xiàn)原理

mybatis使用原聲的JDBC類對數(shù)據(jù)進(jìn)行操作膏孟,只通過SqlsessionFactory,SQLSession

Ecec,,StatementHandler眯分,ParameterHandler,ResultHandler和TypeHandler等幾個處理器封裝

了這些過程

17講清楚堆和棧的基本構(gòu)成關(guān)系 棧空間和堆空間分配的基本原則

JVM內(nèi)存一共分為五個區(qū):寄存器柒桑,本地方法區(qū)弊决,方法區(qū),棧內(nèi)存魁淳,堆內(nèi)存

堆空間一般用與存放創(chuàng)建的對象 椘空間用于存放進(jìn)本數(shù)據(jù)類型

18trylock lockINterruptibly 與 lock的區(qū)別? lock為鎖的意思

1)try...lock方法

如果鎖是自由的并且被當(dāng)前線程獲取,或者當(dāng)前線程已經(jīng)保持該鎖界逛,則返回

true昆稿;否則返回 false

2)lock方法

i:如果當(dāng)前鎖是自由的并且線程獲取該鎖,立即返回仇奶,并將保持計數(shù)器設(shè)置為1

ii:如果當(dāng)前線程持有鎖貌嫡,將保持計數(shù)加 1,并且該方法立即返回该溯。

iii:如果其他線程保持鎖岛抄,當(dāng)前線程處于休眠狀態(tài),此時當(dāng)前線程鎖的計數(shù)器

設(shè)置為1

3)lockInterruptibly

i:如果當(dāng)前線程未被中斷狈茉,則獲取鎖夫椭。

ii:如果該鎖沒有被另一個線程保持,則獲取該鎖并立即返回氯庆,將鎖的保持計數(shù)

設(shè)置為 1蹭秋。

iii:如果當(dāng)前線程已經(jīng)保持此鎖扰付,則將保持計數(shù)加 1,并且該方法立即返回仁讨。

iv:如果其他線程保持鎖羽莺,當(dāng)前線程中斷,處于休眠直到

1)當(dāng)前線程獲得鎖

2)其他線程被中斷

19常用的工廠設(shè)計模式有哪些洞豁?實(shí)際項(xiàng)目中遇到過那些設(shè)計盐固?

簡單工廠 工廠方法 抽象工廠

在hibernate中使用sessionFactory,和在Mybatis中使用sqlsessionfactory

20講一下悲觀鎖和樂觀鎖

悲觀鎖

總是假設(shè)最壞的情況丈挟,每次去拿數(shù)據(jù)的時候都認(rèn)為別人會修改刁卜,所以每次在

拿數(shù)據(jù)的時候都會上鎖,這樣別人想拿這個數(shù)據(jù)就會阻塞直到它拿到鎖(共

享資源每次只給一個線程使用曙咽,其它線程阻塞蛔趴,用完后再把資源轉(zhuǎn)讓給其它

線程)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫里邊就用到了很多這種鎖機(jī)制例朱,比如行鎖孝情,表鎖

等,讀鎖茉继,寫鎖等咧叭,都是在做操作之前先上鎖。Java中synchronized

和ReentrantLock等獨(dú)占鎖就是悲觀鎖思想的實(shí)現(xiàn)烁竭。

樂觀鎖

總是假設(shè)最好的情況菲茬,每次去拿數(shù)據(jù)的時候都認(rèn)為別人不會修改,

所以不會上鎖派撕,但是在更新的時候會判斷一下在此期間別人有沒

有去更新這個數(shù)據(jù)婉弹,可以使用版本號機(jī)制和CAS算法實(shí)現(xiàn)。

樂觀鎖適用于多讀的應(yīng)用類型终吼,這樣可以提高吞吐量镀赌,

像數(shù)據(jù)庫提供的類似于write_condition機(jī)制,

其實(shí)都是提供的樂觀鎖际跪。

在Java中java.util.concurrent.atomic包下面的原子變量類

就是使用了樂觀鎖的一種實(shí)現(xiàn)方式CAS(compare and swap)實(shí)現(xiàn)的商佛。

21.sql查詢所有課目成績大于20的人

where后面不能用聚合函數(shù)

錯誤:select bookName from books where min(bookPrice)>20;

正確:select bookName from books group by bookName having min(bookPrice)

>20;

注意:出現(xiàn)在select后面的列名,要么在group by后面出現(xiàn)過姆打,要么在聚合函數(shù)中出現(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末良姆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子幔戏,更是在濱河造成了極大的恐慌玛追,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痊剖,居然都是意外死亡韩玩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門陆馁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來找颓,“玉大人,你說我怎么就攤上這事氮惯《vǎ” “怎么了想暗?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵妇汗,是天一觀的道長。 經(jīng)常有香客問我说莫,道長杨箭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任储狭,我火速辦了婚禮互婿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辽狈。我一直安慰自己慈参,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布刮萌。 她就那樣靜靜地躺著驮配,像睡著了一般。 火紅的嫁衣襯著肌膚如雪着茸。 梳的紋絲不亂的頭發(fā)上壮锻,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機(jī)與錄音涮阔,去河邊找鬼猜绣。 笑死,一個胖子當(dāng)著我的面吹牛敬特,可吹牛的內(nèi)容都是我干的掰邢。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼伟阔,長吁一口氣:“原來是場噩夢啊……” “哼辣之!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起减俏,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤召烂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后娃承,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奏夫,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怕篷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了酗昼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廊谓。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖麻削,靈堂內(nèi)的尸體忽然破棺而出蒸痹,到底是詐尸還是另有隱情呛哟,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布扫责,位于F島的核電站,受9級特大地震影響鳖孤,放射性物質(zhì)發(fā)生泄漏者娱。R本人自食惡果不足惜苏揣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一框沟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吐葱,春花似錦、人聲如沸弟跑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饲嗽,卻和暖如春炭玫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背貌虾。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工吞加, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓衔憨,卻偏偏與公主長得像叶圃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子践图,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

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

  • Java SE 基礎(chǔ): 封裝掺冠、繼承、多態(tài) 封裝: 概念:就是把對象的屬性和操作(或服務(wù))結(jié)合為一個獨(dú)立的整體码党,并盡...
    Jayden_Cao閱讀 2,112評論 0 8
  • 在一個方法內(nèi)部定義的變量都存儲在棧中德崭,當(dāng)這個函數(shù)運(yùn)行結(jié)束后,其對應(yīng)的棧就會被回收揖盘,此時眉厨,在其方法體中定義的變量將不...
    Y了個J閱讀 4,420評論 1 14
  • 1. Arrays.sort()實(shí)現(xiàn)原理和 Collections.sort() 的實(shí)現(xiàn)原理 JDK1.7 Arr...
    FlySheep_ly閱讀 436評論 0 3
  • Java8張圖 11、字符串不變性 12扣讼、equals()方法缺猛、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,709評論 0 11
  • 相關(guān)概念 面向?qū)ο蟮娜齻€特征 封裝,繼承,多態(tài).這個應(yīng)該是人人皆知.有時候也會加上抽象. 多態(tài)的好處 允許不同類對...
    東經(jīng)315度閱讀 1,947評論 0 8