
概述
最近換作業,對最近面試的程序進行總結,總結每個公司的面試流程和問到的面試題,記錄自己,也供大家參考,
我是一名 Java 開發,作業經驗 10 年,所以面試一名高級 Java 開發工程師,
簡歷投遞平臺,只使用了 Boss 直聘,
由于生鮮電商裁員,我也是受害者的一員,就職的公司是*菜,
2021 年 9 月 8 號開始開始投簡歷,2021 年 9 月 18 號關閉 Boss 簡歷,去掉周末面試 8 天,
投遞資料
溝通過:500+,面試:20,已投簡歷 130+
由于有復試原因,最多一天面試 6 家(超級趕,本來約了三家,但是來了 3 家復試,他們都要求最好能面了,給他們看了 Boss 預約資訊,都要求插空一個小時)
面試崗位情況
10 年 Java 經驗,所以我投遞是高級 Java 工程師的崗位,
由于住在順義,所以面試的一般都是望京周圍的公司,
面試情況
為了避免不必要的麻煩,這里把公司抹掉了,

Boss 面試截圖
為了避免不必要的麻煩,這里把公司抹掉了,也只曬出了部分截圖,
Boss 預約的有 16 家,加起來總面試是 20 家,

面試程序
本來打算每個都寫一下面試程序來著,感覺有點流水賬的意思了,沒什么意思,這里挑幾個典型介紹下,
*送 :全程 10 分種多點,面試官全程沒有表情,問的問題:Springboot 自動裝配程序,Springboot 回圈依賴,Springboot 自定義 start,hashmap,
遇到過很多這種情況,問的問題也答了,面試官沒有反應,繼續問他的問題,一般遇到這種情況,不用惋惜也不要生氣,他可能剛遇到啥生氣的事情,或者性格就這樣……(盡管這樣安慰自己,當時也很生氣哈哈)
***水 :面試時長 1 個小時,問的問題:JVM/ArrayList/JMM 記憶體屏障,往深了問,比方 JMM 記憶體屏障怎么設計的,為什么要這么做……
基本就是問到你不會為止,
這種情況也比較多,有些大公司會這么問,這種除了自己生氣,應該要好好看原始碼哈哈
****r :明顯的群面,讓我生氣的是,如果過了,你就往下進行就行,HR 說的很隱晦,就說前面兩輪不錯,要不來公司看看……
猜測應該是她給很多人都這么說了,估計面試周期會很長,他們面試基數比較大,可能是 100 個人里找 2 個人哈哈
****付 :面試流程明顯有問題,應該也是群面的,去了 HR 先給我聊了半個多小時,大體問了作業經歷,家庭情況,職業規劃啥的,看起來是在拖延時間,一會叫來了業務總監,看看了作業經歷,沒有技術給我面試,最后 HR 說我們業務總監說你沒有支付經驗,所以不好意思,你怎么不一開始就問有沒有支付經驗,那樣咱們就都不耽誤時間,
就是說這些吧,都是些負面的,希望大家不要遇到這種公司,
面試結果
這次面試周期 10 天,面試 20 家,offer3 個,拒掉 2 個(直接沒談錢),還有一個再談,也就是到談錢的是 6 個,
可能一開始有點慌,沒有仔細篩選公司,所以面了幾個沒必要面的,
我這通過了有點低
面試高頻
總結下面試高頻知識
Java 基礎
JVM :一般從 JVM 組成開始介紹,然后單獨介紹每一塊,然后就會慢慢衍生出垃圾回收方式,垃圾回收器,還可以衍生出 volatile 之類的,你也可以往自己重點掌握的去引導,重點:堆疊幀/堆,垃圾回收方式,垃圾回收器的對比 G1---CMS,unsafe 類 navicat 到 volatile,
集合類:一般會問 HashMap 或者 arraylist,有的還會讓比對 arraylist 和 linklist,ConcurrentHashMap 等
一般回答初始化程序,組成,底層結構,演算法,執行緒是否安全等,這塊一定要回答仔細,要看過原始碼,或者看些 B 站的原始碼講解很仔 細,到每一個方法名字,要是集合類就掛掉了,那就涼涼了……
重點:hashmap 組成,尋找演算法,擴容演算法,put get 程序,紅黑樹二叉樹 B+樹的區別,
經典問題:為什么使用紅黑樹,不使用普通的二叉樹,
鎖:AQS 實作,公平鎖/非公平鎖,synchronized 和 lock 的區別,synchronized 鎖演化程序
一般從 AQS 談起,這個和 HashMap 一樣一定要通讀原始碼,知道每一個方法的名字和程序,和集合類同樣重要,
即使沒有問你,你最后也可以對比下 synchronized 和 lock 和 LockSupport,顯得 JUC 下面都精通,
還有這三個 CountDownLatch_CyclicBarrier_Semaphore,一般會問使用場景,要了然于胸
CAS:通常搭配 volatile 問,我一般在上面幾個回答中就帶上了,這個應用比較廣泛了,AQS,集合等大量使用,原始碼的時候直接說了就 OK
ThreadLocal:也是要看原始碼,還可以結合 4 大參考型別,堆記憶體泄漏使用,還有使用場景
執行緒池:也是要看原始碼,還可以結合 4 大參考型別,堆記憶體泄漏使用,還有使用場景
重點:7 大引數,拒絕策略,回答思路,7 大引數,拒絕策略介紹完,把執行緒池擴容場景描述一遍,結合實際使用場景說一下,引數配置,一個是耗 CPU 一個是耗 IO 的,應該就問題不大
大體就寫這么多,可能還有 JMM/JUC 下面的很多,就不一一列舉了 ,
總結下:Java 基礎是敲門磚,很多都要問原始碼,所以要非常熟悉,一般把這個當作一個開胃菜,回答好了,下面你才會自信,面試官也不 會鄙視你,否則即使往下問了,面試官也基本上給你判了死刑了,想想就知道多尷尬……
當然還有很多廠,一面就問道這里,所以很重要,
Spring 相關
Spring 的問題問的也不少,但也不是很多,總結幾個高頻吧
IOC/AOP/事務: 把它們歸為一類吧,比較常問,一般就從理論談到原始碼,然后加一些實際使用,具體方法,
重點:IOC 的實作,也就是注冊托管……,AOP 的實作邏輯方式的區別,AOP 的使用 ASpect 的增強方法的順序,事務的傳播方式,
Spring 初始化 Bean 的程序: 可以在上面問題一塊回答了,也有可能單獨問你,這個要看原始碼,那幾個狀態,幾個方法名字,bean 的 Scope,主要說 sigleton,里面有很多的設計模式也可以說下
Spring 回圈依賴: 可以結合上面的一塊說,
重點:三個 map,bean 的狀態,scop 方式
SpringBoot 自動裝配 :Springboot 好像就這一個可以問的問題,所以要看原始碼,具體的哪個 reflsh 方法,要背下來,一般就說從注解說的簡單的那種,要是還問,就要從 run 開始說了,我看過幾遍,方法太多了,有些記不住吶…………
MySql
資料庫是必問的,這里就說 mysql 了,
索引: 一般這一個問題,你就可以把 mysql 的所有問題串一下,先說下 innodb 和 myisam,再說聚集索引/非聚集索引,B+樹,索引覆寫,執行計劃 expline,
重點:聚集索引/非聚集索引的區別,B+樹結構,怎么才能不回表,查詢優化,覆寫索引,執行計劃 expline 的引數,查詢優化程序,
最后查詢優化還可以加上分庫分表,這里面問的就更多了,分庫分表方式,怎么能更快的讀取,快速定位,要加上實際場景說,才有說服力……
經典問題: 為什么不適用其他的樹使用 B+樹,這里還會和 hashmap 的紅黑樹比對,要看樹的結構了,所以資料結構很重要,看了 B+樹的結構就清楚了,我的理解 B+樹葉子節點又加了一個類似陣列的串了起來,范圍查詢的時候,就不用回樹了,提高效率,
非聚集索引怎么才能不回表 :非聚集索引存盤的是索引內容+ID,當索引覆寫就不回表,這里就涉及到了聯合索引的最左法制……,就說這么多,自己總結吧,太多了,你可以一直串著往下說,這樣回答了問題,還進行了擴展,要不面試官也得往下問哈哈
事務 :這個也是必問的,先從 ACID 說,然后用 undolog …保證的,然后隔離級別和出現的現象,然后再說隔離級別的底層,也就是 mysql 的鎖,表鎖行鎖間隙鎖,再到 MVCC
重點:這里那幾個隔離級別比較繞,要仔細看下,還有實際應用場景,否則很容易被問住,我這里卡過兩個哈哈
集群:主從復制,分片,分庫分表,這里會問道集群搭建啥的,我一般就答一下分庫分表相關的,偏運維的我還沒有深入搞過,下面要學習了……
Redis
快取是必問的了,總結了幾個高頻
-
redis 的資料型別: 5 大常用 3 個不常用的,然后結合使用場景都說下,
-
快取問題和解決方案 :快取雪崩,快取擊穿,快取穿透,解決辦法,多級快取,布隆過濾器(黑白名單),萬一擊穿阻塞,這個是常見問題,可以結合你的專案說一下,一定不能掛,要不就涼涼……
-
淘汰策略 :幾種淘汰策略介紹,然后說下 LRU 的演算法實作(偽代碼),看下 LRU 的演算法,好多演算法題就是手寫 LRU 演算法,
持久化 :RDB 和 AOF,使用場景,兩種都用先用 AOF 恢復
-
集群 :主從/哨兵/分片,重點哨兵的介紹
重點:分布式鎖 :這個是重點,可以再你的專案場景中就說了,分布式的一定涉及到這個問題,
結合下圖的 5 個特性說,從 redisson 說到 redlock,重點就是下面五個特性和看門狗的實作,集群下的容錯性,

