更新時(shí)間:2019-10-14 15:28:35 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3670次
今天在這分享目前國(guó)內(nèi)公司Java面試常問(wèn)的問(wèn)題包括JVM、常用的算法和數(shù)據(jù)結(jié)構(gòu),redis緩存,分布式,Spring,微服務(wù)等。正所謂知己知彼,只有體系知識(shí)鞏固,面對(duì)不斷更新的技術(shù)才能快速掌握,同時(shí)在面試、工作中也更能脫穎而出!
Java集合22題
ArrayList和Vector的區(qū)別。
說(shuō)說(shuō)ArrayList,Vector,LinkedList的存儲(chǔ)性能和特性。
快速失敗(fail-fast)和安全失敗(fail-safe)的區(qū)別是什么?
hashmap的數(shù)據(jù)結(jié)構(gòu)。
HashMap的工作原理是什么?
Hashmap什么時(shí)候進(jìn)行擴(kuò)容呢?
List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?
Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?
兩個(gè)對(duì)象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話(huà)對(duì)不對(duì)?
heap和stack有什么區(qū)別。
Java集合類(lèi)框架的基本接口有哪些?
HashSet和TreeSet有什么區(qū)別?
HashSet的底層實(shí)現(xiàn)是什么?
LinkedHashMap的實(shí)現(xiàn)原理?
為什么集合類(lèi)沒(méi)有實(shí)現(xiàn)Cloneable和Serializable接口?
什么是迭代器(Iterator)?
Iterator和ListIterator的區(qū)別是什么?
數(shù)組(Array)和列表(ArrayList)有什么區(qū)別?什么時(shí)候應(yīng)該使用Array而不是ArrayList?
Java集合類(lèi)框架的最佳實(shí)踐有哪些?
Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?
Comparable和Comparator接口是干什么的?列出它們的區(qū)別
Collection和Collections的區(qū)別。
JVM與調(diào)優(yōu)21題
Java類(lèi)加載過(guò)程?
描述一下JVM加載Class文件的原理機(jī)制?
Java內(nèi)存分配。
GC是什么?為什么要有GC?
簡(jiǎn)述Java垃圾回收機(jī)制
如何判斷一個(gè)對(duì)象是否存活?(或者GC對(duì)象的判定方法)
垃圾回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制
垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?
Java中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述
深拷貝和淺拷貝。
System.gc()和Runtime.gc()會(huì)做什么事情?
finalize()方法什么時(shí)候被調(diào)用?析構(gòu)函數(shù)(finalization)的目的是什么?
如果對(duì)象的引用被置為null,垃圾收集器是否會(huì)立即釋放對(duì)象占用的內(nèi)存?
什么是分布式垃圾回收(DGC)?它是如何工作的?
串行(serial)收集器和吞吐量(throughput)收集器的區(qū)別是什么?
在Java中,對(duì)象什么時(shí)候可以被垃圾回收?
簡(jiǎn)述Java內(nèi)存分配與回收策率以及MinorGC和MajorGC。
JVM的永久代中會(huì)發(fā)生垃圾回收么?
Java中垃圾收集的方法有哪些?
什么是類(lèi)加載器,類(lèi)加載器有哪些?
類(lèi)加載器雙親委派模型機(jī)制?
并發(fā)編程28題
Synchronized用過(guò)嗎,其原理是什么?
你剛才提到獲取對(duì)象的鎖,這個(gè)“鎖”到底是什么?如何確定對(duì)象的鎖?
什么是可重入性,為什么說(shuō)Synchronized是可重入鎖?
JVM對(duì)Java的原生鎖做了哪些優(yōu)化?
為什么說(shuō)Synchronized是非公平鎖?
什么是鎖消除和鎖粗化?
為什么說(shuō)Synchronized是一個(gè)悲觀鎖?樂(lè)觀鎖的實(shí)現(xiàn)原理又是什么?什么是CAS,它有什么特性?
樂(lè)觀鎖一定就是好的嗎?
跟Synchronized相比,可重入鎖ReentrantLock其實(shí)現(xiàn)原理有什么不同?
那么請(qǐng)談?wù)凙QS框架是怎么回事兒?
請(qǐng)盡可能詳盡地對(duì)比下Synchronized和ReentrantLock的異同。
ReentrantLock是如何實(shí)現(xiàn)可重入性的?
除了ReetrantLock,你還接觸過(guò)JUC中的哪些并發(fā)工具?
請(qǐng)談?wù)凴eadWriteLock和StampedLock。
如何讓Java的線程彼此同步?你了解過(guò)哪些同步器?請(qǐng)分別介紹下。
CyclicBarrier和CountDownLatch看起來(lái)很相似,請(qǐng)對(duì)比下呢?
Java線程池相關(guān)問(wèn)題
Java中的線程池是如何實(shí)現(xiàn)的?
創(chuàng)建線程池的幾個(gè)核心構(gòu)造參數(shù)?
線程池中的線程是怎么創(chuàng)建的?是一開(kāi)始就隨著線程池的啟動(dòng)創(chuàng)建好的嗎?
既然提到可以通過(guò)配置不同參數(shù)創(chuàng)建出不同的線程池,那么Java中默認(rèn)實(shí)現(xiàn)好的線程池又有哪些呢?請(qǐng)比較它們的異同
如何在Java線程池中提交線程?
什么是Java的內(nèi)存模型,Java中各個(gè)線程是怎么彼此看到對(duì)方的變量的?
請(qǐng)談?wù)剉olatile有什么特點(diǎn),為什么它能保證變量對(duì)所有線程的可見(jiàn)性?
既然volatile能夠保證線程間的變量可見(jiàn)性,是不是就意味著基于volatile變量的運(yùn)算就是并發(fā)安全的?
請(qǐng)對(duì)比下volatile對(duì)比Synchronized的異同。
請(qǐng)談?wù)凾hreadLocal是怎么解決并發(fā)安全的?
很多人都說(shuō)要慎用ThreadLocal,談?wù)勀愕睦斫?,使用ThreadLocal需要注意些什么?
Netty10題
BIO、NIO和AIO的區(qū)別?
NIO的組成?
Netty的特點(diǎn)?
Netty的線程模型?
TCP粘包/拆包的原因及解決方法?
了解哪幾種序列化協(xié)議?
如何選擇序列化協(xié)議?
Netty的零拷貝實(shí)現(xiàn)?
Netty的高性能表現(xiàn)在哪些方面?
NIOEventLoopGroup源碼?
網(wǎng)絡(luò)
網(wǎng)絡(luò)7層架構(gòu)
TCP/IP原理
TCP三次握手/四次揮手
HTTP原理
傳輸流程
HTTP狀態(tài)
CDN原理
Redis
什么是redis?
Reids的特點(diǎn)
Redis支持的數(shù)據(jù)類(lèi)型
Redis是單進(jìn)程單線程的
虛擬內(nèi)存
Redis鎖
讀寫(xiě)分離模型
數(shù)據(jù)分片模型
Redis的回收策略
使用Redis有哪些好處?
redis相比memcached有哪些優(yōu)勢(shì)?4
redis常見(jiàn)性能問(wèn)題和解決方案
MySQL里有2000w數(shù)據(jù),redis中只存20w的數(shù)據(jù),如何保證redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)245
Memcache與Redis的區(qū)別都有哪些?
Redis常見(jiàn)的性能問(wèn)題都有哪些?如何解決?
Redis最適合的場(chǎng)景
相關(guān)java面試題推薦
Java程序員總結(jié)出必看的初級(jí)~高級(jí)技術(shù)面試題
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)