面試必備!Java核心知識100+面試題

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

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

語法基礎

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

hashCode和equals方法的理解?

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

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

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

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

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

用最有效率的方法計算2乘以8?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

float f=3.4;是否正確?

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

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

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

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

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

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

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

什么時候用斷言(assert)?

集合框架

ArrayList和LinkedList有什么差別?

在哪種場景里應當用ArrayList(或LinkedList)?

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

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

HashMap 和 Hashtable 的區(qū)別?

HashSet 和 HashMap 區(qū)別?

HashMap 和 ConcurrentHashMap 的區(qū)別?

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

HashSet如何檢查重復?

comparable 和 comparator的區(qū)別?

如何對Object的list排序?

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

如何求ArrayList集合的交集、并集、差集、去重復并集?

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

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

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

Iterator 怎么使用?有什么特點?

Collection和Collections的區(qū)別?

List、Map、Set三個接口存取元素時,各有什么特點?

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

TreeMap和TreeSet在排序時如何比較元素?

IO/NIO

IO和NIO的區(qū)別?

Java中有幾種類型的流?

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

XML文檔定義有幾種形式?

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

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

什么是反射?

獲得一個類的類對象有哪些方式?

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

如何通過反射獲取和設置對象私有字段的值?

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

動態(tài)代理是什么?有哪些應用?

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

如何實現(xiàn)對象克???

怎么實現(xiàn)動態(tài)代理?

動態(tài)代理的不同實現(xiàn)方式相應的優(yōu)缺點?

并發(fā)編程

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

舉例說明同步和異步

ThreadLocal的原理是什么?

使用ThreadLocal有哪些注意事項?

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

volatile 能使得一個非原子操作變成原子操作嗎?

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

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

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

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

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

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

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

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

Lock與Synchronized的區(qū)別?

守護線程是什么?

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

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

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

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

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

當一個線程進入一個對象的synchronized方法A之后,其它線程是否可進入此對象的synchronized方法B?

多線程中 synchronized 鎖升級的原理是什么?

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

說一下 atomic 的原理?

線程池

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

什么是線程池(thread pool)?

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

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

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

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

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

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

簡述synchronized 和Java.util.concurrent.locks.Lock的異同?

異常

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

運行時異常與受檢異常有何異同?

列出一些你常見的運行時異常?

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

throw 和 throws 的區(qū)別?

JDBC

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

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

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

JDBC中如何進行事務處理?

JDBC能否處理Blob和Clob?

JDK特性

Lambda表達式有哪些應用?

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

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

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

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

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

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

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

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