1 概述

1 介紹

最近換工作,對最近面試的過程進行總結,總結每個公司的面試流程和問到的面試題,記錄自己,也供大家參考。

我是一名Java開發,工作經驗10年,所以面試一名高階Java開發工程師。

簡歷投遞平臺,只使用了Boss直聘。

由於生鮮電商裁員,我也是受害者的一員,就職的公司是*菜。

2021年9月8號開始開始投簡歷,2021年9月18號關閉Boss簡歷,去掉週末面試8天。

2 Boss資料

溝通過:500+,面試:20,已投簡歷130+

由於有複試原因,最多一天面試6家(超級趕,本來約了三家,但是來了3家複試,他們都要求最好能面了。給他們看了Boss預約資訊,都要求插空一個小時)

3 面試崗位情況

10年Java經驗,所以我投遞是高階Java工程師的崗位。

由於住在順義,所以面試的一般都是望京周圍的公司。

4 面試情況

為了避免不必要的麻煩,這裡把公司抹掉了,大家如果想要要的話,可以私信我

時間 結果 總結
9-8 一面二面通過,HR面失敗 這個有點坑,二面全都過了,結果卡在學歷上了(成人本科在讀)
9-9 一面沒過 面試官全程面試10分中,全程沒有互動,我把這種現象歸為一類,不用可惜,也不不用自責,沒有眼緣
9-9 一面沒過 面試時間50分鐘,聊的挺好,可能是掛在了mysql叢集的搭建上
9-10 現場面試,一面沒過 面試時常1個小時,先做了個非常初級的面試題,面試官也是冷臉,估計掛在延時佇列的時間論上
9-13 現場面試沒過 這個有點坑了,去了公司,面試先來了HR,然後來了業務總監,聊了1個多小時,我說技術不面嗎,過了一會HR跑來說,不好意思,業務總監說以前沒做支付行業,可能不匹配(CNM怎麼不早說)
9-13 一面沒過 這個印象不深
9-14 一面 這是個0基礎Java轉go的,因為有好多出行找我轉GO的,好奇就面了下,沒有結果
9-15 5面了 無人機行業,遠端1面,去公司2/3/4面,5面CEO親自面試(2分鐘),現在處於等通知階段
9-15 1面掛了 現場面試,面試1個小時,這個屬於那種問道你死為止,還會用眼神嘲笑你一下的那種,面試官很矯情,同樣的意思沒有用他的話術說出來,他都會糾正出來,個人建議直接pass
9-15 1面 直播行業,現場面試,這個工作環境和傳統的差別太大了,有點太open。面試還可以,問的比較多,聊了1個小時,沒下文。估計給的錢比較多,去面試的很多
9-16 2面掛了 出海遊戲,一面過了,二面問的比較深。估計頁是給的錢比較多 30-60*18薪。辦公環境是共享場地,也很open,遊戲怎麼掙錢嗎???
9-16 直接一面過 做金融相關,面試官不錯,聊了1個小時,聊的很好,1面直接說我不用2面了,會讓HR直接給我談錢
9-16 通過 一個公司兩條業務線,做生鮮的類似盒馬,一面二面都通過了,薪資待遇和上面一模一樣,還糾結了一段要去哪個
9-17 通過 這個面明顯群面,10點一面通過,立馬讓二面,二面下午5個人面我,通過,節後通知我讓我去公司談錢,由於是個跨境支付,規模也不大,綜合考慮不去了
9-17 通過 一個高中教育,網易投資的,一面是網易的,有個演算法題用到雙指標,二面總監面也通過,也面到了延時佇列的時間輪,HR談錢
9-17 一面 一個傳統公司,面試官問的問題都不錯,答得不好的,還給了詳細的回答,當時說是過了,等通知 現在還沒資訊,也懶得問了
9-18 一面不過 演算法沒過

5 Boss面試截圖

為了避免不必要的麻煩,這裡把公司抹掉了,也只晒出了部分截圖,大家如果想要要的話,可以私信我

Boss預約的有16家,通過郵件的有********,還有一個讓我拒了,距離有點遠。

加起來總面試是20家

6 面試過程

為了避免不必要的麻煩,這裡把公司抹掉了,也只晒出了部分截圖,大家如果想要要的話,可以私信我

本來打算每個都寫一下面試過程來著,感覺有點流水賬的意思了,沒什麼意思。這裡挑幾個典型介紹下。

*送:全程10分種多點,面試官全程沒有表情。問的問題:springboot自動裝配過程,springboot迴圈依賴,springboot自定義start,hashmap。

遇到過很多這種情況,問的問題也答了,面試官沒有反應,繼續問他的問題。一般遇到這種情況,不用惋惜也不要生氣,他可能剛遇到啥生氣的事情,或者性格就這樣……(儘管這樣安慰自己,當時也很生氣哈哈)

***水:面試時長1個小時,問的問題:JVM/ArrayList/JMM記憶體屏障,往深了問,比方JMM記憶體屏障怎麼設計的,為什麼要這麼做……

基本就是問到你不會為止。

這種情況也比較多,有些大公司會這麼問,這種除了自己生氣,應該要好好看原始碼哈哈

