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修飾變量時(shí) 表示該變量為常量不能被改變

final修飾方法時(shí)該方法不餓呢過被重寫

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

final修飾list基本無影響

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

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

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

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

ArrayList與LinkList的區(qū)別

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

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

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

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

4HashMap與HashTable的區(qū)別

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

HashTable把Contains方法去掉改為ContainsValue和ContainsKey兩個(gè)方法

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

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

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

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

解決線程安全與線程不安全問題時(shí)可能發(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修飾屬性時(shí)該屬性為靜態(tài)屬性 又可以叫做類屬性 隸屬于該類 可以直接使用類進(jìn)

行訪問

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

要?jiǎng)?chuàng)建對象

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

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ù)組對數(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ù)類型的值是否相等 也可以用于判斷兩個(gè)對象的地址是否相同,

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

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

12對JAVA中的synchronized與volatile兩個(gè)關(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不會(huì)造成線程的阻塞,而synchronized可能會(huì)造成線程的阻塞.

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

13對IO流的理解

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

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

JAVA的IO只要分為三個(gè)部分

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(面向切面編程)思想就是將一些具有共同特性的放在一塊,建立一個(gè)切入點(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等幾個(gè)處理器封裝

了這些過程

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

JVM內(nèi)存一共分為五個(gè)區(qū):寄存器,本地方法區(qū),方法區(qū),棧內(nèi)存,堆內(nèi)存

堆空間一般用與存放創(chuàng)建的對象 ??臻g用于存放進(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)前鎖是自由的并且線程獲取該鎖,立即返回,并將保持計(jì)數(shù)器設(shè)置為1

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

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

設(shè)置為1

3)lockInterruptibly

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

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

設(shè)置為 1。

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

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

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

2)其他線程被中斷

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

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

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

20講一下悲觀鎖和樂觀鎖

悲觀鎖

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

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

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

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

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

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

樂觀鎖

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

所以不會(huì)上鎖,但是在更新的時(shí)候會(huì)判斷一下在此期間別人有沒

有去更新這個(gè)數(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ù)

錯(cuò)誤: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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容