秋招結(jié)束,已經(jīng)獲取京東特碳,拼多多午乓,OPPO硅瞧,小米,華為瘾英,阿里Offer缺谴。這次不多說太多湿蛔,分享下Java面試的一些高頻問點(diǎn)面經(jīng)阳啥,希望對還在找工作的朋友有所幫助察迟!不要私藏哦耳高,可以轉(zhuǎn)發(fā)朋友圈讓給身邊的朋友參考參考哈哈哈哈泌枪!
計(jì)算機(jī)網(wǎng)絡(luò)
這些問題是最常見,感覺基本上也就會問這些误证。
OIS參考模型雷厂,每一層涉及到了哪些協(xié)議,每一層負(fù)責(zé)了什么诈皿?
最重要的就是傳輸層,這一塊一定要好好看
TCP的特點(diǎn)是什么截歉?什么是窗口滑動協(xié)議瘪松,什么是快速重傳,什么是擁塞避免墅诡,什么是慢啟動末早?怎么做到可靠數(shù)據(jù)傳輸然磷?
TCP的流量控制是什么姿搜?如果RcvWindow=0應(yīng)該怎么辦痪欲?
有哪幾種定時(shí)器悦穿?作用分別是什么业踢?
TCP和UDP的區(qū)別栗柒?什么場景使用TCP,什么場景什么UDP瞬沦?哪些應(yīng)用層協(xié)議使用了TCP,哪些使用了UDP逛钻?UDP要實(shí)現(xiàn)可靠數(shù)據(jù)傳輸應(yīng)該怎么做僚焦?
TCP的三次握手和四次揮手?為什么是三次曙痘,為什么是四次?為什么TCP采用隨機(jī)初始序列號?客戶端和服務(wù)器最多能發(fā)送和接收多少TCP連接數(shù)茧痒?(最后一個(gè)問的較少)
如果TCP連接的時(shí)候服務(wù)器發(fā)送的最后一個(gè)報(bào)文時(shí)弄企,客戶端掛了會怎樣区拳?那如果服務(wù)器宕機(jī)了劳闹,客戶端怎么處理?
TIME_WAIT 和 CLOSE_WAIT 狀態(tài)洽瞬?TIME_WAIT 為什么需要保持 2MSL 這么長的時(shí)間本涕?大量TIME_WAIT造成的影響?如何盡量處理 TIMEWAIT 過多伙窃?
TCP粘包(問的較少)
影響TCP 網(wǎng)絡(luò)時(shí)延的因素
當(dāng)你輸入域名訪問一個(gè)網(wǎng)站的時(shí)候菩颖,背后的過程是什么涉及到哪些協(xié)議?
什么是https協(xié)議为障?https協(xié)議用到了哪種密鑰晦闰?
什么是有狀態(tài)什么是無狀態(tài)?
HTTP的八種請求鳍怨?GET和POST的區(qū)別呻右?
HTTP的一些常見的狀態(tài)碼要熟悉!重定向和轉(zhuǎn)發(fā)的區(qū)別鞋喇?
HTTP和HTTPS的區(qū)別声滥?HTTP1.0和HTTP1.1的區(qū)別?
HTTPS的工作流程侦香?
Cookie落塑,Session纽疟,Token的區(qū)別
SSL加密的過程?延伸出對稱加密和非對稱加密的過程和區(qū)別
DNS協(xié)議憾赁!域名解析過程污朽,遞歸查詢和迭代查詢的區(qū)別?
Ping命令的過程和ARP協(xié)議(這個(gè)做了解就好了)
操作系統(tǒng)
這個(gè)是比較慘的龙考,但是一般問的不深蟆肆。
進(jìn)程和線程的區(qū)別是什么?進(jìn)程和線程占有的資源是哪些洲愤?
操作系統(tǒng)創(chuàng)建進(jìn)程的過程颓芭?進(jìn)程的狀態(tài)和控制原語?Java的Runnable對應(yīng)著哪些操作系統(tǒng)狀態(tài)柬赐?還有哪些控制函數(shù)像sleep亡问,notify這些改成成什么狀態(tài)了?
進(jìn)程間通信肛宋!為什么需要進(jìn)程間通信州藕?線程通信?
進(jìn)程同步和進(jìn)程互斥酝陈。實(shí)現(xiàn)臨界區(qū)互斥的基本方法床玻?
如何正確的停止一個(gè)線程!
中斷和異常
進(jìn)程隔離沉帮,虛擬內(nèi)存锈死,虛擬地址空間
多線程、多進(jìn)程的區(qū)別及適用場景
什么是緩存穆壕?有哪些緩存的更新算法待牵?
用過的Linux命令,常用:看被占用的端口的進(jìn)程喇勋;查看一個(gè)進(jìn)程的端口號缨该;顯示CPU的信息 ,查看CPU使用率川背;查看所有進(jìn)程贰拿;查看進(jìn)程的詳細(xì)信息;查看內(nèi)存使用情況等等
僵尸進(jìn)程熄云,孤兒進(jìn)程以及守護(hù)進(jìn)程膨更?怎么創(chuàng)建一個(gè)守護(hù)線程?僵尸進(jìn)程危害以及避免僵尸進(jìn)程的方式!
進(jìn)程調(diào)度算法以及死鎖缴允!產(chǎn)生死鎖原因询一;產(chǎn)生死鎖的條件;處理死鎖的幾種條件;銀行家算法
操作系統(tǒng)的特征(這個(gè)最基本健蕊,但是一次面試我不知道)
數(shù)據(jù)庫
數(shù)據(jù)庫的事務(wù)菱阵,事物的特性,事務(wù)的隔離級別分別解決了哪些問題缩功,理解什么是臟讀晴及,幻讀! 事務(wù)的實(shí)現(xiàn)原理通過什么要保證的事務(wù)的特性嫡锌?
什么是左連接虑稼,什么是右連接,什么是全連接势木,什么是內(nèi)連接蛛倦?
數(shù)據(jù)庫的索引有什么作用?用什么來實(shí)現(xiàn)的啦桌?好處壞處是啥溯壶?
索引的種類,原理甫男,索引存了哪些內(nèi)容且改,什么時(shí)候索引會失效?唯一索引和主鍵索引的區(qū)別板驳!單列和聯(lián)合索引又跛,最左匹配原則,什么時(shí)候該用聯(lián)合索引若治?
怎么看這個(gè)表是否加了索引慨蓝?
B樹和B+樹有什么區(qū)別?為什么索引不用B樹端幼?那B+樹的葉子結(jié)點(diǎn)上存了哪些信息礼烈?
數(shù)據(jù)庫的鎖?樂觀鎖悲觀鎖静暂,共享鎖和排它鎖济丘。
MySql中主要使用的引擎谱秽,它們主要的區(qū)別是啥洽蛀。
數(shù)據(jù)庫范式
數(shù)據(jù)庫五大約束?
數(shù)據(jù)庫連接池:工作原理疟赊,參數(shù)郊供,種類,會出現(xiàn)的問題
數(shù)據(jù)庫的讀寫分離近哟,數(shù)據(jù)切分(數(shù)據(jù)庫分庫分表驮审,水平切分垂直切分啊)
數(shù)據(jù)庫的主從:實(shí)現(xiàn)原理,mysql主從復(fù)制的方式疯淫,如何配置主從同步地来,主從同步會出現(xiàn)的問題
數(shù)據(jù)結(jié)構(gòu)和算法
Java知識
Java知識要準(zhǔn)備的太多了,很多細(xì)節(jié)熙掺,我就撿著說一些都是我自己匯總的一些
Java 基礎(chǔ)
Java和c++的區(qū)別(第一次被問我說的很糟)未斑,Java為什么跨平臺?
Java語言的特點(diǎn)和特性(第一次我也回答的很糟)币绩,多態(tài)的底層原理蜡秽?
抽象類和接口的區(qū)別?抽象類與普通類的區(qū)別缆镣?
Java訪問修飾符有哪些芽突?
this關(guān)鍵字和super關(guān)鍵字?
Object類下面的方法董瞻,尤其是hashCode方法和equals方法寞蚌?
== 和 equals 的區(qū)別是什么?若對一個(gè)類不重寫力细,它的equals()方法是如何比較的睬澡?int 和Integer的比較!
Java基本的數(shù)據(jù)類型眠蚂?
String為什么不可變煞聪?好處在哪?String 常量池逝慧?String昔脯, Stringbuffer, StringBuilder 的區(qū)別笛臣。
static關(guān)鍵字(第一次問我忘了都不知道)和final關(guān)鍵字
ArrayList 和 LinkedList 區(qū)別云稚?三種方式訪問集合中的元素,ArrayList遍歷刪除會出的問題沈堡?Foreach原理以及Fail-fast機(jī)制静陈!
Java泛型
Java反射:反射的好處;得到class的方式诞丽;反射的原理
Throwable鲸拥、error矢洲、exception的區(qū)別贷掖?異常的種類!
Java創(chuàng)建線程的四種方式酥郭?線程實(shí)現(xiàn)callable接口和runnable接口的區(qū)別懂衩?線程中start和run的區(qū)別撞叨?
sleep()金踪,wait(),yield()和join()方法牵敷?sleep()與wait()的區(qū)別胡岔?
Java是值傳遞還是引用傳遞
Java的null類型?java創(chuàng)建對象時(shí)枷餐,new 出一個(gè)對象 和 = null的區(qū)別姐军?空串與null串?
Java中創(chuàng)建對象的5種方式尖淘?
為什么會出現(xiàn) 4.0-3.6=0.40000001 這種現(xiàn)象奕锌?
HashMap,HashTable,CourrentHashMap:
HashMap的底層實(shí)現(xiàn)村生,put惊暴,get過程;
如何解決Hash碰撞的趁桃;(延伸出Hash沖突的幾種解決方法)
HashMap的初始化容量為什么為2的次冪辽话?
為什么HashMap是非線程安全的?
HashMap和HashTable的區(qū)別卫病?
為什么HashMap長度大于8才轉(zhuǎn)換為紅黑樹油啤,而不是6?
HashMap和TreeMap比較蟀苛?
HashMap,HashTable,CourrentHashMap的key和value是否可為null益咬?那為什么這么設(shè)計(jì)?
CourrentHashMap為什么是線程安全的帜平?(引出Java線程安全幽告,Volatile關(guān)鍵字,CAS這些)
并發(fā)編程的的三個(gè)概念(特性)裆甩?為什么會有Volatile關(guān)鍵字冗锁?volatile關(guān)鍵字的兩層語義!嗤栓!Volatile底層原理6澈印!
什么是線程安全茉帅?產(chǎn)生線程不安全的原因是什么叨叙?Java線程安全的類?
Java線程安全的類:公平鎖/非公平鎖担敌;可重入鎖摔敛;獨(dú)享鎖/共享鎖廷蓉;樂觀鎖/悲觀鎖全封;自旋鎖等等
synchronized關(guān)鍵字:三種應(yīng)用方式马昙;為什么能實(shí)現(xiàn)實(shí)現(xiàn)內(nèi)存可見性;底層原理是啥刹悴?
ReentrantLock關(guān)鍵字:實(shí)現(xiàn)原理行楞;CAS原理以及CSA的問題
synchronized和ReentrantLock的異同以及Synchronized修飾靜態(tài)方法和成員方法的區(qū)別?
線程池
線程池的好處土匀?
基本組成部分子房?
Java中的ThreadPoolExecutor類!線程池涉及到的參數(shù)就轧!
線程池的狀態(tài)证杭?
線程池任務(wù)執(zhí)行流程!妒御!
任務(wù)緩存隊(duì)列及排隊(duì)策略解愤,如何自定義拒絕策略?
線程池的種類乎莉?
配置線程池大小送讲,根據(jù)CPU密集和IO密集劃分
阻塞隊(duì)列以及生產(chǎn)者消費(fèi)者的實(shí)現(xiàn)
內(nèi)存泄漏和內(nèi)存溢出,常見的內(nèi)存泄露(介紹一下HashMap泄露的場景)惋啃,避免內(nèi)存泄漏的幾點(diǎn)建議哼鬓?如何定位找到內(nèi)存泄漏!边灭!
ThreadLocal介紹异希,實(shí)現(xiàn)原理!绒瘦!ThreadLocal是如何做到為每一個(gè)線程維護(hù)變量的副本的呢宠互?ThreadLocal和同步機(jī)制的區(qū)別。
設(shè)計(jì)模式的單例和工廠是面得最多的椭坚!單例的幾種實(shí)現(xiàn)方式予跌,一般寫典型的雙重檢查鎖定,因?yàn)闀由斐鰒olatile善茎,線程安全這些券册。
然后就是餓漢式,線程安全為什么不用這個(gè)方式呢垂涯,簡單又線程安全烁焙?然后是抽象工廠模式和工廠方法模式區(qū)別?JDK或者Spring當(dāng)中哪里用了設(shè)計(jì)模式耕赘?
JVM:
Java內(nèi)存模型骄蝇?JVM內(nèi)存結(jié)構(gòu)?內(nèi)存模型和內(nèi)存結(jié)構(gòu)的聯(lián)系操骡?Java對象結(jié)構(gòu)九火?
JAVA虛擬機(jī)內(nèi)存劃分赚窃?每個(gè)區(qū)域分別裝著哪些東西
為什么要?jiǎng)澐郑?/p>
堆的劃分,為什么要設(shè)置兩個(gè)Survivor區(qū)岔激?新生代 Survivor 空間不足怎么辦勒极?年輕代的幾個(gè)參數(shù)?
一個(gè)對象從創(chuàng)建到銷毀都是怎么在這些部分里存活和轉(zhuǎn)移的虑鼎?
Java中new對象干的幾件事辱匿?
Java四種引用狀態(tài)?
類加載的過程炫彩?類加載基于的機(jī)制匾七?為什么要雙親委派?為什么需要破壞雙親委派江兢?自己寫個(gè)String能加載嗎乐尊?類初始化時(shí)機(jī)?
對象的創(chuàng)建的過程划址?
GC算法與垃圾回收扔嵌!為什么需要垃圾回收以及什么時(shí)候GC?GC涉及到的內(nèi)存部分夺颤?對象存活判斷的幾種方式痢缎?
說一下你了解的幾個(gè)垃圾收集器
JVM初始化步驟
JVM調(diào)優(yōu)(這個(gè)比較少)
Java 虛擬機(jī)棧會出現(xiàn)的兩種異常?
項(xiàng)目
Redis:
Redis是什么世澜,用在哪独旷?Redis 的缺點(diǎn)?
Redis是單線程的為什么速度那么快寥裂?那它為什么弄成了單線程的嵌洼?
Redis和memcache有什么區(qū)別?Redis和MySql的區(qū)別封恰?
Redis 支持的數(shù)據(jù)類型有哪些麻养?用在什么場景?它的底層數(shù)據(jù)結(jié)構(gòu)是啥诺舔?Zset底層為什么要用兩個(gè)數(shù)據(jù)結(jié)構(gòu)鳖昌?
Redis的并發(fā)競爭問題如何解決?
Redis的緩存穿透低飒,緩存雪崩许昨,緩存擊穿?怎么解決褥赊?
怎么保證緩存和數(shù)據(jù)庫數(shù)據(jù)的一致性糕档?
Redis有哪些數(shù)據(jù)淘汰策略
Redis持久化方式!拌喉!
Redis集群速那!集群是如何判斷是否有某個(gè)節(jié)點(diǎn)掛掉俐银?集群進(jìn)入fail狀態(tài)的必要條件?
Redis哨兵
Redis主從復(fù)制和一致性保證琅坡!
Redis熱key問題
Spring:
這一塊問的比較少其實(shí),但是IOC和AOP問的很多
SpringBoot的啟動和運(yùn)行原
IOC和AOP原理残家?
Spring生成代理對象
BeanFactory 和 FactoryBean 的區(qū)別
Spring各個(gè)注解的作用榆俺?注解的原理?
哪些bean會被掃描坞淮?Bean的生命周期\罱!
Spring 實(shí)例化 Bean 的過程回窘。
Spring 直接注入和直接new一個(gè)對象有什么不同诺擅?
Spring事務(wù)管理:事務(wù)原理?事務(wù)管理接口啡直?實(shí)現(xiàn)方式烁涌!
Spring解決對象相互依賴
Kafka:
優(yōu)點(diǎn)和缺點(diǎn)?和傳統(tǒng)的MQ對比有什么區(qū)別酒觅?
為什么 Kafka 吞吐量高
一些概念像broker撮执,topic,partition這些
partition 刪除策略
寫入可靠性保障(分布式一致性問題)
兩種消費(fèi)模式
kafka消費(fèi)者消費(fèi)消息的流程
kafka 如何保證消息有序
消息丟失場景:如何防止數(shù)據(jù)丟失舷丹,消息重復(fù)解決方案
主節(jié)點(diǎn)選擇方案
個(gè)人不同項(xiàng)目會問的:(高并發(fā))
如何解決超賣少賣抒钱?
你自己重新設(shè)計(jì)一下,一個(gè)高并發(fā)颜凯,你要怎么應(yīng)對
單用戶訂單存Hash谋币,那一個(gè)用戶下了很多單怎么辦?
減庫存然后下訂單症概,但是服務(wù)器宕機(jī)蕾额?
負(fù)載均衡實(shí)現(xiàn)方式,策略彼城?
限流主要的算法凡简?令牌桶算法的缺點(diǎn)在哪?(導(dǎo)致不公平性)
最后
以上面經(jīng)解析整理
關(guān)注公眾號:“程序員白楠楠”獲染唷秤涩!