****r:明顯的群面,讓我生氣的是,如果過了,你就往下進行就行,HR說的很隱晦,就說前面兩輪不錯,要不來公司看看……

猜測應該是她給很多人都這麼說了,估計面試週期會很長,他們面試基數比較大,可能是100個人裡找2個人哈哈

**付:面試流程明顯有問題,應該也是群面的。去了HR先給我聊了半個多小時,大體問了工作經歷,家庭情況,職業規劃啥的,看起來是在拖延時間。一會叫來了業務總監,看看了工作經歷。沒有技術給我面試,最後HR說我們業務總監說你沒有支付經驗,所以不好意思。

你怎麼不一開始就問有沒有支付經驗,那樣咱們就都不耽誤時間。

就是說這些吧,都是些負面的,希望大家不要遇到這種公司。

7 面試結果

這次面試週期10天,面試20家,offer3個,拒掉2個(直接沒談錢),還有一個再談。也就是到談錢的是6個。

可能一開始有點慌,沒有仔細篩選公司,所以面了幾個沒必要面的。

我這通過了有點低

8 面試高頻

總結下面試高頻知識

1 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大引用型別,堆記憶體洩漏使用,還有使用場景

  • 執行緒池:這個基本上99%都會問道,非常重要,和前面一樣,原始碼來一遍。

    重點:7大引數,拒絕策略。回答思路,7大引數,拒絕策略介紹完。把執行緒池擴容場景描述一遍。結合實際使用場景說一下,引數配置,一個是耗CPU一個是耗IO的,應該就問題不大

    大體就寫這麼多,可能還有JMM/JUC下面的很多,就不一一列舉了,總結下 Java基礎是敲門磚,很多都要問原始碼,所以要非常熟悉,一般把這個當作一個開胃菜,回答好了,下面你才會自信,面試官也不 會鄙視你,否則即使往下問了,面試官也基本上給你判了死刑了,想想就知道多尷尬……

    當然還有很多廠,一面就問道這裡,所以很重要。

2 Spring相關

spring的問題問的也不少,但也不是很多,總結幾個高頻吧

IOC/AOP/事務:把它們歸為一類吧,比較常問。一般就從理論談到原始碼,然後加一些實際使用,具體方法。

重點:IOC的實現,也就是註冊託管……,AOP的實現邏輯方式的區別,AOP的使用ASpect的增強方法的順序。事務的傳播方式。

  • Spring初始化Bean的過程:可以在上面問題一塊回答了。也有可能單獨問你。這個要看原始碼,那幾個狀態,幾個方法名字,bean的Scope,主要說sigleton。裡面有很多的設計模式也可以說下
  • Spring迴圈依賴:可以結合上面的一塊說。

    重點:三個map,bean的狀態,scop方式
  • SpringBoot自動裝配:springboot好像就這一個可以問的問題,所以要看原始碼,具體的哪個reflsh方法,要背下來。一般就說從註解說的簡單的那種。要是還問,就要從run開始說了。我看過幾遍,方法太多了,有些記不住吶…………

3 MySql

資料庫是必問的,這裡就說mysql了。

  • 索引:一般這一個問題,你就可以把mysql的所有問題串一下。先說下innodb和myisam,再說聚集索引/非聚集索引,B+樹,索引覆蓋,執行計劃expline,

重點:聚集索引/非聚集索引的區別。B+樹結構,怎麼才能不回表。查詢優化,覆蓋索引。執行計劃expline的引數。查詢優化過程。

最後查詢優化還可以加上分庫分表,這裡面問的就更多了,分庫分表方式,怎麼能更快的讀取,快速定位。要加上實際場景說,才有說服力……

經典問題:為什麼不適用其他的樹使用B+樹。這裡還會和hashmap的紅黑樹比對。要看樹的結構了,所以資料結構很重要。看了B+樹的結構就清楚了,我的理解B+樹葉子節點又加了一個類似陣列的串了起來,範圍查詢的時候,就不用回樹了,提高效率。

非聚集索引怎麼才能不回表:非聚集索引儲存的是索引內容+ID,當索引覆蓋就不回表,這裡就涉及到了聯合索引的最左法制……,就說這麼多,自己總結吧,太多了,你可以一直串著往下說,這樣回答了問題,還進行了擴充套件,要不面試官也得往下問哈哈

  • 事務:這個也是必問的,先從ACID說,然後用undolog ...保證的,然後隔離級別和出現的現象。然後再說隔離級別的底層,也就是mysql的鎖,表鎖行鎖間隙鎖,再到MVCC

    重點:這裡那幾個隔離級別比較繞,要仔細看下,還有實際應用場景,否則很容易被問住。我這裡卡過兩個哈哈

  • 叢集:主從複製,分片,分庫分表。這裡會問道叢集搭建啥的,我一般就答一下分庫分表相關的,偏運維的我還沒有深入搞過,下面要學習了……

4 Redis

