1. 程式人生 > 其它 >520沒啥好送的,送一份面經總結吧(內含位元組、蝦皮、歡聚等)

520沒啥好送的,送一份面經總結吧(內含位元組、蝦皮、歡聚等)

520沒啥好送的,送一份面經總結吧(內含位元組、蝦皮、歡聚等)

前言

今天不想寫文章,水一篇面經。
本來也沒打算搞這些,但是看到大家都在面,就跟著出去試試水。我工作已經一年多接近兩年,這個工作時長其實比較尷尬,中級崗位自己不滿意,高階崗位大廠評級比較難上去。

首先說一下我的工作內容,主要做金融相關的業務,目前做的是金融風控系統,常用技術也就是那些爛大街的。

關於這次面試的準備,主要有幾點:

  • 八股文,這一塊我倒是沒怎麼看,壓根沒複習
  • 框架,Spring這些我相對熟悉,也沒怎麼複習
  • 業務,金融業務相對複雜點,可以說的點有很多,這點可能專案有點兒優勢
  • 演算法,LeetCode隨便刷刷

把簡歷掛boss就有人來約面試了,但是實際上我參加了的就這幾家,最終除了bigo莫名其妙終止流程外,其他都拿到了offer。

這裡不得不吐槽一下bigo,純粹刷KPI,把流程終止後說找到更合適的人選了,但是我追問更合適的人是需要什麼要求,HR又說他們現在不招人,我真是醉了。不招人約個錘子面試,浪費時間。

這裡的面試順序是我實際上參與面試的時間進行記錄的,並沒有特意再根據公司進行歸類。可以看到,其實問下來的內容七七八八都是這些,基本是按照簡歷寫的來,沒超出太多。

面經

某金融公司 一面

0.專案,因為專案類似,聊了比較多,都很熟悉。

1.資料庫的ACID實現

2.MySQL索引的結構

3.跳錶

4.七層網路協議,tcp,可靠訊息,流量控制,擁塞處理

5.最大公共不連續子串

某金融公司 二面

1.繼續專案,難點在哪,做了什麼等

2.各種中介軟體聊一下

3.定時任務優化聊了一下時間輪和大概的實現

4.Spring聊一下無了

位元組 一面

1.MySQL資料庫的連線設定

2.100個小球,有一個質量不一樣的,怎麼用天平秤兩次找出這個小球

3.最長公共子串連續

4.MySQL一個SQL插入的過程,結合各層的實現和索引實現去講,會有些頁分裂整理什麼的

5.索引的查詢原理,為什麼是B+ 樹,有什麼優劣,其他可以做資料庫的結構,陣列,雜湊表,LSM樹(hbase)等,各自的優缺點

6.tcp http https ssl

歡聚 一面

1.自我介紹

2.流程引擎,並行流程引擎處理

3.Dubbo 負載均衡

4.spring 迴圈依賴

5.配置中心動態生效 熱部署

6.Redis

7.鎖 樂觀鎖 悲觀鎖 synchronized原理

8.CAS帶來的問題 ABA問題

9.countdownlatch底層原理

10.tcp udp

11.線上出現過的問題 索引失效 字元編碼加號坑爹

12.兩個執行緒交叉列印數字

13.寫個冒泡 優化一下

14.最近在讀什麼書 看完了沒有 看了多久 graalvm 靜態編譯原理 看完了 花了三個月 期望雲原生髮展方向

位元組二面

1.專案介紹

2.流程引擎的設計 為什麼這麼選型 對比市面上的有什麼優勢 Osworkflow JBPM Activiti flowable Camunda

3.有沒有對流程引擎進行過壓測,效能如何

4.redis key過期時間到了,那再去查就一定沒有了嗎? 延遲刪除,主從同步延遲 時鐘跳躍 可以設定精確的過期時間 expireAt 時間點

5.Map有哪些實現 HashMap TreeMap ConcurrentHashMap LinkedHashMap,TreeMap 和HashMap的區別,底層的資料結構分別是什麼,日常有沒有遇到使用map出現併發問題

6.CPU高怎麼去分析 top定位執行緒, jstack定位程式碼

7.dubbo 的負載均衡策略 隨機 輪詢 權重 一致性雜湊 分別有什麼優缺點和問題,專案裡使用的是哪一種,線上有沒有因為此策略而出現過問題

