一天約了四個面試,復盤一下面試經歷和薪資范圍
?前言
昨天我的交流群里,有位寶藏群友分享了自己的面試經歷:一天約了4個線上面試,收獲滿滿。
群友為大家分享了面試題和每個公司給出的薪酬范圍。
簡單說下這位群友的情況:3年開發經驗,最近2年做Go語言開發,還有1年Java/PHP工作經驗。手撕CSAPP選手,每天打卡分享手寫的學習筆記。
也有群友反饋,網上有人說海投200多份簡歷沒人回復,boss直聘上都是已讀不回。對比寶藏群友一天約4個面試可以說是云泥之別。
約不到面試很重要的一個原因,就是簡歷不行。或者海投的公司都不靠譜,如果海投200家都是已讀不回,大概率不是這200家公司的問題......
群友面經分享
再次感謝寶藏群友的分享,給了大家刷題的方向、市場的薪酬行情、更重要的是給了大家信心。
在求職市場哀鴻遍野的情況下,還能做到一天能約到4個面試,不說別人,起碼給了我很大的信心,對市場還是看好的。(如果這篇文章能給10個人帶來信心,我就心滿意足了)
(相同的事情,不同的人看會有不同的反饋:比如對于這件事情我是看到了市場的信心,還是有不少公司在招聘的,并且待遇不差,要求確實不低,沒有像網傳中說只讀不會連面試機會都沒有那么悲觀;有的群友看到面試題的反饋是太卷,會的不多;有的群友看到的反饋是找開發崗位,Docker CNI 的實現都要考嗎.....)
20K-30K 深圳
Docker 底層、多階段構建、原子指令你怎么理解、CSP和Actor分布式模型的區別、內存對齊、Channel 和select的基本用法、賦值你認為有多少條匯編指令、比較出名的開源項目pr、Redis持久化、GMP模型、一致性算法
13-20K * 13 深圳
3個算法題,暴力1道,2道有思路,一個貪心、一個動態規劃、一個冒泡。聊異步、業務、持久化
13-20K * 13 廈門
TCP 粘包怎么解決、同步控制 waitgroup 、數據庫索引優化、TCP 如何實現可靠性、隊列,樹,棧的應用場景和區別、TCP 在 linux 中一些參數的含義、一些十進制轉換二進制、十六進制、如何定位死鎖,鏈表簡單題
16-20K 上海
戰爭迷霧怎么實現、共識算法、Channel、Make和New的區別、GMP、數組類型算法、UDP實現可靠協議、分布式模型、Panic沒被Recover怎么處理、切片擴容、Docker CNI 的實現、數據落盤怎么做的、Lua
看到這里大家心里應該有個數了,可以看看自己的期望薪資,再看看目前市場上考察的這些知識點,查漏補缺。
也歡迎大家關注我的公眾號,后面會持續更新面試題、面試復盤相關的文章,希望對大家有幫助,更歡迎大家的投稿分享。
需要做簡歷指導的也可以關注公眾號,加我微信。
大廠面經
受高啟強的影響,我也在讀《孫子兵法》,分享這段話給大家:求其上,得其中;求其中,得其下,求其下,必敗。
映射一下目前互聯網的就業市場,道理簡單明了:如果你想進中廠,就要做進大廠的準備。如果你想找到月薪1W+的工作,就需要做月薪1W5+的準備。如果你的目標就是找到工作,起碼要做沖洗中小廠的準備。如果你的目標就是找個小公司混日子,大概率找不到工作。
為了更好的幫助到大家,我還整理了網絡上很有價值的大廠面經:字節、騰訊、滴滴、騰訊云、小米、小米游戲。
希望對大家有幫助,建議收藏,并且轉發給好朋友。
下面先分享一下我?? 知識星球??? 里字節嘉賓關于求職面試的答疑,大廠更看重的是什么? 給大家指指方向,少走彎路。
星球有問必答
星友提問
大佬好,最近我要去面試試水了,想問一下 有沒有關于java或者go遇到的生產案例分享 最好是關于jdk或者第三方包的bug,容易加分。感謝!
嘉賓回答
你是面校招還是社招?一般面試官會根據你的簡歷中項目經歷、實現細節來展開逐層遞進,你說的生產案例最好還是自己實戰經歷過的,不然很容易就發現不是你的項目或者會被打上項目參與不深入的標簽。
每一次面試都盡量準備充分,不要抱著水水的心態,大公司面試都會留痕和面評的,如果你是想豐富下面試經驗,建議你先找一些小公司或者不太想去的公司面一面找找感覺,自己心儀的公司和崗位一定要準備充分再去發起面試流程!
星友
我是屬于社招,一般面試官會問處理過的最亮的技術點,目前是游戲平臺后端開發 但實話實說 所用技術和閃光點太普通。
不是項目造假的意思,就是準備幾個 生產上處理過的幾個難度較高的技術問題
嘉賓
建議你可以仔細盤一盤負責項目的文檔、代碼等資源,即使很多東西不是從0到1自己做的,也可以借鑒和領悟下其中的技術實現細節;平時也可以多寫寫技術文章,輸出些自己工作內容中有技術特色的地方。
星友
我負責的項目就是我從0到1弄好的,包括文檔和代碼,里面確實沒有拿高薪的技術亮點。
嘉賓
技術亮點是客觀的項目經歷,除非面試官也做過類似東西,能和你產生互動否則是不太感興趣和深入聊的,技術棧是共同語言也便于考察個人技術能力,面試的時候也要學會主導話題,揚長避短多聊自己的優勢點。說到“拿高薪”,這里說一句大白話:有多大本事拿多少錢。能力和薪資是正相關匹配的,一家公司招聘人才的能力模型會參考專業知識、工作閱歷、個人性格等多方面,而面試的招聘過程雙向是有信息差的,最終影響你薪酬水平的是面試結果(帶有信息差的能力評價)+ 你當前的薪資水平、職級(自身當前的社會客觀能力反饋)+ HR可操作的漲幅空間。
星友
理解,謝謝大佬的誠懇的解答,我還是從技術棧下功夫,這樣和面試官的共鳴會高一些,也不再執迷于某個技術亮點。
嘉賓
不客氣,加油!技術棧扎實絕對沒問題??
重點干貨已經加粗標記了,上面這個問答建議再看一遍,很經典的問題。
以下面經來自網絡,感謝大佬們的分享,非本人,我只是做了面經的搬運工,希望對大家有幫助。
字節面經
一面
自我介紹+算法題:
- https://leetcode-cn.com/problems/find-peak-element/
- https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 3. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/
問答
- 索引,倒排索引,切詞,如何根據 doc id 有沒有出現某個 token
- 服務高可用是怎么做的
- MySQL 可重復讀、讀提交區別、原理
- 爬蟲 URL 去重,設計存儲結構(FST,前綴樹+后綴樹) MySQL (a,b,c) 索引,幾條 SQL 走索引的情況
- 思考題:概率 p 生成 0,1-p 生成 1,如何 1/2 概率生成 1
二面
算法題:
- https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
- https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/
- https://leetcode-cn.com/problems/coin-change-2/
技術問題
- 講一下 es 索引的過程
- 切詞怎么切,切詞算法,降噪
- 讓你帶應屆生,怎么帶,
- 有什么工程經驗可以分享
- Redis 緩存淘汰有哪些
三面
自我介紹
算法題:
- https://leetcode-cn.com/problems/first-missing-positive/
技術面
- 文章下面的評論,按點贊數排序,SQL 怎么寫
- 把所有評論放到內存里,怎么設計數據結構,存儲并排序
- select * 會有什么問題
- 緩存熱 key 怎么解決
- 職業發展
- 領導如何評價你
- 項目難點,亮點
滴滴面經
一面
- 介紹項目
- 問我為什么選擇GO,看我有Java從業經歷。
- 介紹一下java 和 go 區別,我猜是讓我說一些他們的不同點,go 比java 哪里好。我說了一些 特性 3.1 問我協程比進程好在哪里? 我自己順便說了進程線程 協程三者關系 4. 問我想從事什么
- 項目中有bloom介紹了一下怎么使用的,精度,損失
- GPM模型
- redis使用模式 主從 哨兵 巴拉巴拉
- 接著聊項目,然后問了算法
- 漸進式的聊面試,很輕松
- 問我能不能接受看php? 反問時候,聊了一下GORM,應用情況。他們的go-spring,還有他們的夜鶯系統。因為看過一點點所以想問問。有培養體系,教我如何寫GO(這個我很欣慰),說有大佬內部課程。
二面
- 自我介紹(面試官也不看我,一臉嚴肅我特害怕。然后自我介紹磕磕絆絆的)
- 問我看源碼嗎?
- 問了問GC 發展史,都怎么玩的 每次優化了啥
- 問了問我go 內存 優化了哪些東?(這題我忘了咋問的了)
- 問了一下我項目里nodejs 升級為 java 為啥會快了那么多。6.問了紅黑樹特性,哪個數據結構用到了。我介紹了一下 紅黑樹 一些特性 比如 平均查找時間 低 插入刪除需要 左旋右旋調平衡。我想到 java里 hashmap 用到了這個結構 7.問了一下map的底層結構 順便介紹了一下 sync map
- 找出兩個大文件交集
- 算法 leetcode 兩棵樹 b 是 a子集那道題思路 怎么做 dfs 然后比較 值和 指針
- 聊了一下 我的項目 召回相關的 和 nodejs java 遷移 效率提升問題
- 聊了一下 go-spring 夜鶯 還有 didi 有個 寫sql的github 項目 想問一下應用情況。問我能不能 接受 看看php 之類的
- 問了問我為啥離職
騰訊面經
一面
- 算法題二選一
??https://leetcode-cn.com/problems/permutations/??
??https://leetcode-cn.com/problems/sorted-merge-lcci/??
- MySQL 隔離級別
- MySQL 鎖
- MySQL 存儲結構(b+樹)
- 索引 回表 是什么
- 消息隊列,rabbitmq
- rabbitmq 如何保證可靠性(生產者可靠性、消費者可靠性、存儲可靠性) - rabbitmq 幾種模式
- es 索引的過程
- 線上是如何分表分庫的,用什么做分表分庫的策略,跨表查詢
- MySQL 如何同步到 es
- 線上 Redis 用的是什么模式
- 緩存熱 key 怎么辦
二面
- 介紹項目
- defer 、go 繼承,手寫快排
- 登錄流程,JWT、session、cookie
三面
- 緩存一致性
- Redis key 統計
- Redis 單線程,io 多路復用
- 算法題 https://www.nowcoder.com/practice/35119064d0224c35ab1ab612bffee8df
- Redis slowlog 原理
四面(面委)
- 項目為主
- tcp quick_ack 、 nodelay ,socket 編程
- 職業規劃
- 為什么換工作
五面(GM)
- 項目
- go 協程機制
騰訊云
這個面經來源于網絡,這位朋友主要技術方向是k8s、容器、云計算。
有服務上云的實踐經歷,了解cicd基本流程,求知意向是容 器研發、基礎架構研發、運維研發之類的(主要還是研發方向)。
項目方向:
項目的話我不多說什么,就是自己的項目細節自己肯定清楚,如果項目中不是自己做的 部分,建議不要在簡歷上寫太多,寫清楚自己做了什么,容易被摳細節問,項目一般都會摳細節,特別細的那種!!!
語言棧:
因為主要語言棧是go,所以一般都比較少問python。
golang
1、gin框架路由怎么實現的,具體正則怎么匹配?限流中間件怎么實現? 2、go的slice 與數組的區別,slice的實現原理,源碼? 3、golang的協程調度,gpm模型。協程調度 過程中的鎖。4、golang的channel實現,channel有緩存和無緩存,一般會直接擼碼 (三個goroutine順序打印)。5、golang的關鍵字defer、recover、pannic之類的實現 原理。6、sync包里面的鎖、原子操作、waitgroup之類的。7、make和new的區別, 引用類型和非引用類型,值傳遞之類的。
python
1、python多線程、多進程。2、python的裝飾器怎么實現的?
操作系統
1、進程、線程、協程間的區別以及他們間的切換之類的,有時候會問到語言級別的協 程。2、io復用、用戶態/內核態轉換 3、awk命令 4、linux查看端口占用 5、top命 令,free命令中的各個參數表示什么,buff/cache都表示什么?
k8s & 容器:
1、簡單聊一下什么是云原生、什么是k8s、容器,容器與虛機相比優勢。2、k8s組 件,pod創建的過程,operator是什么? 3、docker是怎么實現的,底層基石 namespace和cgroup。4、k8s的workload類型,使用場景,statefulset你們是怎么用 的? 5、limit和request,探針,一般怎么排查pod問題,查看上次失敗的pod日志。6、sidecar是什么,怎么實現的? 7、pv,pvc,動態pv怎么實現 8、k8s的聲明式api 怎么實現的,informar源碼。9、cicd,發布模式。10、svc的負載均衡、服務發現, ipvs與iptables。以上基本是會被問的點(雖然有一些問題我也不是很熟),另外很多 會被問k8s的網絡之類的,因為我比較菜,這塊被問的比較少。
計算機網絡:
1、tcp三次握手四次揮手,為什么不能是兩次握手,三次揮手?握手和揮手過程中的狀 態。2、time_wait作用,為什么是2msl,close_wait作用,time_wait過多怎么辦? 3、http請求的過程,瀏覽器輸入網址請求過程?dns解析的詳細過程? 4、https與http 的區別,https第一次服務端回傳是否加密? 5、tcp與udp區別,tcp怎么保證可靠性。6、http請求頭、分隔符、?連接怎么實現
數據庫:
1、mysql的事務,事務使用場景。2、mysql的索引,什么情況下索引失效,聚簇索引 與非聚簇索引,索引的存儲b+樹與b-樹區別。3、join的內外連接,最左匹配原則。4、redis的數據結構,hmap怎么實現的,持久化怎么做,go操作redis的方式。數據庫 方向有被問到,我基本沒答上來(一般都告訴他只會基礎,開發直接使用gorm)。
數據結構與算法:
1、倒排索引和B+樹 2、判斷鏈表是否有環,時間復雜度要求0(1) 3、LeetCode上合并 區間的題 4、leetcode的股票買賣的題 5、二叉樹的最近公共祖先 6、有序數組合并 7、什么是平衡二叉樹、最小堆 8、大文件的top10問題 9、golang實現棧、隊列
其他:
1、git 的相關操作,合并commit,合并之類的。2、場景設計(比較多)
小米面經
一面
- innodb MVCC實現
- b+樹是怎么組織數據的,數據的順序一定是從左到右遞增的么
- ?分裂偽代碼,b+樹的倒數底層層可以?分裂么
- 合并k個有序鏈表
- redis的hashtable是怎么擴容的
- select poll epoll,epoll具體是怎么實現的
- GMP是怎么調度,channel是怎么收發消息的,channel的recq和g是怎么建立關系 的
- innodb二次寫是什么
- undo里面具體存的是什么
- b+樹節點具體存的是什么
- mysql一?最大能存多少數據
- myisam和innodb索引上的區別
- innodb commit之前,redo 的prepare然后binlog commit,然后redo再commit有 什么缺點?5.6之后是怎么優化的? 14. redo和binlog的區別
- 讀鎖和寫鎖區別
二面
- 蛇形打印二叉樹
- myisam為什么不支持事務,如果要支持事務要怎么做
- 函數只能返回1-7的隨機數,請用這個函數返回1-5,要求平均 4. 聊項目
三面
- go的協程調度和os的線程調度有什么區別
- 只有寫鎖實現讀寫鎖
- go的調度是怎么實現的
- go的網絡IO為什么快?還有優化空間么
- epoll為什么這么快,還有優化空間么?如果要你實現一個網絡IO應該怎么實現
- 設計一個每秒80萬qps的過濾器
- 過濾器用redis實現,宕機期間數據怎么恢復
- 設計一個下單 扣減庫存的分布式應用,請求超時了怎么辦,一直重試超時了怎么辦
- 數組A1 2和數組B2 3是一個關系圈,A能通過2找到3,數組A1 2和數組B2 3和數組 C 3 5也是一個關系圈,給一個二維數組求關系數
小米游戲面經
一、 介紹連接池項目
- 介紹連接池常用的參數,最大連接數,最小存活數這些意義,為什么要有這些
- 當鏈接超過最大連接數怎么處理,等待有空閑連接還是創建一個繼續給出,比較兩 者的優劣
- 連接池清理鏈接的邏輯,如何優化的
- 當連接池中有一些鏈接不可用了怎么辦,如何保證這些連接的可用
- 當出現下游某個實例掛掉了,連接池應該怎么處理
- 對比 mysql redis http 連接池的實現
二、 介紹負載均衡算法
- 介紹平滑負載均衡算法,實現
- 當出現下游出現不可用,負載均衡算法怎么處理
三、 介紹聊天室項目
- 介紹實現原理的,互相通信的邏輯
- 聊天室服務端如何把消息下發給用戶
- 介紹websocket包的字段
- 當有用戶掉線怎么處理
四、 redis相關
- redis的數據結構
- 各個數據結構的操作
- 各個數據結構的使用場景
- 如何保證 Redis 的高可用
- 當有一個key讀取的頻率非常高怎么辦
五、 算法相關
- 介紹快速排序 優先隊列的實現
本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。
轉載本文請聯系「 程序員升級打怪之旅」公眾號。