面試必備!Java核心知識(shí)100+面試題

一線互聯(lián)網(wǎng)公司工作了幾年,我作為求職者參加了不少面試,也作為面試官面試了很多同學(xué),整理這份面試指南,一方面是幫助大家更好的準(zhǔn)備面試,有的放矢,另一方面也是對(duì)自己知識(shí)框架做一個(gè)體系化的梳理。

這篇文章梳理了Java核心技術(shù)常見(jiàn)面試題,整理了120道題目,包括Java基礎(chǔ)、集合框架、并發(fā)編程、NIO、反射等部分的內(nèi)容。

語(yǔ)法基礎(chǔ)

面向?qū)ο蟮奶卣饔心男┓矫妫?/p>

hashCode和equals方法的理解?

兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對(duì)不對(duì)?

深拷貝和淺拷貝區(qū)別?

&和&&的區(qū)別?

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

用最有效率的方法計(jì)算2乘以8?

數(shù)組有沒(méi)有l(wèi)ength()方法?String有沒(méi)有l(wèi)ength()方法?

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

構(gòu)造器(constructor)是否可被重寫(override)?

當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

重載(Overload)和重寫(Override)的區(qū)別。重載的方法能否根據(jù)返回類型進(jìn)行區(qū)分?

為什么不能根據(jù)返回類型來(lái)區(qū)分重載?

抽象類(abstract class)和接口(interface)有什么異同?

闡述靜態(tài)變量和實(shí)例變量的區(qū)別?

靜態(tài)嵌套類(Static Nested Class)和內(nèi)部類(Inner Class)的不同?

接口是否可繼承(extends)接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承具體類(concrete class)?

一個(gè)".Java"源文件中是否可以包含多個(gè)類(不是內(nèi)部類)?有什么限制?

Anonymous Inner Class(匿名內(nèi)部類)是否可以繼承其它類?是否可以實(shí)現(xiàn)接口?

內(nèi)部類可以引用它的包含類(外部類)的成員嗎?有沒(méi)有什么限制?

Java中是如何支持正則表達(dá)式操作的?

基本數(shù)據(jù)類型

String是基本數(shù)據(jù)類型嗎?

float f=3.4;是否正確?

int和Integer有什么區(qū)別?

是否可以繼承String類?為什么?

String和StringBuilder、StringBuffer的區(qū)別?

char 型變量中能不能存貯一個(gè)中文漢字,為什么?

String s = new String("xyz");創(chuàng)建了幾個(gè)字符串對(duì)象?

Java 中的final關(guān)鍵字有哪些用法?

如何實(shí)現(xiàn)字符串的反轉(zhuǎn)及替換?

什么時(shí)候用斷言(assert)?

集合框架

ArrayList和LinkedList有什么差別?

在哪種場(chǎng)景里應(yīng)當(dāng)用ArrayList(或LinkedList)?

有沒(méi)有有順序的Map實(shí)現(xiàn)類,如果有,他們是怎么保證有序的?

List,Set,Map三者的區(qū)別及總結(jié)?

HashMap 和 Hashtable 的區(qū)別?

HashSet 和 HashMap 區(qū)別?

HashMap 和 ConcurrentHashMap 的區(qū)別?

hashmap和hashtable和concurrenthashmap區(qū)別和比較?

HashSet如何檢查重復(fù)?

comparable 和 comparator的區(qū)別?

如何對(duì)Object的list排序?

如何實(shí)現(xiàn)數(shù)組與List的相互轉(zhuǎn)換?

如何求ArrayList集合的交集、并集、差集、去重復(fù)并集?

說(shuō)說(shuō)HashMap 的工作原理及代碼實(shí)現(xiàn)?

ConcurrentHashMap 的工作原理及代碼實(shí)現(xiàn)?

哪些集合類是線程安全的?

Iterator 怎么使用?有什么特點(diǎn)?

Collection和Collections的區(qū)別?

List、Map、Set三個(gè)接口存取元素時(shí),各有什么特點(diǎn)?

Collections工具類中的sort()方法如何比較元素?

TreeMap和TreeSet在排序時(shí)如何比較元素?

IO/NIO

IO和NIO的區(qū)別?

Java中有幾種類型的流?

如何用Java代碼列出一個(gè)目錄下所有的文件?

XML文檔定義有幾種形式?

解析XML文檔有哪幾種方式?

反射和動(dòng)態(tài)代理

什么是反射?

獲得一個(gè)類的類對(duì)象有哪些方式?

如何通過(guò)反射創(chuàng)建對(duì)象?

如何通過(guò)反射獲取和設(shè)置對(duì)象私有字段的值?

如何通過(guò)反射調(diào)用對(duì)象的方法?

動(dòng)態(tài)代理是什么?有哪些應(yīng)用?

什么是 Java 序列化?什么情況下需要序列化?

