根據(jù)@會(huì)發(fā)光的二極管的建議,所有問(wèn)題均已整理到github
地址 : https://github.com/wgd12389/java-server-interview-questions
歡迎各位吧自己遇到的問(wèn)題進(jìn)行總結(jié),提pr
java基礎(chǔ)
Arrays.sort實(shí)現(xiàn)原理和Collection實(shí)現(xiàn)原理
foreach和while的區(qū)別(編譯之后)
線程池的種類(lèi),區(qū)別和使用場(chǎng)景
分析線程池的實(shí)現(xiàn)原理和線程的調(diào)度過(guò)程
線程池如何調(diào)優(yōu)
線程池的最大線程數(shù)目根據(jù)什么確定
動(dòng)態(tài)代理的幾種方式
HashMap的并發(fā)問(wèn)題
了解LinkedHashMap的應(yīng)用嗎
反射的原理,反射創(chuàng)建類(lèi)實(shí)例的三種方式是什么?
cloneable接口實(shí)現(xiàn)原理,淺拷貝or深拷貝
Java NIO使用
hashtable和hashmap的區(qū)別及實(shí)現(xiàn)原理,hashmap會(huì)問(wèn)到數(shù)組索引,hash碰撞怎么解決
arraylist和linkedlist區(qū)別及實(shí)現(xiàn)原理
反射中,Class.forName和ClassLoader區(qū)別
String,Stringbuffer,StringBuilder的區(qū)別?
有沒(méi)有可能2個(gè)不相等的對(duì)象有相同的hashcode
簡(jiǎn)述NIO的最佳實(shí)踐,比如netty,mina
TreeMap的實(shí)現(xiàn)原理
JVM相關(guān)
類(lèi)的實(shí)例化順序,比如父類(lèi)靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,子類(lèi)靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,他們的執(zhí)行順序
JVM內(nèi)存分代
Java 8的內(nèi)存分代改進(jìn)
JVM垃圾回收機(jī)制,何時(shí)觸發(fā)MinorGC等操作
jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點(diǎn)講講對(duì)象如何晉升到老年代,幾種主要的jvm參數(shù)等
你知道哪幾種垃圾收集器,各自的優(yōu)缺點(diǎn),重點(diǎn)講下cms,g1
新生代和老生代的內(nèi)存回收策略
Eden和Survivor的比例分配等
深入分析了Classloader,雙親委派機(jī)制
JVM的編譯優(yōu)化
對(duì)Java內(nèi)存模型的理解,以及其在并發(fā)中的應(yīng)用
指令重排序,內(nèi)存柵欄等
OOM錯(cuò)誤,stackoverflow錯(cuò)誤,permgen space錯(cuò)誤
JVM常用參數(shù)
tomcat結(jié)構(gòu),類(lèi)加載器流程
volatile的語(yǔ)義,它修飾的變量一定線程安全嗎
g1和cms區(qū)別,吞吐量?jī)?yōu)先和響應(yīng)優(yōu)先的垃圾收集器選擇
說(shuō)一說(shuō)你對(duì)環(huán)境變量classpath的理解?如果一個(gè)類(lèi)不在classpath下,為什么會(huì)拋出ClassNotFoundException異常,如果在不改變這個(gè)類(lèi)路徑的前期下,怎樣才能正確加載這個(gè)類(lèi)?
說(shuō)一下強(qiáng)引用、軟引用、弱引用、虛引用以及他們之間和gc的關(guān)系
JUC/并發(fā)相關(guān)
ThreadLocal用過(guò)么,原理是什么,用的時(shí)候要注意什么
Synchronized和Lock的區(qū)別
synchronized 的原理,什么是自旋鎖,偏向鎖,輕量級(jí)鎖,什么叫可重入鎖,什么叫公平鎖和非公平鎖
concurrenthashmap具體實(shí)現(xiàn)及其原理,jdk8下的改版
用過(guò)哪些原子類(lèi),他們的參數(shù)以及原理是什么
cas是什么,他會(huì)產(chǎn)生什么問(wèn)題(ABA問(wèn)題的解決,如加入修改次數(shù)、版本號(hào))
如果讓你實(shí)現(xiàn)一個(gè)并發(fā)安全的鏈表,你會(huì)怎么做
簡(jiǎn)述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不同之處
簡(jiǎn)述AQS的實(shí)現(xiàn)原理
countdowlatch和cyclicbarrier的用法,以及相互之間的差別?
concurrent包中使用過(guò)哪些類(lèi)?分別說(shuō)說(shuō)使用在什么場(chǎng)景?為什么要使用?
LockSupport工具
Condition接口及其實(shí)現(xiàn)原理
Fork/Join框架的理解
jdk8的parallelStream的理解
分段鎖的原理,鎖力度減小的思考
Spring
Spring AOP與IOC的實(shí)現(xiàn)原理
Spring的beanFactory和factoryBean的區(qū)別
為什么CGlib方式可以對(duì)接口的實(shí)現(xiàn)進(jìn)行代理?
RMI與代理模式
Spring的事務(wù)隔離級(jí)別,實(shí)現(xiàn)原理
對(duì)Spring的理解,非單例注入的原理?它的生命周期?循環(huán)注入的原理,aop的實(shí)現(xiàn)原理,說(shuō)說(shuō)aop中的幾個(gè)術(shù)語(yǔ),它們是怎么相互工作的?
Mybatis的底層實(shí)現(xiàn)原理
MVC框架原理,他們都是怎么做url路由的
spring boot特性,優(yōu)勢(shì),適用場(chǎng)景等
quartz和timer對(duì)比
spring的controller是單例還是多例,怎么保證并發(fā)的安全
分布式相關(guān)
Dubbo的底層實(shí)現(xiàn)原理和機(jī)制
描述一個(gè)服務(wù)從發(fā)布到被消費(fèi)的詳細(xì)過(guò)程
分布式系統(tǒng)怎么做服務(wù)治理
接口的冪等性的概念
消息中間件如何解決消息丟失問(wèn)題
Dubbo的服務(wù)請(qǐng)求失敗怎么處理
重連機(jī)制會(huì)不會(huì)造成錯(cuò)誤
對(duì)分布式事務(wù)的理解
如何實(shí)現(xiàn)負(fù)載均衡,有哪些算法可以實(shí)現(xiàn)?
Zookeeper的用途,選舉的原理是什么?
數(shù)據(jù)的垂直拆分水平拆分。
zookeeper原理和適用場(chǎng)景
zookeeper watch機(jī)制
redis/zk節(jié)點(diǎn)宕機(jī)如何處理
分布式集群下如何做到唯一序列號(hào)
如何做一個(gè)分布式鎖
用過(guò)哪些MQ,怎么用的,和其他mq比較有什么優(yōu)缺點(diǎn),MQ的連接是線程安全的嗎
MQ系統(tǒng)的數(shù)據(jù)如何保證不丟失
列舉出你能想到的數(shù)據(jù)庫(kù)分庫(kù)分表策略;分庫(kù)分表后,如何解決全表查詢(xún)的問(wèn)題。
算法&數(shù)據(jù)結(jié)構(gòu)&設(shè)計(jì)模式
海量url去重類(lèi)問(wèn)題(布隆過(guò)濾器)
數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)描述,各自的時(shí)間復(fù)雜度
二叉樹(shù)遍歷
快速排序
BTree相關(guān)的操作
在工作中遇到過(guò)哪些設(shè)計(jì)模式,是如何應(yīng)用的
hash算法的有哪幾種,優(yōu)缺點(diǎn),使用場(chǎng)景
什么是一致性hash
paxos算法
在裝飾器模式和代理模式之間,你如何抉擇,請(qǐng)結(jié)合自身實(shí)際情況聊聊
代碼重構(gòu)的步驟和原因,如果理解重構(gòu)到模式?
數(shù)據(jù)庫(kù)
MySQL InnoDB存儲(chǔ)的文件結(jié)構(gòu)
索引樹(shù)是如何維護(hù)的?
數(shù)據(jù)庫(kù)自增主鍵可能的問(wèn)題
MySQL的幾種優(yōu)化
mysql索引為什么使用B+樹(shù)
數(shù)據(jù)庫(kù)鎖表的相關(guān)處理
索引失效場(chǎng)景
高并發(fā)下如何做到安全的修改同一行數(shù)據(jù),樂(lè)觀鎖和悲觀鎖是什么,INNODB的行級(jí)鎖有哪2種,解釋其含義
數(shù)據(jù)庫(kù)會(huì)死鎖嗎,舉一個(gè)死鎖的例子,mysql怎么解決死鎖
Redis&緩存相關(guān)
Redis的并發(fā)競(jìng)爭(zhēng)問(wèn)題如何解決
了解Redis事務(wù)的CAS操作嗎
緩存機(jī)器增刪如何對(duì)系統(tǒng)影響最小,一致性哈希的實(shí)現(xiàn)
Redis持久化的幾種方式,優(yōu)缺點(diǎn)是什么,怎么實(shí)現(xiàn)的
Redis的緩存失效策略
緩存穿透的解決辦法
redis集群,高可用,原理
mySQL里有2000w數(shù)據(jù),redis中只存20w的數(shù)據(jù),如何保證redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)
用Redis和任意語(yǔ)言實(shí)現(xiàn)一段惡意登錄保護(hù)的代碼,限制1小時(shí)內(nèi)每用戶(hù)Id最多只能登錄5次
redis的數(shù)據(jù)淘汰策略
網(wǎng)絡(luò)相關(guān)
http1.0和http1.1有什么區(qū)別
TCP/IP協(xié)議
TCP三次握手和四次揮手的流程,為什么斷開(kāi)連接要4次,如果握手只有兩次,會(huì)出現(xiàn)什么
TIME_WAIT和CLOSE_WAIT的區(qū)別
說(shuō)說(shuō)你知道的幾種HTTP響應(yīng)碼
當(dāng)你用瀏覽器打開(kāi)一個(gè)鏈接的時(shí)候,計(jì)算機(jī)做了哪些工作步驟
TCP/IP如何保證可靠性,數(shù)據(jù)包有哪些數(shù)據(jù)組成
長(zhǎng)連接與短連接
Http請(qǐng)求get和post的區(qū)別以及數(shù)據(jù)包格式
簡(jiǎn)述tcp建立連接3次握手,和斷開(kāi)連接4次握手的過(guò)程;關(guān)閉連接時(shí),出現(xiàn)TIMEWAIT過(guò)多是由什么原因引起,是出現(xiàn)在主動(dòng)斷開(kāi)方還是被動(dòng)斷開(kāi)方。
其他
maven解決依賴(lài)沖突,快照版和發(fā)行版的區(qū)別
Linux下IO模型有幾種,各自的含義是什么
實(shí)際場(chǎng)景問(wèn)題,海量登錄日志如何排序和處理SQL操作,主要是索引和聚合函數(shù)的應(yīng)用
實(shí)際場(chǎng)景問(wèn)題解決,典型的TOP K問(wèn)題
線上bug處理流程
如何從線上日志發(fā)現(xiàn)問(wèn)題
linux利用哪些命令,查找哪里出了問(wèn)題(例如io密集任務(wù),cpu過(guò)度)
場(chǎng)景問(wèn)題,有一個(gè)第三方接口,有很多個(gè)線程去調(diào)用獲取數(shù)據(jù),現(xiàn)在規(guī)定每秒鐘最多有10個(gè)線程同時(shí)調(diào)用它,如何做到。
用三個(gè)線程按順序循環(huán)打印abc三個(gè)字母,比如abcabcabc。
常見(jiàn)的緩存策略有哪些,你們項(xiàng)目中用到了什么緩存系統(tǒng),如何設(shè)計(jì)的
設(shè)計(jì)一個(gè)秒殺系統(tǒng),30分鐘沒(méi)付款就自動(dòng)關(guān)閉交易(并發(fā)會(huì)很高)
請(qǐng)列出你所了解的性能測(cè)試工具
后臺(tái)系統(tǒng)怎么防止請(qǐng)求重復(fù)提交?