一、java面試題
熟練掌握java是很關(guān)鍵的豹障,大公司不僅僅要求你會(huì)使用幾個(gè)api冯事,更多的是要你熟悉源碼實(shí)現(xiàn)原理,甚至要你知道有哪些不足血公,怎么改進(jìn)昵仅,還有一些java有關(guān)的一些算法,設(shè)計(jì)模式等等。
(一) java基礎(chǔ)面試知識(shí)點(diǎn)
java中==和equals和hashCode的區(qū)別
int摔笤、char够滑、long各占多少字節(jié)數(shù)
int與integer的區(qū)別
談?wù)剬?duì)java多態(tài)的理解
String、StringBuffer吕世、StringBuilder區(qū)別
什么是內(nèi)部類彰触??jī)?nèi)部類的作用
抽象類和接口區(qū)別
抽象類的意義
抽象類與接口的應(yīng)用場(chǎng)景
抽象類是否可以沒有方法和屬性?
接口的意義
泛型中extends和super的區(qū)別
父類的靜態(tài)方法能否被子類重寫
進(jìn)程和線程的區(qū)別
final命辖,finally况毅,finalize的區(qū)別
序列化的方式
Serializable 和Parcelable 的區(qū)別
靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫尔艇?以及原因尔许?
靜態(tài)內(nèi)部類的設(shè)計(jì)意圖
成員內(nèi)部類、靜態(tài)內(nèi)部類终娃、局部?jī)?nèi)部類和匿名內(nèi)部類的理解味廊,以及項(xiàng)目中的應(yīng)用
談?wù)剬?duì)kotlin的理解
閉包和局部?jī)?nèi)部類的區(qū)別
string 轉(zhuǎn)換成 integer的方式及原理
(二) java深入源碼級(jí)的面試題(有難度)
哪些情況下的對(duì)象會(huì)被垃圾回收機(jī)制處理掉?
講一下常見編碼方式棠耕?
utf-8編碼中的中文占幾個(gè)字節(jié)余佛;int型幾個(gè)字節(jié)?
靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別窍荧,什么場(chǎng)景使用辉巡?
Java的異常體系
談?wù)勀銓?duì)解析與分派的認(rèn)識(shí)。
修改對(duì)象A的equals方法的簽名蕊退,那么使用HashMap存放這個(gè)對(duì)象實(shí)例的時(shí)候红氯,會(huì)調(diào)用哪個(gè)equals方法?
Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么咕痛?
如何將一個(gè)Java對(duì)象序列化到文件里?
說說你對(duì)Java反射的理解
說說你對(duì)Java注解的理解
說說你對(duì)依賴注入的理解
說一下泛型原理喇嘱,并舉例說明
Java中String的了解
String為什么要設(shè)計(jì)成不可變的茉贡?
Object類的equal和hashCode方法重寫,為什么者铜?
(三) 數(shù)據(jù)結(jié)構(gòu)
常用數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介
并發(fā)集合了解哪些腔丧?
列舉java的集合以及集合之間的繼承關(guān)系
集合類以及集合框架
容器類介紹以及之間的區(qū)別(容器類估計(jì)很多人沒聽這個(gè)詞,Java容器主要可以劃分為4個(gè)部分:List列表作烟、Set集合愉粤、Map映射、工具類(Iterator迭代器拿撩、Enumeration枚舉類衣厘、Arrays和Collections)
List,Set,Map的區(qū)別
List和Map的實(shí)現(xiàn)方式以及存儲(chǔ)方式
HashMap的實(shí)現(xiàn)原理
HashMap數(shù)據(jù)結(jié)構(gòu)?
HashMap源碼理解
HashMap如何put數(shù)據(jù)(從HashMap源碼角度講解)?
HashMap怎么手寫實(shí)現(xiàn)影暴?
ConcurrentHashMap的實(shí)現(xiàn)原理
ArrayMap和HashMap的對(duì)比
HashTable實(shí)現(xiàn)原理
TreeMap具體實(shí)現(xiàn)
HashMap和HashTable的區(qū)別
HashMap與HashSet的區(qū)別
HashSet與HashMap怎么判斷集合元素重復(fù)错邦?
集合Set實(shí)現(xiàn)Hash怎么防止碰撞
ArrayList和LinkedList的區(qū)別,以及應(yīng)用場(chǎng)景
數(shù)組和鏈表的區(qū)別
二叉樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷的具體實(shí)現(xiàn)
堆的結(jié)構(gòu)
堆和樹的區(qū)別
堆和棧在內(nèi)存中的區(qū)別是什么(解答提示:可以從數(shù)據(jù)結(jié)構(gòu)方面以及實(shí)際實(shí)現(xiàn)方面兩個(gè)方面去回答)型宙?
什么是深拷貝和淺拷貝
手寫鏈表逆序代碼
講一下對(duì)樹撬呢,B+樹的理解
講一下對(duì)圖的理解
判斷單鏈表成環(huán)與否?
鏈表翻轉(zhuǎn)(即:翻轉(zhuǎn)一個(gè)單項(xiàng)鏈表)
合并多個(gè)單有序鏈表(假設(shè)都是遞增的)
(四) 線程妆兑、多線程和線程池
開啟線程的三種方式魂拦?
線程和進(jìn)程的區(qū)別?
為什么要有線程搁嗓,而不是僅僅用進(jìn)程芯勘?
run()和start()方法區(qū)別
如何控制某個(gè)方法允許并發(fā)訪問線程的個(gè)數(shù)?
在Java中wait和seelp方法的不同谱姓;
談?wù)剋ait/notify關(guān)鍵字的理解
什么導(dǎo)致線程阻塞借尿?
線程如何關(guān)閉?
講一下java中的同步的方法
數(shù)據(jù)一致性如何保證屉来?
如何保證線程安全路翻?
如何實(shí)現(xiàn)線程同步?
兩個(gè)進(jìn)程同時(shí)要求寫或者讀茄靠,能不能實(shí)現(xiàn)茂契?如何防止進(jìn)程的同步?
線程間操作List
Java中對(duì)象的生命周期
Synchronized用法
synchronize的原理
談?wù)剬?duì)Synchronized關(guān)鍵字慨绳,類鎖掉冶,方法鎖,重入鎖的理解
static synchronized 方法的多線程訪問和作用
同一個(gè)類里面兩個(gè)synchronized方法脐雪,兩個(gè)線程同時(shí)訪問的問題
volatile的原理
談?wù)剉olatile關(guān)鍵字的用法
談?wù)剉olatile關(guān)鍵字的作用
談?wù)凬IO的理解
synchronized 和volatile 關(guān)鍵字的區(qū)別
synchronized與Lock的區(qū)別
ReentrantLock 厌小、synchronized和volatile比較
ReentrantLock的內(nèi)部實(shí)現(xiàn)
lock原理
死鎖的四個(gè)必要條件?
怎么避免死鎖战秋?
對(duì)象鎖和類鎖是否會(huì)互相影響璧亚?
什么是線程池,如何使用?
Java的并發(fā)脂信、多線程癣蟋、線程模型
談?wù)剬?duì)多線程的理解
多線程有什么要注意的問題?
談?wù)勀銓?duì)并發(fā)編程的理解并舉例說明
談?wù)勀銓?duì)多線程同步機(jī)制的理解狰闪?
如何保證多線程讀寫文件的安全疯搅?
多線程斷點(diǎn)續(xù)傳原理
斷點(diǎn)續(xù)傳的實(shí)現(xiàn)