主要是自己在面試過程中整理的一些問題,以及自己被問到的關(guān)鍵點(diǎn)。
效果還是不錯(cuò)的,美團(tuán)、字節(jié)、boss直聘、完美世界、滴滴、度小滿、58、愛奇藝都通過了。
基礎(chǔ)部分
專業(yè)基礎(chǔ)
- 計(jì)算機(jī)通信的四元組
- tcp和udp是哪層的?啥區(qū)別?二者特點(diǎn)?
- TCP協(xié)議
- 握手揮手。一般問缺失某次握手會(huì)有什么結(jié)果,網(wǎng)絡(luò)異常會(huì)如何等
- keepalive方式和超時(shí)概念
- 突發(fā)大量time-waiting/close-waiting/xxxx的tcp鏈接,判斷原因,后續(xù)處理方式
- 擁塞控制
- CPU調(diào)度、死鎖概念、銀行家算法等
- HTTP協(xié)議,主要看下1.1版本即可
JVM
- 堆內(nèi)存劃分以及堆外內(nèi)存
- 直接內(nèi)存的概念
- 對(duì)象頭
- 線程共享與線程獨(dú)占
- 內(nèi)存回收算法
- CMS和G1的特點(diǎn)與過程,盡量詳細(xì),其他的基本很少問
- 常用jdk工具,jmap、jstack、jps、jstat等的簡(jiǎn)單概念,知道這四個(gè)哪個(gè)是干啥的就行
多線程
- 線程池的運(yùn)行模型,以及參數(shù)意義和線程數(shù)的設(shè)定思路
- 多線程間數(shù)據(jù)共享(拓展:進(jìn)程間數(shù)據(jù)共享)
- 多線程調(diào)度方式:Object類的、Thread類的以及JUC包的都需要了解
- ThreadLocal和Inheritablethreadlocal
- 生產(chǎn)-消費(fèi)者模型
- 異步/響應(yīng)式優(yōu)化設(shè)計(jì),F(xiàn)uture和CompletableFuture等
- 阻塞隊(duì)列
- 線程安全的概念,HashTable到ConcurrentHashMap的變化,并自行設(shè)計(jì)一個(gè)簡(jiǎn)單的線程安全的集合類
鎖
- Sycronized鎖升級(jí)機(jī)制
- 偏向鎖的概念
- Lock接口
- ReentrenLock的重入原理
- ReadWriteLock簡(jiǎn)單了解(這玩意本來也沒啥意思)
- 設(shè)計(jì)一把鎖(考的是你對(duì)鎖的理解,要明白鎖的幾個(gè)必須元素,以及風(fēng)險(xiǎn)規(guī)避)
集合、Stream、Iterator等
- Java8的Stream工作模式簡(jiǎn)單了解一下
- Iterator、foreach(A a : Collection aaa)、aaa.foreach()、for(a,b,c)的區(qū)別
ArrayList、LinkedList這些結(jié)構(gòu)了解一下,知道集合中哪些線程安全哪些不安全,為啥不安全,就可以了
為什么緩存一般建議在初始化完畢,使用之前,轉(zhuǎn)換成不可變集合?
IO模型
BIO
NIO
AIO
Linux環(huán)境
select
poll
epoll
框架、DB與分布式
Spring
Spring的Bean加載機(jī)制與Java的類加載機(jī)制(雙親委派)
Spring容器提供DI和AOP的原理
@Repository和其他@Component、@Service等的區(qū)別
@Configuration和@Order用法與場(chǎng)景
@Controller和@RestController區(qū)別
MySQL
B+樹的特點(diǎn)。B+比B多了什么?為什么用B+不用紅黑?
復(fù)合索引的最左優(yōu)先原則
聚簇索引與非聚簇索引
查詢時(shí)的回表問題如何優(yōu)化?索引覆蓋是什么?
索引合并
MySql對(duì)查詢語句會(huì)有哪些優(yōu)化?
索引設(shè)置在頻繁更新的列上會(huì)有哪些問題?
頁的概念
binlog、redolog、undolog
主從延遲的處理思路和優(yōu)化方案
分布式環(huán)境
Redis
redis高性能的原因
幾種基本數(shù)據(jù)結(jié)構(gòu),str、set、zset、list、hash
基本數(shù)據(jù)類型的特殊用法,bitmap、隊(duì)列、布隆過濾器、hyperloglog等
持久化方式,全量和增量
集群場(chǎng)景數(shù)據(jù)讀寫的節(jié)點(diǎn)劃分方式
常見問題:熱key、大value、keys*等的處理方式以及出現(xiàn)問題的原因
緩存穿透、擊穿、雪崩的概念
redis事務(wù)、lua腳本、管道通信
消息隊(duì)列
Kafka高效原因
mq如何保證“最多消費(fèi)一次”、“至少消費(fèi)一次”、“一定只消費(fèi)一次”
kafka partition
mq的pull push模型
微服務(wù)
CAP模型、AP和CP
分布式鎖設(shè)計(jì)
熔斷降級(jí)的實(shí)現(xiàn)思路(線程池、信號(hào)量)
RPC的分層設(shè)計(jì),可以基于幾種rpc框架來說,比如feign、dubbo、grpc、thrift等
服務(wù)間數(shù)據(jù)互通的幾種方式,越多越好
常見的長(zhǎng)鏈接與短鏈接
分布式事務(wù)的幾種解決方案
系統(tǒng)設(shè)計(jì)
秒殺系統(tǒng)
高并發(fā)變低并發(fā)
短高峰變長(zhǎng)低峰
多節(jié)點(diǎn)處理
避免單點(diǎn)高壓
避免超賣和未賣完卻先拒絕訂單的情況
業(yè)務(wù)復(fù)雜的高并發(fā)場(chǎng)景
數(shù)據(jù)庫冷熱字段拆表
根據(jù)合理的鍵拆庫
數(shù)據(jù)緩沖層設(shè)計(jì)
消息隊(duì)列分區(qū)(partition)消費(fèi)設(shè)計(jì)
請(qǐng)求壓力均攤
特殊數(shù)據(jù)庫或引擎介入(時(shí)間數(shù)據(jù)庫、流式計(jì)算引擎等)
海量數(shù)據(jù)場(chǎng)景
合理的數(shù)據(jù)拆分
靈活利用不同類型數(shù)據(jù)庫的優(yōu)勢(shì)
冷數(shù)據(jù)定期歸檔
大數(shù)據(jù)介入(Hive等)
靈活的緩存設(shè)計(jì)(不要緩存最終內(nèi)容,而是緩存中間計(jì)算結(jié)果)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。