概述
最近換工作布讹,對最近面試的過程進行總結(jié),總結(jié)每個公司的面試流程和問到的面試題训堆,記錄自己描验,也供大家參考。
我是一名 Java 開發(fā)坑鱼,工作經(jīng)驗 10 年膘流,所以面試一名高級 Java 開發(fā)工程師絮缅。
簡歷投遞平臺,只使用了 Boss 直聘呼股。
由于生鮮電商裁員耕魄,我也是受害者的一員,就職的公司是*菜彭谁。
2021 年 9 月 8 號開始開始投簡歷吸奴,2021 年 9 月 23 號關(guān)閉 Boss 簡歷。
投遞數(shù)據(jù)
溝通過:200+缠局,面試:20则奥,已投簡歷 100+
由于有復(fù)試原因,最多一天面試 6 家(超級趕甩鳄,本來約了三家逞度,但是來了 3 家復(fù)試,他們都要求最好能面了妙啃。給他們看了 Boss 預(yù)約信息,都要求插空一個小時)
面試崗位情況
10 年 Java 經(jīng)驗俊戳,所以我投遞是高級 Java 工程師的崗位揖赴。
由于住在順義,所以面試的一般都是望京周圍的公司抑胎。
面試情況
為了避免不必要的麻煩燥滑,這里把公司抹掉了。
Boss 面試截圖
為了避免不必要的麻煩阿逃,這里把公司抹掉了铭拧,也只曬出了部分截圖。
Boss 預(yù)約的有 16 家恃锉,加起來總面試是 20 家搀菩。
面試過程
本來打算每個都寫一下面試過程來著,感覺有點流水賬的意思了破托,沒什么意思肪跋。這里挑幾個典型介紹下。
*送 :全程 10 分種多點土砂,面試官全程沒有表情州既。問的問題:Springboot 自動裝配過程,Springboot 循環(huán)依賴萝映,Springboot 自定義 start吴叶,hashmap。
遇到過很多這種情況序臂,問的問題也答了蚌卤,面試官沒有反應(yīng),繼續(xù)問他的問題。一般遇到這種情況造寝,不用惋惜也不要生氣磕洪,他可能剛遇到啥生氣的事情,或者性格就這樣……(盡管這樣安慰自己诫龙,當(dāng)時也很生氣哈哈)
***水 :面試時長 1 個小時析显,問的問題:JVM/ArrayList/JMM 內(nèi)存屏障,往深了問签赃,比方 JMM 內(nèi)存屏障怎么設(shè)計的谷异,為什么要這么做……
基本就是問到你不會為止。
這種情況也比較多锦聊,有些大公司會這么問歹嘹,這種除了自己生氣,應(yīng)該要好好看源碼哈哈
r :明顯的群面孔庭,讓我生氣的是尺上,如果過了,你就往下進行就行圆到,HR 說的很隱晦怎抛,就說前面兩輪不錯,要不來公司看看……
猜測應(yīng)該是她給很多人都這么說了,估計面試周期會很長芽淡,他們面試基數(shù)比較大马绝,可能是 100 個人里找 2 個人哈哈
付 :面試流程明顯有問題,應(yīng)該也是群面的挣菲。去了 HR 先給我聊了半個多小時富稻,大體問了工作經(jīng)歷,家庭情況白胀,職業(yè)規(guī)劃啥的椭赋,看起來是在拖延時間。一會叫來了業(yè)務(wù)總監(jiān)纹笼,看看了工作經(jīng)歷纹份。沒有技術(shù)給我面試,最后 HR 說我們業(yè)務(wù)總監(jiān)說你沒有支付經(jīng)驗廷痘,所以不好意思蔓涧。你怎么不一開始就問有沒有支付經(jīng)驗,那樣咱們就都不耽誤時間笋额。
就是說這些吧元暴,都是些負(fù)面的,希望大家不要遇到這種公司兄猩。
面試結(jié)果
這次面試周期 10 天茉盏,面試 20 家鉴未,offer3 個,拒掉 2 個(直接沒談錢)鸠姨,還有一個再談铜秆。也就是到談錢的是 6 個。
可能一開始有點慌讶迁,沒有仔細(xì)篩選公司连茧,所以面了幾個沒必要面的。
我這通過了有點低
面試高頻
總結(jié)下面試高頻知識
Java 基礎(chǔ)
JVM :一般從 JVM 組成開始介紹巍糯,然后單獨介紹每一塊啸驯,然后就會慢慢衍生出垃圾回收方式,垃圾回收器祟峦,還可以衍生出 volatile 之類的罚斗,你也可以往自己重點掌握的去引導(dǎo)。重點:棧幀/堆宅楞,垃圾回收方式针姿,垃圾回收器的對比 G1---CMS。unsafe 類 navicat 到 volatile厌衙。
集合類:一般會問 HashMap 或者 arraylist搓幌,有的還會讓比對 arraylist 和 linklist。ConcurrentHashMap 等
一般回答初始化過程迅箩,組成,底層結(jié)構(gòu)处铛,算法饲趋,線程是否安全等,這塊一定要回答仔細(xì)撤蟆,要看過源碼奕塑,或者看些 B 站的源碼講解很仔 細(xì),到每一個方法名字家肯,要是集合類就掛掉了龄砰,那就涼涼了……
重點:hashmap 組成,尋找算法讨衣,擴容算法换棚,put get 過程,紅黑樹二叉樹 B+樹的區(qū)別反镇。
經(jīng)典問題:為什么使用紅黑樹固蚤,不使用普通的二叉樹。
鎖:AQS 實現(xiàn)歹茶,公平鎖/非公平鎖夕玩,synchronized 和 lock 的區(qū)別你弦,synchronized 鎖演化過程
一般從 AQS 談起,這個和 HashMap 一樣一定要通讀源碼燎孟,知道每一個方法的名字和過程禽作,和集合類同樣重要。
即使沒有問你揩页,你最后也可以對比下 synchronized 和 lock 和 LockSupport旷偿,顯得 JUC 下面都精通。
還有這三個 CountDownLatch_CyclicBarrier_Semaphore碍沐,一般會問使用場景狸捅,要了然于胸
CAS:通常搭配 volatile 問,我一般在上面幾個回答中就帶上了累提,這個應(yīng)用比較廣泛了尘喝,AQS,集合等大量使用斋陪,源碼的時候直接說了就 OK
ThreadLocal:也是要看源碼朽褪,還可以結(jié)合 4 大引用類型,堆內(nèi)存泄漏使用无虚,還有使用場景
線程池:也是要看源碼缔赠,還可以結(jié)合 4 大引用類型,堆內(nèi)存泄漏使用友题,還有使用場景
重點:7 大參數(shù)嗤堰,拒絕策略《然拢回答思路踢匣,7 大參數(shù),拒絕策略介紹完戈抄。把線程池擴容場景描述一遍离唬。結(jié)合實際使用場景說一下,參數(shù)配置划鸽,一個是耗 CPU 一個是耗 IO 的输莺,應(yīng)該就問題不大
大體就寫這么多,可能還有 JMM/JUC 下面的很多裸诽,就不一一列舉了 嫂用。
總結(jié)下:Java 基礎(chǔ)是敲門磚,很多都要問源碼崭捍,所以要非常熟悉尸折,一般把這個當(dāng)作一個開胃菜,回答好了殷蛇,下面你才會自信实夹,面試官也不 會鄙視你橄浓,否則即使往下問了,面試官也基本上給你判了死刑了亮航,想想就知道多尷尬……
當(dāng)然還有很多廠荸实,一面就問道這里,所以很重要缴淋。
Spring 相關(guān)
Spring 的問題問的也不少准给,但也不是很多,總結(jié)幾個高頻吧
IOC/AOP/事務(wù): 把它們歸為一類吧重抖,比較常問露氮。一般就從理論談到源碼,然后加一些實際使用钟沛,具體方法畔规。
重點:IOC 的實現(xiàn),也就是注冊托管……恨统,AOP 的實現(xiàn)邏輯方式的區(qū)別叁扫,AOP 的使用 ASpect 的增強方法的順序。事務(wù)的傳播方式畜埋。
Spring 初始化 Bean 的過程: 可以在上面問題一塊回答了莫绣。也有可能單獨問你。這個要看源碼悠鞍,那幾個狀態(tài)对室,幾個方法名字,bean 的 Scope咖祭,主要說 sigleton软驰。里面有很多的設(shè)計模式也可以說下
Spring 循環(huán)依賴: 可以結(jié)合上面的一塊說。
重點:三個 map心肪,bean 的狀態(tài),scop 方式
SpringBoot 自動裝配 :Springboot 好像就這一個可以問的問題纠吴,所以要看源碼硬鞍,具體的哪個 reflsh 方法,要背下來戴已。一般就說從注解說的簡單的那種固该。要是還問,就要從 run 開始說了糖儡。我看過幾遍伐坏,方法太多了,有些記不住吶…………
MySql
數(shù)據(jù)庫是必問的握联,這里就說 mysql 了桦沉。
索引: 一般這一個問題每瞒,你就可以把 mysql 的所有問題串一下。先說下 innodb 和 myisam纯露,再說聚集索引/非聚集索引剿骨,B+樹,索引覆蓋埠褪,執(zhí)行計劃 expline浓利,
重點:聚集索引/非聚集索引的區(qū)別。B+樹結(jié)構(gòu)钞速,怎么才能不回表贷掖。查詢優(yōu)化,覆蓋索引渴语。執(zhí)行計劃 expline 的參數(shù)苹威。查詢優(yōu)化過程。
最后查詢優(yōu)化還可以加上分庫分表遵班,這里面問的就更多了屠升,分庫分表方式,怎么能更快的讀取狭郑,快速定位腹暖。要加上實際場景說,才有說服力……
經(jīng)典問題: 為什么不適用其他的樹使用 B+樹翰萨。這里還會和 hashmap 的紅黑樹比對脏答。要看樹的結(jié)構(gòu)了,所以數(shù)據(jù)結(jié)構(gòu)很重要亩鬼≈掣妫看了 B+樹的結(jié)構(gòu)就清楚了,我的理解 B+樹葉子節(jié)點又加了一個類似數(shù)組的串了起來雳锋,范圍查詢的時候黄绩,就不用回樹了,提高效率玷过。
非聚集索引怎么才能不回表 :非聚集索引存儲的是索引內(nèi)容+ID爽丹,當(dāng)索引覆蓋就不回表,這里就涉及到了聯(lián)合索引的最左法制……辛蚊,就說這么多粤蝎,自己總結(jié)吧,太多了袋马,你可以一直串著往下說初澎,這樣回答了問題,還進行了擴展虑凛,要不面試官也得往下問哈哈
事務(wù) :這個也是必問的碑宴,先從 ACID 說软啼,然后用 undolog …保證的,然后隔離級別和出現(xiàn)的現(xiàn)象墓懂。然后再說隔離級別的底層焰宣,也就是 mysql 的鎖,表鎖行鎖間隙鎖捕仔,再到 MVCC
重點:這里那幾個隔離級別比較繞匕积,要仔細(xì)看下,還有實際應(yīng)用場景榜跌,否則很容易被問住闪唆。我這里卡過兩個哈哈
集群:主從復(fù)制,分片钓葫,分庫分表悄蕾。這里會問道集群搭建啥的,我一般就答一下分庫分表相關(guān)的础浮,偏運維的我還沒有深入搞過帆调,下面要學(xué)習(xí)了……
Redis
緩存是必問的了,總結(jié)了幾個高頻
redis 的數(shù)據(jù)類型: 5 大常用 3 個不常用的豆同,然后結(jié)合使用場景都說下番刊。
緩存問題和解決方案 :緩存雪崩,緩存擊穿影锈,緩存穿透芹务。解決辦法,多級緩存鸭廷,布隆過濾器(黑白名單)枣抱,萬一擊穿阻塞。這個是常見問題辆床,可以結(jié)合你的項目說一下佳晶。一定不能掛,要不就涼涼……
-
淘汰策略 :幾種淘汰策略介紹讼载,然后說下 LRU 的算法實現(xiàn)(偽代碼)宵晚,看下 LRU 的算法,好多算法題就是手寫 LRU 算法维雇。
持久化 :RDB 和 AOF,使用場景晒他,兩種都用先用 AOF 恢復(fù)
-
集群 :主從/哨兵/分片吱型,重點哨兵的介紹
重點:分布式鎖 :這個是重點,可以再你的項目場景中就說了陨仅,分布式的一定涉及到這個問題津滞。
結(jié)合下圖的 5 個特性說铝侵,從 redisson 說到 redlock,重點就是下面五個特性和看門狗的實現(xiàn)触徐,集群下的容錯性咪鲜。
MQ
隊列在分布式中應(yīng)用廣泛,所以這個一定會問撞鹉,就算不問疟丙,你在說項目的時候也要說下應(yīng)用場景
MQ 的類型: direct/ topic/ fanout 分別的應(yīng)用場景說一下
分布式下的應(yīng)用: 說一下排對使用場景,然后圍繞高可用進行說鸟雏,發(fā)送端接收端如何保證消息的可靠性
延時隊列: 這個被問到好多次享郊,MQ 的實現(xiàn)是使用死信隊列進行實現(xiàn),兩外兩種一個是 redis+Springboot 實現(xiàn)孝鹊,二是時間輪炊琉。這個是重點要好好看下,因為這個場景比較多又活,延時多久發(fā)信息苔咪,延時取消訂單
還有問幾個 MQ 的區(qū)別的或者問怎么選型的,我沒回答太好柳骄,因為沒有全都用過团赏。
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)這個很重要,一般我都是在介紹項目的時候就介紹了夹界,然后對幾個框架進行對比
回答技巧 :我一般從微服務(wù)的幾大組成開始談馆里,然后對比他們的區(qū)別。到每一個技術(shù)的時候可柿,說一下具體使用鸠踪。
比如:sentienl,先說下主要功能复斥,然后結(jié)合項目怎么實現(xiàn)的营密,可以提一下 SentinelResource 的 blockHandler,這樣讓面試官知道是敲過代碼的目锭。然后說限流是根據(jù)什么配置的评汰,熔斷和降級解決什么實際問題
分布式事務(wù) :分布式事務(wù)放到這里說吧,這個致命重要痢虹,分布式下面常見場景被去,我一般放到這里講。因為我準(zhǔn)備的是 ailbaba 的 seate奖唯,大體說下分布式事務(wù)的幾種方式惨缆,2pc 3pc。然后重點介紹自己項目使用的 seate,要說到 seate 服務(wù)使用表名字坯墨,怎么使用全局唯一 ID 和 3 大組件實現(xiàn)的寂汇,實現(xiàn)流程詳細(xì)闡述,前置鏡像后置鏡像捣染。最后說下優(yōu)缺點骄瓣,就齊活了…………
算法/設(shè)計模式/Vue/項目經(jīng)驗/未來發(fā)展
這些就不說了,算法前端我都比較菜耍攘,算法也沒有刷榕栏。
設(shè)計模式可以準(zhǔn)備一下,一般在 Spring 里面直接說了少漆。要是面試官直接問臼膏,比方裝飾模式是什么……我就跪了,看來還要全面的看一遍示损。
至于項目經(jīng)驗/未來發(fā)展這些都要準(zhǔn)備渗磅,因為即使一面不問,后面的面試也會被問到检访,所以要準(zhǔn)備充分始鱼。
還有一個題 狼來了,兔子猴子都跑了脆贵,代碼實現(xiàn)哈哈
總結(jié)
作為一名 Java 開發(fā)工程師医清,要學(xué)習(xí)的東西實在太多了,這里只是從 java 基礎(chǔ)/Spring/Mysql/redis……這些方面總結(jié)下這幾天被問到的高頻面試題卖氨,記錄自己会烙,供大家參考………………
面經(jīng)總結(jié)
總結(jié)下 Java 面試面試總結(jié)
個人總結(jié)面試需要自己準(zhǔn)備幾個方面吧
1、技術(shù)基礎(chǔ) :java 基礎(chǔ) 數(shù)據(jù)庫基礎(chǔ) 緩存 中間件等筒捺,比如 hashMap 原理柏腻,數(shù)據(jù)庫索引結(jié)構(gòu),redis 類型系吭,mq 等五嫂。基礎(chǔ)是敲門磚肯尺,最起碼不能被這些問題給問住沃缘,如果超過兩個基礎(chǔ)你沒有回答上來,一首涼涼送給你则吟。
2槐臀、算法題 :力扣,琶ブ伲客水慨,算法題還是要刷的败匹,否則一個二叉樹鏡像你就掛了……我比較懶,沒有刷這些題讥巡,所以遇到就掛了,等工作后一定要刷個 1k 道題哈哈
3舔哪、微相關(guān) :三個微服務(wù)框架 netfix欢顷,alibaba,dubbo+zk 的這些你都要了解過或者搞過捉蚤,現(xiàn)在的技術(shù)抬驴,這些都是常用的,別說沒搞過缆巧,要不又是一首涼涼……
4布持、高大上的技術(shù)應(yīng)用實例 :高大上的技術(shù)應(yīng)用實例,一定要是通用場景(方便面試官往下問)陕悬,你不要說一個只有行業(yè)才知道的技術(shù)使用場景题暖,那就沒得聊了。一定要是你技術(shù)的最高體現(xiàn)捉超,高并發(fā)/高可用/微服務(wù)/緩存/事務(wù)這種技術(shù)的綜合體現(xiàn)胧卤。
當(dāng)然準(zhǔn)備好了是加分,要是沒準(zhǔn)備充分被問倒了就是減分項拼岳。
比方我就是準(zhǔn)備訂單秒殺場景:這種場景包含上面提到的所有信息枝誊。可以聊的東西比較多惜纸。
5叶撒、2 分鐘內(nèi)能介紹清楚的項目 :這個主要是在二面或者三面的時候高級別的面試官,考察你邏輯表達(dá)的能力耐版。一般不用太復(fù)雜祠够,但一定要是合情合理的業(yè)務(wù)場景,盡量大一點椭更,完整的業(yè)務(wù)場景哪审,不要說是某個邊邊角角。要使用簡短的語言虑瀑,通俗的話語說清楚湿滓。還要注意一點可以加上自己的項目負(fù)責(zé)人這一點,都說的這么透徹了舌狗,再加上負(fù)責(zé)人叽奥,面試官感覺你掌控項目沒問題哈哈
總結(jié) :總結(jié)就上面這幾點吧,雖然是我總結(jié)的痛侍,我也沒有做的這么好朝氓,有很多一面就掛掉的魔市,所以大家肯定比我優(yōu)秀。
如果有什么心得可以一塊探討赵哲。
下面就是我這些年面試備戰(zhàn)的一些資料以及面試題整理待德,大家感興趣可以看看:
一線大廠面試真題解析
2021 一線名企面試真題
為了方便大家查閱,我把上邊的面試資料按技術(shù)棧的劃分整合成了一個文檔枫夺,目錄如下所示:
如何近期有面試需求的朋友可以拿去看看哈将宪,只需要點贊+收藏,關(guān)注我之后添加vx:gupao100