如何實(shí)現(xiàn)對(duì)象克???

怎么實(shí)現(xiàn)動(dòng)態(tài)代理?

動(dòng)態(tài)代理的不同實(shí)現(xiàn)方式相應(yīng)的優(yōu)缺點(diǎn)?

并發(fā)編程

并行和并發(fā)有什么區(qū)別?

舉例說(shuō)明同步和異步

ThreadLocal的原理是什么?

使用ThreadLocal有哪些注意事項(xiàng)?

Java中能創(chuàng)建volatile數(shù)組嗎?

volatile 能使得一個(gè)非原子操作變成原子操作嗎?

volatile的原理,作用,能代替鎖么?

Java中有哪些鎖?以及他們的區(qū)別?

JDK8中對(duì)HashMap做了怎樣的優(yōu)化?

多線程的幾種實(shí)現(xiàn)方式?

Thread類的sleep()方法和對(duì)象的wait()方法都可以讓線程暫停執(zhí)行,它們有什么區(qū)別?

線程的sleep()方法和yield()方法有什么區(qū)別?

sleep和sleep(0)的區(qū)別?

樂(lè)觀鎖,悲觀鎖有什么區(qū)別?

Lock與Synchronized的區(qū)別?

守護(hù)線程是什么?

說(shuō)一下 runnable 和 callable 有什么區(qū)別?

notify()和 notifyAll()有什么區(qū)別?

說(shuō)一下 synchronized 底層實(shí)現(xiàn)原理?

synchronized 和 volatile 的區(qū)別是什么?

synchronized 和 ReentrantLock 區(qū)別是什么?

當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的synchronized方法A之后,其它線程是否可進(jìn)入此對(duì)象的synchronized方法B?

多線程中 synchronized 鎖升級(jí)的原理是什么?

什么是死鎖?怎么防止死鎖?

說(shuō)一下 atomic 的原理?

線程池

線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系?

什么是線程池(thread pool)?

創(chuàng)建線程池有哪幾種方式?

線程池都有哪些狀態(tài)?

線程池中 submit() 和 execute() 方法有什么區(qū)別?

說(shuō)出與線程同步以及線程調(diào)度相關(guān)的方法?

啟動(dòng)一個(gè)線程是調(diào)用run()還是start()方法?

工具類Executors里面提供了哪些靜態(tài)工廠方法?

簡(jiǎn)述synchronized 和Java.util.concurrent.locks.Lock的異同?

異常

Error和Exception有什么區(qū)別?

運(yùn)行時(shí)異常與受檢異常有何異同?

列出一些你常見(jiàn)的運(yùn)行時(shí)異常?

闡述final、finally、finalize的區(qū)別。

throw 和 throws 的區(qū)別?

JDBC

闡述JDBC操作數(shù)據(jù)庫(kù)的步驟?

Statement和PreparedStatement有什么區(qū)別?哪個(gè)性能更好?

在進(jìn)行數(shù)據(jù)庫(kù)編程時(shí),連接池有什么作用?

JDBC中如何進(jìn)行事務(wù)處理?

JDBC能否處理Blob和Clob?

JDK特性

Lambda表達(dá)式有哪些應(yīng)用?

JDK 8的Fork/Join框架了解嗎?

List、Set、Map是否繼承自Collection接口?

需要上面java面試題答案的私信筆者“java”領(lǐng)取哦

另外喜歡這篇文章的可以給筆者點(diǎn)個(gè)贊,關(guān)注一下,每天都會(huì)分享Java相關(guān)文章!還有不定時(shí)的福利贈(zèng)送,包括整理的學(xué)習(xí)資料,面試題,源碼等~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 相關(guān)概念 面向?qū)ο蟮娜齻€(gè)特征 封裝,繼承,多態(tài).這個(gè)應(yīng)該是人人皆知.有時(shí)候也會(huì)加上抽象. 多態(tài)的好處 允許不同類對(duì)...
    東經(jīng)315度閱讀 2,212評(píng)論 0 8
  • Java SE 基礎(chǔ): 封裝、繼承、多態(tài) 封裝: 概念:就是把對(duì)象的屬性和操作(或服務(wù))結(jié)合為一個(gè)獨(dú)立的整體,并盡...
    Jayden_Cao閱讀 2,259評(píng)論 0 8
  • 所有知識(shí)點(diǎn)已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)? 在 Jav...
    侯蛋蛋_閱讀 2,714評(píng)論 1 4
  • 不足的地方請(qǐng)大家多多指正,如有其它沒(méi)有想到的常問(wèn)面試題請(qǐng)大家多多評(píng)論,一起成長(zhǎng),感謝!~ String可以被繼承嗎...
    啟示錄是真的閱讀 3,080評(píng)論 3 3
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 5,239評(píng)論 1 114

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