MQ
佇列在分布式中應用廣泛,所以這個一定會問,就算不問,你在說專案的時候也要說下應用場景
-
MQ 的型別: direct/ topic/ fanout 分別的應用場景說一下
-
分布式下的應用: 說一下排對使用場景,然后圍繞高可用進行說,發送端接收端如何保證訊息的可靠性
-
延時佇列: 這個被問到好多次,MQ 的實作是使用死信佇列進行實作,兩外兩種一個是 redis+Springboot 實作,二是時間輪,這個是重點要好好看下,因為這個場景比較多,延時多久發資訊,延時取消訂單
還有問幾個 MQ 的區別的或者問怎么選型的,我沒回答太好,因為沒有全都用過,
微服務架構
微服務架構這個很重要,一般我都是在介紹專案的時候就介紹了,然后對幾個框架進行對比

回答技巧 :我一般從微服務的幾大組成開始談,然后對比他們的區別,到每一個技術的時候,說一下具體使用,
比如:sentienl,先說下主要功能,然后結合專案怎么實作的,可以提一下 SentinelResource 的 blockHandler,這樣讓面試官知道是敲過代碼的,然后說限流是根據什么配置的,熔斷和降級解決什么實際問題
分布式事務 :分布式事務放到這里說吧,這個致命重要,分布式下面常見場景,我一般放到這里講,因為我準備的是 ailbaba 的 seate,大體說下分布式事務的幾種方式,2pc 3pc,然后重點介紹自己專案使用的 seate,要說到 seate 服務使用表名字,怎么使用全域唯一 ID 和 3 大組件實作的,實作流程詳細闡述,前置鏡像后置鏡像,最后說下優缺點,就齊活了…………
演算法/設計模式/Vue/專案經驗/未來發展
這些就不說了,演算法前端我都比較菜,演算法也沒有刷,
設計模式可以準備一下,一般在 Spring 里面直接說了,要是面試官直接問,比方裝飾模式是什么……我就跪了,看來還要全面的看一遍,
至于專案經驗/未來發展這些都要準備,因為即使一面不問,后面的面試也會被問到,所以要準備充分,
還有一個題 狼來了,兔子猴子都跑了,代碼實作哈哈
總結
作為一名 Java 開發工程師,要學習的東西實在太多了,這里只是從 java 基礎/Spring/Mysql/redis……這些方面總結下這幾天被問到的高頻面試題,記錄自己,供大家參考………………
面經總結
總結下 Java 面試面試總結
個人總結面試需要自己準備幾個方面吧
1、技識訓礎 :java 基礎 資料庫基礎 快取 中間件等,比如 hashMap 原理,資料庫索引結構,redis 型別,mq 等,基礎是敲門磚,最起碼不能被這些問題給問住,如果超過兩個基礎你沒有回答上來,一首涼涼送給你,
2、演算法題 :力扣,牛客,演算法題還是要刷的,否則一個二叉樹鏡像你就掛了……我比較懶,沒有刷這些題,所以遇到就掛了,等作業后一定要刷個 1k 道題哈哈
3、微服務相關 :三個微服務框架 netfix,alibaba,dubbo+zk 的這些你都要了解過或者搞過,現在的技術,這些都是常用的,別說沒搞過,要不又是一首涼涼……
4、高大上的技術應用實體 :高大上的技術應用實體,一定要是通用場景(方便面試官往下問),你不要說一個只有行業才知道的技術使用場景,那就沒得聊了,一定要是你技術的最高體現,高并發/高可用/微服務/快取/事務這種技術的綜合體現,
當然準備好了是加分,要是沒準備充分被問倒了就是減分項,
比方我就是準備訂單秒殺場景:這種場景包含上面提到的所有資訊,可以聊的東西比較多,
5、2 分鐘內能介紹清楚的專案 :這個主要是在二面或者三面的時候高級別的面試官,考察你邏輯表達的能力,一般不用太復雜,但一定要是合情合理的業務場景,盡量大一點,完整的業務場景,不要說是某個邊邊角角,要使用簡短的語言,通俗的話語說清楚,還要注意一點可以加上自己的專案負責人這一點,都說的這么透徹了,再加上負責人,面試官感覺你掌控專案沒問題哈哈
總結 :總結就上面這幾點吧,雖然是我總結的,我也沒有做的這么好,有很多一面就掛掉的,所以大家肯定比我優秀,
如果有什么心得可以一塊探討,
下面就是我這些年面試備戰的一些資料以及面試題整理,大家感興趣可以看看:

一線大廠面試真題決議

2021 一線名企面試真題
為了方便大家查閱,我把上邊的面試資料按技術堆疊的劃分整合成了一個檔案,目錄如下所示:

如何近期有面試需求的朋友可以拿去看看哈,只需要點贊+收藏,點擊下方掃碼免費領取,希望對你有幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/316587.html
標籤:java
