高级 Java 面试通关知识点整理
轉(zhuǎn)載自?高級(jí) Java 面試通關(guān)知識(shí)點(diǎn)整理
1、常用設(shè)計(jì)模式
單例模式:懶漢式、餓漢式、雙重校驗(yàn)鎖、靜態(tài)加載,內(nèi)部類加載、枚舉類加載。保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。
代理模式:動(dòng)態(tài)代理和靜態(tài)代理,什么時(shí)候使用動(dòng)態(tài)代理。
適配器模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
裝飾者模式:動(dòng)態(tài)給類加功能。
觀察者模式:有時(shí)被稱作發(fā)布/訂閱模式,觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使它們能夠自動(dòng)更新自己。
策略模式:定義一系列的算法,把它們一個(gè)個(gè)封裝起來, 并且使它們可相互替換。
外觀模式:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。
命令模式:將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而使您可以用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。
創(chuàng)建者模式:將一個(gè)復(fù)雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
抽象工廠模式:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類。
2、基礎(chǔ)知識(shí)
Java基本類型哪些,所占字節(jié)和范圍
Set、List、Map的區(qū)別和聯(lián)系
什么時(shí)候使用Hashmap
什么時(shí)候使用Linkedhashmap、Concurrenthashmap、Weakhashmap
哪些集合類是線程安全的
為什么Set、List、map不實(shí)現(xiàn)Cloneable和Serializable接口
Concurrenthashmap的實(shí)現(xiàn),1.7和1.8的實(shí)現(xiàn)
Arrays.sort的實(shí)現(xiàn)
什么時(shí)候使用CopyOnArrayList
volatile的使用
synchronied的使用
reentrantlock的實(shí)現(xiàn)和Synchronied的區(qū)別
CAS的實(shí)現(xiàn)原理以及問題
AQS的實(shí)現(xiàn)原理
接口和抽象類的區(qū)別,什么時(shí)候使用
類加載機(jī)制的步驟,每一步做了什么,static和final修改的成員變量的加載時(shí)機(jī)
雙親委派模型
反射機(jī)制:反射動(dòng)態(tài)擦除泛型、反射動(dòng)態(tài)調(diào)用方法等
動(dòng)態(tài)綁定:父類引用指向子類對(duì)象
JVM內(nèi)存管理機(jī)制:有哪些區(qū)域,每個(gè)區(qū)域做了什么
JVM垃圾回收機(jī)制:垃圾回收算法 垃圾回收器 垃圾回收策略
jvm參數(shù)的設(shè)置和jvm調(diào)優(yōu)
什么情況產(chǎn)生年輕代內(nèi)存溢出、什么情況產(chǎn)生年老代內(nèi)存溢出
內(nèi)部類:靜態(tài)內(nèi)部類和匿名內(nèi)部類的使用和區(qū)別
Redis和memcached:什么時(shí)候選擇redis,什么時(shí)候選擇memcached,內(nèi)存模型和存儲(chǔ)策略是什么樣的
MySQL的基本操作 主從數(shù)據(jù)庫一致性維護(hù)
mysql的優(yōu)化策略有哪些
mysql索引的實(shí)現(xiàn) B+樹的實(shí)現(xiàn)原理
什么情況索引不會(huì)命中,會(huì)造成全表掃描
java中bio nio aio的區(qū)別和聯(lián)系
為什么bio是阻塞的 nio是非阻塞的 nio是模型是什么樣的
Java?io的整體架構(gòu)和使用的設(shè)計(jì)模式
Reactor模型和Proactor模型
http請(qǐng)求報(bào)文結(jié)構(gòu)和內(nèi)容
http三次握手和四次揮手
rpc相關(guān):如何設(shè)計(jì)一個(gè)rpc框架,從io模型 傳輸協(xié)議 序列化方式綜合考慮
Linux命令 統(tǒng)計(jì),排序,前幾問題等
StringBuff 和StringBuilder的實(shí)現(xiàn),底層實(shí)現(xiàn)是通過byte數(shù)據(jù),外加數(shù)組的拷貝來實(shí)現(xiàn)的
cas操作的使用
內(nèi)存緩存和數(shù)據(jù)庫的一致性同步實(shí)現(xiàn)
微服務(wù)的優(yōu)缺點(diǎn)
線程池的參數(shù)問題
ip問題 如何判斷ip是否在多個(gè)ip段中
判斷數(shù)組兩個(gè)中任意兩個(gè)數(shù)之和是否為給定的值
樂觀鎖和悲觀鎖的實(shí)現(xiàn)
synchronized實(shí)現(xiàn)原理
你在項(xiàng)目中遇到的困難和怎么解決的
你在項(xiàng)目中完成的比較出色的亮點(diǎn)
消息隊(duì)列廣播模式和發(fā)布/訂閱模式的區(qū)別
生產(chǎn)者消費(fèi)者代碼實(shí)現(xiàn)
死鎖代碼實(shí)現(xiàn)
線程池:參數(shù),每個(gè)參數(shù)的作用,幾種不同線程池的比較,阻塞隊(duì)列的使用,拒絕策略
Future和ListenableFuture 異步回調(diào)相關(guān)
算法相關(guān):判斷能否從數(shù)組中找出兩個(gè)數(shù)字和為給定值,隨機(jī)生成1~10000不重復(fù)并放入數(shù)組,求數(shù)組的子數(shù)組的最大和,二分查找算法的實(shí)現(xiàn)及其時(shí)間復(fù)雜計(jì)算
3、其它
算法:常用排序算法,二分查找,鏈表相關(guān),數(shù)組相關(guān),字符串相關(guān),樹相關(guān)等
常見序列化協(xié)議及其優(yōu)缺點(diǎn)
memcached內(nèi)存原理,為什么是基于塊的存儲(chǔ)
搭建一個(gè)rpc需要準(zhǔn)備什么
如果線上服務(wù)器頻繁地出現(xiàn)full gc ,如何去排查
如果某一時(shí)刻線上機(jī)器突然量變得很大,服務(wù)扛不住了,怎么解決
LUR算法的實(shí)現(xiàn)
LinkedHashMap實(shí)現(xiàn)LRU
定義棧的數(shù)據(jù)結(jié)構(gòu),請(qǐng)?jiān)谠擃愋椭袑?shí)現(xiàn)一個(gè)能夠找到棧最小元素的min函數(shù)
海量數(shù)據(jù)處理的解決思路
reactor模型的演變
阻塞、非阻塞、同步、異步區(qū)別
Collection的子接口
jvm調(diào)優(yōu)相關(guān)
zookeeper相關(guān),節(jié)點(diǎn)類型,如何實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和服務(wù)注冊(cè)
nginx負(fù)載均衡相關(guān),讓你去實(shí)現(xiàn)負(fù)載均衡,該怎么實(shí)現(xiàn)
linux命令,awk、cat、sort、cut、grep、uniq、wc、top等
壓力測試相關(guān),怎么分析,單接口壓測和多情況下的壓測
你覺得你的有點(diǎn)是什么,你的缺點(diǎn)是什么
spring?mvc的實(shí)現(xiàn)原理
netty底層實(shí)現(xiàn),IO模型,ChannelPipeline的實(shí)現(xiàn)和原理
緩存的設(shè)計(jì)和優(yōu)化
緩存和數(shù)據(jù)庫一致性同步解決方案
你所在項(xiàng)目的系統(tǒng)架構(gòu),談?wù)務(wù)w實(shí)現(xiàn)
消息隊(duì)列的使用場景
ActiveMQ、RabbitMQ、Kafka的區(qū)別?
總結(jié)
以上是生活随笔為你收集整理的高级 Java 面试通关知识点整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 古墓丽影8和古墓丽影9比哪个对电脑配置要
- 下一篇: 精选30道Java多线程面试题