8.dubbo 的重試機制 怎麼實現一個dubbo協議,需要整合哪些類,分別完成什麼操作 protocol ,injvm dubbo協議的實現扯一下

9.io模型,react模型

10.tcp udp的區別 從面向連結 可靠開始 到三次握手 四次揮手 流量控制 慢開始 擁塞避免 快重傳 快恢復

11.解決了什麼專案難點 解決了規則執行日誌的收集 專案出現什麼問題比較深刻

12.計算一棵樹的最大寬度 LeetCode 662,節點計數法,或者空間利用

13.找零,雪糕5一根 客人會用5 10 20 面值來買,你要保證正確找零 ,一開始手上沒有零錢 直接遍歷一遍解

14.有沒有你比較擅長但是我沒有問到的 spring相關

15.QA:當前業務是什麼,難點是什麼,未來發展的趨勢

蝦皮 一面

1.kafka訊息儲存機制 記憶體 落盤 非同步刷盤

2.kafka是怎麼保持訊息可靠的,訊息確認機制 1 0 -1

3.生產中kafka消費遇到的問題 訊息堆積 阻塞 多執行緒消費

4.資料庫效能瓶頸 慢SQL查詢 多長算慢SQL 500ms

5.資料結構 陣列連結串列的區別 雜湊表的實現原理 連結串列轉紅黑樹 紅黑樹的細節,節點的定義,怎麼染色的,如何旋轉 怎麼實現

6.jvm垃圾收集器 serial parallel CMS G1,各種優缺點,併發標記有什麼優缺點,浮動垃圾怎麼處理 ,專案裡用了哪個

7.jvm引數瞭解哪些,進行了什麼調優 Eden s1 s2

8.jvm 8的元空間瞭解嗎 裡面儲存了什麼資訊 跟永久代的區別 元空間會引發fullgc嗎 為什麼要有元空間 元空間怎麼實現的

9.tcp問題四次揮手的細節,主動關閉被動關閉分別會發送什麼報文,然後進入什麼狀態,其中會引發什麼問題 close timewait狀態答得不準確,這裡問得很細,問到了fin_wait_1這些狀態

10.http https ssl

11.非對稱加密演算法瞭解哪些 RSA原理知道嗎 大質素相乘,數學推算細節知道嗎 不知道GG

12.演算法 ipv4地址匹配

蝦皮 二面

1.業務的流程,偏金融相關:從獲客千人千面開始到核心系統群裡面的狀態流轉,到最終流程結束 完整闡述一遍,提了一些重要問題的點

2.為什麼要用一套流程引擎,業務和程式碼解耦,方便業務的操作。怎麼確保流程是對的,並且能用。兩個方面,技術保證系統的可用性,業務保證業務邏輯的正確性。深入闡述。

2.那流程上線之前的正確性怎麼驗證 sit -> uat -> pre -> pet -> preprod -> prod ,AB測試 風控資料團隊並行灰度對數

3.對於業務的理解,技術服務於業務,以滿足業務為前提,聊天

4.接下來是比較多的case by case

5.簡單場景下,兩個賬戶互相轉賬,怎麼保持結果正確 鎖 樂觀鎖 悲觀鎖

6.分散式場景下,上述情況怎麼保持結果正確,分散式鎖,隨口提了一嘴Redis 順便搞了一嘴redis的高效能 高可靠如何保障 分散式事物,seata簡單實現原理 XA TCC 2PC 3PC 一致性演算法raft 最終保障資料一致性

7.還是上述分散式場景,服務調用出現了問題,怎麼處理 呼叫端重試,帶上重試標識等,服務端冪等或者響應重試等

8.承接場景7,併發量資料量上來了,如何處理 快取 資料進行分庫分表

9.那麼好,分庫分表假設給你一個賬戶表 要保障高併發下賬戶的資料是正確的,如何分表,按照什麼維度劃分,巴拉了一下橫切豎切,分析了一下熱點賬戶處理,新增影子賬戶巴拉巴拉

10.可以正常交易後如何保障交易的安全性 ,這幾個點比較有趣,即 :

  • 不可見性 加密巴拉巴拉 對稱 非對稱
  • 不可篡改性 加密巴拉巴拉 非對稱加密 CA認證 風險監控 可疑IP鏈路監控
  • 不可抵賴性 人臉識別 活體檢測 巴拉巴拉