快取是必問的了,總結了幾個高頻

  • redis的資料型別:5大常用3個不常用的,然後結合使用場景都說下。

  • 快取問題和解決方案:快取雪崩,快取擊穿,快取穿透。解決辦法,多級快取,布隆過濾器(黑白名單),萬一擊穿阻塞。這個是常見問題,可以結合你的專案說一下。一定不能掛,要不就涼涼……

  • 淘汰策略:幾種淘汰策略介紹,然後說下LRU的演算法實現(虛擬碼),看下LRU的演算法,好多演算法題就是手寫LRU演算法。

  • 持久化:RDB和AOF,使用場景,兩種都用先用AOF恢復

  • 叢集:主從/哨兵/分片,重點哨兵的介紹

  • 重點:分散式鎖:這個是重點,可以再你的專案場景中就說了,分散式的一定涉及到這個問題。

    結合下圖的5個特性說,從redisson說到redlock,重點就是下面五個特性和看門狗的實現,叢集下的容錯性。

5 MQ

佇列在分散式中應用廣泛,所以這個一定會問,就算不問,你在說專案的時候也要說下應用場景

  • MQ的型別:direct/ topic/ fanout分別的應用場景說一下
  • 分散式下的應用:說一下排對使用場景,然後圍繞高可用進行說,傳送端接收端如何保證訊息的可靠性
  • 延時佇列:這個被問到好多次,MQ的實現是使用死信佇列進行實現,兩外兩種一個是redis+springboot實現,二是時間輪。這個是重點要好好看下,因為這個場景比較多,延時多久發信息,延時取消訂單

還有問幾個MQ的區別的或者問怎麼選型的,我沒回答太好,因為沒有全都用過。

6 微服務架構

微服務架構這個很重要,一般我都是在介紹專案的時候就介紹了,然後對幾個框架進行對比

回答技巧:我一般從微服務的幾大組成開始談,然後對比他們的區別。到每一個技術的時候,說一下具體使用。

比如:sentienl,先說下主要功能,然後結合專案怎麼實現的,可以提一下SentinelResource的blockHandler,這樣讓面試官知道是敲過程式碼的。然後說限流是根據什麼配置的,熔斷和降級解決什麼實際問題

分散式事務:分散式事務放到這裡說吧,這個致命重要,分散式下面常見場景,我一般放到這裡講。因為我準備的是ailbaba的seate,大體說下分散式事務的幾種方式,2pc 3pc。然後重點介紹自己專案使用的seate,要說到seate服務使用表名字,怎麼使用全域性唯一ID和3大元件實現的,實現流程詳細闡述,前置映象後置映象。最後說下優缺點,就齊活了…………

7 演算法/設計模式/Vue/專案經驗/未來發展

這些就不說了,演算法前端我都比較菜,演算法也沒有刷。

設計模式可以準備一下,一般在spring裡面直接說了。要是面試官直接問,比方裝飾模式是什麼……我就跪了,看來還要全面的看一遍。

至於專案經驗/未來發展這些都要準備,因為即使一面不問,後面的面試也會被問到,所以要準備充分。

還有一個題 狼來了,兔子猴子都跑了,程式碼實現哈哈

7 總結

作為一名Java開發工程師,要學習的東西實在太多了,這裡只是從java基礎/Spring/Mysql/redis……這些方面總結下這幾天被問到的高頻面試題,記錄自己,供大家參考………………

9 面經總結

總結下Java面試面試總結

個人總結面試需要自己準備幾個方面吧

1 技術基礎:java基礎 資料庫基礎 快取 中介軟體等,比如hashMap原理,資料庫索引結構,redis型別,mq等。基礎是敲門磚,最起碼不能被這些問題給問住,如果超過兩個基礎你沒有回答上來,一首涼涼送給你。

2 演算法題:力扣,牛客,演算法題還是要刷的,否則一個二叉樹映象你就掛了……我比較懶,沒有刷這些題,所以遇到就掛了,等工作後一定要刷個1k道題哈哈

3 微服務相關:三個微服務框架 netfix,alibaba,dubbo+zk的這些你都要了解過或者搞過,現在的技術,這些都是常用的,別說沒搞過,要不又是一首涼涼……

4 高大上的技術應用例項:高大上的技術應用例項,一定要是通用場景(方便麵試官往下問),你不要說一個只有行業才知道的技術使用場景,那就沒得聊了。一定要是你技術的最高體現,高併發/高可用/微服務/快取/事務這種技術的綜合體現。

當然準備好了是加分,要是沒準備充分被問倒了就是減分項。

比方我就是準備訂單秒殺場景:這種場景包含上面提到的所有資訊。可以聊的東西比較多。

5 2分鐘內能介紹清楚的專案:這個主要是在二面或者三面的時候高級別的面試官,考察你邏輯表達的能力。一般不用太複雜,但一定要是合情合理的業務場景,儘量大一點,完整的業務場景,不要說是某個邊邊角角。要使用簡短的語言,通俗的話語說清楚。還要注意一點可以加上自己的專案負責人這一點,都說的這麼透徹了,再加上負責人,面試官感覺你掌控專案沒問題哈哈

總結

總結就上面這幾點吧,雖然是我總結的,我也沒有做的這麼好,有很多一面就掛掉的,所以大家肯定比我優秀。

如果有什麼心得可以一塊探討。

希望大家都能找到自己合適的工作。