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