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,我覺得非常遺憾。希望我們可以保持聯繫,以後如果有機會,希望能與貴公司由更緊密的聯繫。但這次我真的非常抱歉,還請貴公司理解。謝謝。
如果有人看到這裡,那在這裡老話重提。與君共勉,路漫漫其修遠兮,吾將上下而求索。