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

来源:https://www.cnblogs.com/codegitz/archive/2022/05/20/16292157.html
-Advertisement-
Play Games

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,我覺得非常遺憾。希望我們可以保持聯繫,以後如果有機會,希望能與貴公司由更緊密的聯繫。但這次我真的非常抱歉,還請貴公司理解。謝謝。

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ZooKeeper知識點總結 一、ZooKeeper 的工作機制 二、ZooKeeper 中的 ZAB 協議 三、數據模型與監聽器 四、ZooKeeper 的選舉機制和流程 本文將以如下內容為主線講解ZooKeeper中的學習重點,包括 ZooKeeper 中的角色、ZAB協議、數據模型、選舉機制、 ...
  • 現在驗證碼登錄已經成為很多應用的主流登錄方式,但是對於OAuth2授權來說,手機號驗證碼處理用戶認證就非常繁瑣,很多同學卻不知道怎麼接入。 認真研究胖哥Spring Security OAuth2專欄的都會知道一個事,OAuth2其實不管資源擁有者是如何認證的,只要資源擁有者在授權的環節中認證了就可 ...
  • 來源:csdn.net/xiaojin21cen/article/details/78587425 ZeroC ICE的Java版,Netty2作者的後續之作Apache MINA,Crmky的Cindy之外,還有個超簡單的QuickServer,讓你專心編寫自己的業務代碼,不用編寫一行TCP代碼。 ...
  • 1.創建線程池相關參數 線程池的創建要用ThreadPoolExecutor類的構造方法自定義創建,禁止用Executors的靜態方法創建線程池,防止記憶體溢出和創建過多線程消耗資源。 corePoolSize: 線程池核心線程數量,不會自動銷毀,除非設置了參數allowCoreThreadTimeO ...
  • 我們在上一篇博客中介紹了Linux系統Shell命令行下可執行程式應該遵守的傳參規範(包括了各種選項及其參數)。Python命令行程式做為其中一種,其傳參中也包括了位置參數(positional和可選參數(optional)。Python程式中我們解析在命令行中提供的各種選項(選項保存在sys.ar... ...
  • 1. Netty源碼研究筆記(1)——開篇 1.1. Netty介紹 Netty是一個老牌的高性能網路框架。在眾多開源框架中都有它的身影,比如:grpc、dubbo、seata等。 裡面有著非常多值得學的東西: I/O模型 記憶體管理 各種網路協議的實現:http、redis、websocket等等 ...
  • Kafka 簡介 Kafka 是一種高吞吐、分散式、基於發佈和訂閱模型的消息系統,最初是由 LinkedIn 公司採用 Scala 和 java 開發的開源流處理軟體平臺,目前是 Apache 的開源項目。 Kafka 用於離線和線上消息的消費,將消息數據按順序保存在磁碟上,併在集群內以副本的形式存 ...
  • 前言 微服務治理方案中,鏈路追蹤是必修課,SpringCloud的組件其實使用很簡單,生產環境中真正令人頭疼的往往是軟體維護,介面在微服務間的調用究竟哪個環節出現了問題,哪個環節耗時較長,這都是項目上線後一定會遇到的問題,為瞭解決這些問題鏈路追蹤便應運而生了。 主流方案 1)、SkyWalking: ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文將以 C# 語言來實現一個簡單的布隆過濾器,為簡化說明,設計得很簡單,僅供學習使用。 感謝@時總百忙之中的指導。 布隆過濾器簡介 布隆過濾器(Bloom filter)是一種特殊的 Hash Table,能夠以較小的存儲空間較快地判斷出數據是否存在。常用於允許一定誤判率的數據過濾及防止緩存 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 「簡單有價值的事情長期堅持做」 這是成功最簡單,但也最難學的秘訣。不經過訓練,人很難意識到時間複利的威力。 仙劍奇俠傳的「十里坡劍神」和金庸群俠傳的「十級野球拳」,就是簡單的事情持之以恆反覆做,最後就有巨大的威力 唐家三少成為網文收入第一,最重要的一步是十四年從未斷日更 這樣的案例很多,一開始可能成 ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“我愛加班”。 面試開始,直入正題。 面試官: 看你簡歷上面寫著精通MySQL,我先問你事務的特性是什麼? 老生常談,這個還有誰不會背的嗎? 我: ...
  • 基礎知識 python是一門腳本語言,它是解釋執行的。 python使用縮進做為語法,而且python2環境下同一個py文件中不能同時存在tab和空格縮進,否則會出錯,建議在IDE中顯示縮進符。 python在聲明變數時不寫數據類型,可以type(xx)來獲取欄位的類型,然後可以int(),list ...
  • 為什麼要多線程下載 俗話說要以終為始,那麼我們首先要明確多線程下載的目標是什麼,不外乎是為了更快的下載文件。那麼問題來了,多線程下載文件相比於單線程是不是更快? 對於這個問題可以看下圖。 橫坐標是線程數,縱坐標是使用對應線程數下載對應文件時花費的時間,藍橙綠代表下載文件的大小,每個線程下載對應文件2 ...
  • 詳細講解python爬蟲代碼,爬微博搜索結果的博文數據。 爬取欄位: 頁碼、微博id、微博bid、微博作者、發佈時間、微博內容、轉發數、評論數、點贊數。 爬蟲技術: 1、requests 發送請求 2、datetime 時間格式轉換 3、jsonpath 快速解析json數據 4、re 正則表達式提... ...
  • 背景: 一般我們可以用HashMap做本地緩存,但是HashMap功能比較弱,不支持Key過期,不支持數據範圍查找等。故在此實現了一個簡易的本地緩存,取名叫fastmap。 功能: 1.支持數據過期 2.支持等值查找 3.支持範圍查找 4.支持key排序 實現思路: 1.等值查找採用HashMap2 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 本章是系列文章的第八章,用著色演算法進行寄存器的分配過程。 本文中的所有內容來自學習DCC888的學習筆記或者自己理解的整理,如需轉載請註明出處。周榮華@燧原科技 寄存器分配 寄存器分配是為程式處理的值找到存儲位置的問題 這些值可以存放到寄存器,也可以存放在記憶體中 寄存器更快,但數量有限 記憶體很多,但 ...