11.MySQL的ACID逐個說明,MVCC 當前讀 快照讀 事務的可見性 readview trx_ix roll_ptr row_id

12.底層索引的組織實現,B+樹的特性,MySQL裡面葉子節點個數,層數等 一般節點數為1200 層次為4,可存節點17億左右,葉子節點順序遍歷,資料頁大小,記憶體碎片整理,頁分裂等巴拉一下

13.在索引上進行一次增刪改查的流程,B+樹的操作,節點調整 分裂合併等瞎扯

14.QA:業務方向 難點以及解決方案

bigo 一面

1.系統的業務,系統主要模組劃分,說一下架構圖 我在裡面主要做了什麼,接下來業務的詳細流程巴拉巴拉

2.談一下你對dubbo的瞭解,dubbo的模組區劃分,簡單說一下一個rpc框架的的結構 序列化層 協議層 傳輸層 服務層 API層

3.上游服務調下游服務,資料的傳輸流程是怎樣傳輸的 簡單描述一次RPC的呼叫過程,從2.的層次去回答

4.多執行緒請求的情況下,RPC呼叫後訊息怎麼正確返回呼叫結果 訊息序列號

5.執行緒安全的容器,concurrentHashMap的實現原理 HashMap 對比HashMap原理,1.7 1.8前後的改變 鎖

6.ConCurrentHashMap的put/get實現原理 也對比HashMap去說 初始化 擴容 雜湊衝突 拉鍊法 連結串列陣列轉換

7.執行緒池有哪些常用的引數 簡單說了一下corepoolsize maxpoolsize keepalive policy queue,說了一下業務中執行緒池的使用

8.執行緒的狀態有哪些?狀態之間怎麼轉換 對比作業系統的執行緒模型簡單說下 說了cpu排程 io等的影響

9.Redis快取雪崩是什麼? 對比了快取穿透 快取擊穿說了一下

10.MySQL事務隔離級別 Read Uncommit Read Commit Repeatable Read Serialize 分別說了一下會造成的問題

11.幻讀和可重複讀有什麼區別 說一下含義說的區別 舉例子說明出現的場景 最後說下怎麼解決 next-key 鎖 gap 鎖

12.間隙鎖原理

13.kafka的元件架構 這個答得不好,隨便說了一個server broker partition 瞎扯了一番訊息傳送可靠性是如何保證的,面試官很無語 我壓根沒問,你說那麼多幹哈玩意

14.kafka寫訊息機制 寫記憶體 落盤 非同步刷盤 主從同步等

15.演算法:連結串列裡面環的長度(leetcode 141與142結合體)秒了五分鐘寫完

歡聚 二面

1.專案 我狀態不好,很困,瞎說了一堆,不知所云 也可能是面試官並不熟悉這一塊業務,我們總互相Get不到點 藍瘦

2.專案裡遇到的難點

3.jvm調優 最新版本的jdk用的是什麼垃圾收集器 CMS G1 ZGC 三色標記

4.oracle MySQL 的區別

5.設計一個地址簿

位元組 三面

1.聊家常

2.專案裡面做了什麼 處理了什麼 難點是什麼

3.線上出過什麼比較印象深刻的問題,索引失效 出現原因,處理方案 後果

4.怎麼搭建一個redis叢集 單點 叢集 redis cluster codis優缺點,怎麼實現高可用 資料同步等問題,一攬子巴拉一通

5.一致性演算法 paxos raft 從拜占庭將軍問題開始扯

6.mysql主從同步如何實現,巴拉了一下binlog,同步出現的時效問題等

7.技術挺好的,為什麼一畢業沒去大廠

8.QA 業務難點

總結

這些問題好像都比較合理,這些也算是對自己工作快兩年的一個總結吧,渾渾噩噩又兩年。

一趟下來這一路都是走流程,你好、我是、好的、再見。

萬能模板:

  • 非常感謝貴公司對我的認可。但是由於接到了更好的機會,不能接受貴公司的offer,我覺得非常遺憾。希望我們可以保持聯絡,以後如果有機會,希望能與貴公司由更緊密的聯絡。但這次我真的非常抱歉,還請貴公司理解。謝謝。

如果有人看到這裡,那在這裡老話重提。與君共勉,路漫漫其修遠兮,吾將上下而求索。