暑期實習面經(jīng) 攢人品
持續(xù)大概一個月
得物 golang 一面
約半小時,沒寫題
- 自己選擇一個項目進行介紹,項目有沒有壓測
- 項目中遇到的難點
- select * from tableA where a=1;a有索引但是走了全表掃描為什么,什么情況下會發(fā)生?
- defer func(){recover()
}
panic()
- map,range兩次為什么會不同,怎么實現(xiàn)并發(fā)安全
- 版本管理工具,git 分支
- http2特性
- IO多路復用
- 鑒權除了session還有哪些,jwt https://developer.aliyun.com/article/1358589
- 你了解哪些限流算法
- 用到了zset,增加的命令是什么:zadd
- redis兩種持久化方式,區(qū)別
面試官很nice,初面緩解了自己的緊張情緒qaq
后續(xù):幾天后,2.24 hr告知通過,只有一面技術面,但是不能立即到崗,拒
automq 在線編程
公司主java,一面選擇一道力扣中等題,20min限時。應該是初創(chuàng)公司,里面應該有大牛,估計難度不小
momenta 一面 蘇州 c++
約45min,沒問什么項目(可能和他們不相關)
- c++11新特性,智能指針的引用計數(shù)是怎么實現(xiàn)的
控制塊是一個動態(tài)分配的對象,其中包含:
- vector,map范圍遍歷,如果自己實現(xiàn)的類,怎么才能實現(xiàn)范圍遍歷(迭代器)
- 存儲相關,之后的工作方向想做什么
- c++多線程相關,我回答的怎么互斥,并發(fā),共享
- 線程,進程區(qū)別,,有點緊張,面試時分不清了,直接說的thread,process。。。
- 算法題,先介紹思路(表述的亂七八糟),數(shù)組刪除對應若干下標
- 反問
莫名緊張
京東零售
2.28號,約1h
項目存儲相關,主要問項目,沒咋問八股
- 設計一個緩存,lru,lfu,
- lsmtree和B+樹
- 找零錢
可能因為方向對應,面試官詳細介紹了業(yè)務,做內(nèi)部的數(shù)據(jù)庫支持,不對外出售。問了一些意向,愿不愿意來京東,做數(shù)據(jù)庫相關的,研三能實習嗎
3.7號,約45min
主要問實習,問的比較細,直到給面試官講明白
- SGL結構
- 壓縮具體怎么做的
- -10000~10000之內(nèi)的數(shù)據(jù),有一百萬個,怎么O(n)排序
沒手撕
3.13約三面hr面
wxg微信游戲
timeline :
3.4 一面
3.10 二面
3.18 三面
3.26 面委會
3.27晚7.30 hr面,加了微信,約一倆小時收到云證
4.1 晚飯前還是hr面試鏈接,晚十點半收到offer郵件
4.2 上午接了offer,很快收到紅圍脖
hr面后,因為官網(wǎng)一直是hr面試鏈接且收到了別的offer,中間催過。4.1號回微信hr說先發(fā)郵件了,沒有offer call
3.4號,自我介紹
- mallloc,delete為什么只用傳指針,不需要大小
- 瀏覽器敲下回車發(fā)生什么
- 發(fā)送 a b c 三個請求,服務端只調(diào)用一次 recv 會接收到什么數(shù)據(jù),如果用 udp 呢
- const int* p 和 int* const p
- go的map可以無限增長嗎,內(nèi)存是有限的,怎么無限增長。
- mysql刪除表有哪些命令,自增id區(qū)別?
drop table [ if exists ] table_name; truncate table table_name; //自增列重置 delete from table_name [ where condition ]
- 介紹下leveldb結構
- 介紹項目中的下單,怎么區(qū)分用戶是真的想下兩單還是因為網(wǎng)絡重發(fā)的請求,事務id在哪里生成的,
- 代碼:
3.10號,二面,約50min
面試官沒開攝像頭,自我介紹
- c++什么函數(shù)不能是虛函數(shù)
- 進程和線程區(qū)別 協(xié)程,為什么要協(xié)程(忘了面試官說的正確答案了)
- 追問協(xié)程和線程的調(diào)度,用戶態(tài)到內(nèi)核態(tài)的調(diào)度?(想問協(xié)程調(diào)度嗎?),記不清怎么問的了,胡扯到了gmp。。追問了很多
- 怎么知道協(xié)程被阻塞了,沒答上來,說用epoll
- 實習項目的節(jié)點數(shù) 20?單機上的并發(fā)數(shù) 100000qps?kv的k大?。≧ocksDB 本身不建議使用大 key,但是它支持的 key 的最大長度是 8MB,value 的最大長度是 3GB;)
- 比賽項目,項目幾個人,承擔的角色,做的內(nèi)容
- 有點記不起來了
手撕:爬樓梯。。。
3.18號,三面,自我介紹,約45min
- 問項目布隆過濾器怎么實現(xiàn)的
- lsmtree內(nèi)存碎片?
- lsmtree的key value大小,定長的不定長的
- lsmtree落盤是按順序的還是有權重的,權重怎么設計,回答了鏈表+map,面試官說堆也可以,分析時間復雜度
- 你怎么寫個腳本判斷某個程序是都存在內(nèi)存泄露,數(shù)組越界等問題,回答了valgrind,一個字節(jié)一個字節(jié)比較,面試官提到了動態(tài)和靜態(tài)兩種方式
- 介紹一下智能指針
- 介紹一下你做的操作系統(tǒng)實驗6.s081
- epoll采用的數(shù)據(jù)結構,和select比較
- 介紹一下在實驗室參與的項目
沒手撕,反問,主要用c++開發(fā),涉及到一些kv存儲,沒用到協(xié)程這些,可以多學習些網(wǎng)絡相關的
面完當天狀態(tài)變回復試
3.26號,四面 面委會,跨部門面試,一個面試官,約半小時,沒手撕。問了點項目 & 一個大數(shù)據(jù)處理題
- raft的read index和lease 區(qū)別,在leader上讀的區(qū)別(還好之前準備raft的時候看過)
- lsmtree的項目:
- 問比賽
- 100g的文件,10g內(nèi)存,磁盤容量不限,怎么統(tǒng)計詞頻。hash去重
面試觀察,騰訊的面試官大多不開攝像頭,所以不用根據(jù)這個懷疑是不是kpi面了
3.27號晚7.30,hr面,hr加了微信。晚十點收到信息核實郵件(云證)
4.1號晚飯前還是hr面試鏈接,晚上十點半收到offer郵件(可能是因為3.31因為一直卡在hr面試鏈接和別的offer下來了催過hr,hr 4.1號晚上回微信說先發(fā)了offer,第二天打電話。
4.2號上午點接受之后收到紅圍脖
快手
3.11 一面,主要問項目,沒問八股,大概1h
- 介紹項目用戶登錄注冊下單等流程
- 項目中怎么使用分布式鎖解決緩存擊穿問題的
- 項目中l(wèi)smtree怎么和raft結合的
- lsmtree項目和實習做的區(qū)別是什么
- 項目插入kv的流程,對于key比較大的情況,有什么優(yōu)化
- 項目性能怎么樣,為什么差,原因是什么,提到了鎖的問題
- 跳表細粒度鎖針對我說的這種情況怎么優(yōu)化
- 實習項目主要做了什么,和rocksdb性能對比,為什么性能比它差
- 介紹一下實習中用到的學習型索引
- lsmtree適合寫多讀少的場景,針對lsmtree讀性能低做了什么優(yōu)化
- 壓縮是怎么實現(xiàn)的,帶來什么優(yōu)化和開銷
- SGL結構是用來干嘛的
手撕:前序遍歷,中序遍歷構造出二叉樹,acm模式
面試官人很nice
3.13查看,掛
快手
3.19 一面,介紹項目。約1h,沒問很多,主要是最后那個二分思考題
- SGL結構是什么,rocksdb中使用這個結構了嗎
- lsmtree和B+樹的優(yōu)劣
- b+樹把16kb頁寫入磁盤是原子性的嗎,會存在一部分寫成功,一部分沒寫成功的情況嗎,(回答了redo log,undo log,感覺這可能答非所問了),面試官說不是原子性的,可以做一些補償
- sstable有哪些結構,在sstable中找key的過程,回到了先查布隆過濾器,再查索引,然后對應的block
- xv6(面試官可能之前做過這個實驗)實驗的fork:cow時,怎么觸發(fā)的page fault做的什么判斷
- page table子進程和父進程是共享的嗎,線程之間共享嗎
- 父進程子進程共享的物理頁都是只讀的嗎,父進程要寫入數(shù)據(jù),是分配新的內(nèi)存頁嗎,子進程這時候再寫入,是會分配新的物理頁嗎,原來的物理頁怎么回收
有序數(shù)組可能重復,實現(xiàn)lower_bound,返回下標
怎么只掃描一遍,找到lower_bound和upper_bound,他們實際工作遇到的問題,最后還展示了他寫的python代碼
部門是做圖數(shù)據(jù)庫的,比如人是節(jié)點,關注是邊,bwtree融合lsmtree和b+樹的優(yōu)勢
卡了很久之后掛
螞蟻
一面,3.12 自我介紹,問了一下項目,然后問八股,電話面約1h
- 項目 lsmtree 和 b+樹對比
- c++創(chuàng)建的空類會自動創(chuàng)建什么函數(shù)
- 重載和重寫有什么區(qū)別
- 虛函數(shù)和純虛函數(shù)有什么區(qū)別
- 菱形繼承是什么,怎么解決,除了虛繼承還有什么方法
- 三個智能指針的區(qū)別
- weak_ptr怎么初始化
- c++檢查內(nèi)存對齊的方法
- c++的常見容器,介紹一下
- 進程線程區(qū)別
- 如何保證線程安全
- 什么是遞歸鎖(可重入鎖),使用場景
- tcp的半連接隊列是什么
- ping域名過程中發(fā)生了什么
- epoll的邊緣觸發(fā)和水平觸發(fā)
- 網(wǎng)絡字節(jié)序和主機字節(jié)序的區(qū)別
- 介紹歸并排序的過程
3.14 一面,電話面試,后面發(fā)郵件寫題,一個半小時。主要問實習項目,問數(shù)據(jù)規(guī)模
- lsmtree存儲的元數(shù)據(jù),對應的數(shù)據(jù)有多大
- lsmtree的key大小
- level層有多少
- 一個lsmtree實例存多少個kv總數(shù),一個主機有多少lsmtree實例
- 合并過程一般幾個sstable合并
- 下一層是上一層的多少倍
- wal文件怎么編解碼
- 還有一些簡歷上相關的,最后問了一些八股
手撕:(感覺這個題目很奇怪,后面面試官提示歸并?不知道正確方法是啥。貌似應該以A的數(shù)組的元素作為樞軸對B進行快排?)
兩個數(shù)組長度相同,元素是相同數(shù)字的不同排列,比如A={10,50,40,30,20},B={40,20,30,10,50}將兩個數(shù)組的元素進行調(diào)整位置,使得對于任意i,a[i]=b[i]
限制條件:
*1.空間復雜度0(1)
*2.數(shù)組元素只能在本數(shù)組內(nèi)被移動/交換
*3.所有數(shù)值的比較只能在一個A的元素和一個B的元素之間進行
能不能時間復雜度O(nlogn)
3.24 二面,說是業(yè)務終面,約半小時,主要技術閑聊,沒拷打。面試結束后顯示通過。
3.28(周五) hr面,40min,說下周二之前給答復。面試結束后公眾號顯示通過。
3.31 收到offer郵件
字節(jié)
3.12號,主要問項目以及一些關于項目相關的開放性問題,比如技術選型。約1h
- 跳表和B+樹,lsmtree為什么采用跳表
- lsmtree有什么優(yōu)勢,適合做什么,適合什么需求,答得是備份和冷存儲,追問備份有更適合的存儲產(chǎn)品
- 做的這些數(shù)據(jù)有序,布隆過濾器,索引目的是為了提高lsmtree讀性能,為什么lsmtree要兼顧讀性能(其實是上個問題的追問,lsmtree適合做什么
- 為什么raft寫入需要半數(shù)節(jié)點以上成功寫入才能返回客戶端
- 寫請求在內(nèi)存中可能因為崩潰而丟失,怎么避免
- 寫前日志也需要寫磁盤,為什么不直接寫磁盤
- 為什么采用跳表的lsmtree的寫性能高于B+樹,B+樹的寫入性能也沒很差,扯到了鎖粒度
- 當讀寫比例差不多的時候怎么選擇存儲引擎
- 跳表的細粒度鎖怎么實現(xiàn)的
- 當寫入的時候可以允許讀請求嗎,(讀請求和寫請求能夠并發(fā)嗎),怎么實現(xiàn),讀的時候讀什么時候的數(shù)據(jù),新寫入的數(shù)據(jù)還是舊數(shù)據(jù)?引出下面的mvcc
- 用一句話解釋一下mvcc
手撕:合并兩個有序數(shù)組
面試官很nice,不難為人,引導著思考。部門用go做數(shù)據(jù)庫上層,用c++對mysql(5.7嗎)做二次開發(fā)
3.17號,字節(jié)二面,約1h
- 你了解TSM嗎
- 如果考慮時序,lsmtree怎么更改(時序 會有冷熱
- 讀取比如一個月的數(shù)據(jù),從1s讀取一回到5min讀取一回,lsmtree怎么更改
- ceph的osd塊大小是多少,不同塊粒度有什么影響
- rocksdb為什么比B+樹讀取性能低
- 讀過谷歌那篇 學習型索引的論文嗎(沒讀過,不記得他說的論文名了qaq Recursive Model Indexin?
- 房間里面兩臺機器傳輸?shù)膸挒槭裁磿戎忻乐g兩臺機器的帶寬高?因為需要確認,數(shù)據(jù)包的往返時間越長,通信的效率就越低
- 了解糾刪碼嗎,了解raid嗎
- io調(diào)度策略有哪些,在vfs上層下層,在塊層上面下面
- 你怎么設計降低內(nèi)存碎片,你了解slab系統(tǒng)嗎
- ceph
- 以及一些簡歷上涉及的問題,壓縮需要字符比對,建立字符匹配啥的,定長輸出壓縮怎么確定從哪里截斷
手撕:線程依次打印abc,打印10次 C++|四種方法解決三線程按順序輪流打印ABC的問題:互斥鎖和條件變量、原子操作、信號量_c++多線程按順序輸出abc n次 條件變量-CSDN博客
次日掛
4.2號一面,后端開發(fā)實習生-視頻與邊緣。做視頻的編解碼,存儲啥的。簡單總結下,有些忘了。
- gomall項目八股,緩存三劍客,夾雜著場景問
- 兩個sql
手撕:只能傳輸0-8,要傳輸0-9怎么編解碼。普通編碼會有傳輸數(shù)據(jù)量爆炸的情況。大數(shù)轉換成9進制。
拼多多
一面,3.20,1h
先開始問項目相關的
開始做題,中綴表達式求值,只有加減,有嵌套括號,沒寫對orz
時間不夠了,最后問了一點八股
- 給個字符串,怎么壓縮,怎么樣才能壓縮率高(可能簡歷上寫了壓縮的
- 介紹一下索引
- 前綴索引的數(shù)據(jù)結構
二面,3.26,約1h
先開始問項目相關的,后面結合項目問了個場景題,手撕
- 介紹一下lsmtree結構,與B+樹區(qū)別
- kv系統(tǒng)中數(shù)據(jù)結構怎么設計的,比如redis,說下hash
- 哈希之后鏈表存儲,你有其他想法嗎,回答avl樹,紅黑樹,你認為這樣能提高性能嗎
- 項目中提到壓縮,你設計一個壓縮系統(tǒng),需要考慮什么
- lsmtree項目有沒有做緩存來加速讀,如mysql的buffer pool
- 跳表為什么要做細粒度鎖,怎么實現(xiàn)的
- 緩存雪崩,緩存擊穿是什么
- 假如一個熱key,大量請求來了之后會導致redis崩潰,這個場景怎么解決
- 為什么用rocketmq異步下單,回答說學習用。。面試官說業(yè)務中一般不這樣
- 虛擬地址和物理地址區(qū)別,為什么要有虛擬地址,解決了什么問題,怎么解決的。這里面試官問虛擬地址是怎么實現(xiàn)進程隔離,物理頁面之間不重復的,可能他不是很熟,差點被帶偏。后面問物理頁(他可能不是搞操作系統(tǒng)的,先開始說的是別的詞)多大
手撕:二維數(shù)組,存0 1 2,1禁止通行,從位置0,0到2所在位置的最短路徑。pdd不能自己這邊調(diào)試,不知道為啥運行結果不對。不過面試結束后發(fā)現(xiàn)pdd給的樣例好像有問題。
拒三面
美團
3.25號,主要問項目,基本一句一句問簡歷上的項目怎么做的,怎么實現(xiàn)的,連帶著八股
- 布隆過濾器返回1,做什么優(yōu)化可以避免誤判
- 跳表的鎖做了讀鎖,寫鎖嗎,還是沒區(qū)分
- 異步compact會影響讀寫性能嗎,怎么優(yōu)化
- 分布式共享session存的是什么?存的用戶id,怎么防止偽造
- rocketmq異步下單,假如前100個下單成功,第101下單失敗,什么時候返回失敗,需要等很久?
- 訂單超時未支付則取消訂單有什么方法
- zset多久掃描一次,回答的30s。。
手撕:版本號比較
部門是做醫(yī)藥健康的,比如美團送藥
次日掛
4.1號一面,1h多點,應該是目前為止最有技術深度的一場拷打。美團對象存儲部門,元數(shù)據(jù)啥的。面試官很懂技術。根據(jù)個人技能逐個問八股技術,后面問一點項目,最后面問你覺得你還有哪些比較熟的沒有問到的。感覺有幾個問題在故意挖坑
- 介紹一下malloc
- stl哪些是線程安全的(懷疑面試官在故意挖坑
- c++11新特性也不新了,說一下rail,它有什么好處
- 介紹一下虛擬內(nèi)存和物理內(nèi)存
- 內(nèi)存碎片怎么解決,比如用戶已經(jīng)擁有了一個這個內(nèi)存區(qū)域的指針,怎么進行內(nèi)存碎片整理
- 介紹一下gmp模型,gmp模型有什么問題,有哪些優(yōu)化的地方?;卮鹆巳株犃械逆i的競爭問題
- 如果一個協(xié)程遲遲獲取不到cpu運行,我回答了放回全局隊列,面試官說可以通過剛才提到的竊取,具體怎么樣面試的時候沒細說
- go協(xié)程沒有優(yōu)先級,怎么保證協(xié)程之間的優(yōu)先級比如先讓用戶讀寫io,再compact。面試官說他也不確定怎么做,不過應該有一些方案
- 你實驗室做信息存儲的,主要做什么,為什么簡歷上只寫了熟悉文件存儲的路徑解析過程,這只是一小點。
- 介紹一下inode和dentry,
- 硬鏈接和軟鏈接
- 介紹vfs
- mysql的雙寫
- lsmtree和mysql的b+樹的對比
- bwtree,那你讀過bwtree的那篇論文嗎
- 分布式鎖,面試官說校招都說熟悉分布式鎖,但實際上都不能深問。我來問一個:分布式鎖的召回。描述了一個場景:b和c向a申請了d資源的鎖?,F(xiàn)在b可能宕機了或者b與a網(wǎng)絡延遲了或者b與d網(wǎng)絡延遲了,怎么保證訪問d資源的互斥性,該怎么做。說目前還沒有什么解決方案
- 說簡歷上異步compact這里,自己這里可能寫的簡歷有點問題。磁盤有io多路復用嗎
- raft是校招標配了嗎,笑死,說不問raft了
- 講一下布隆過濾器
- 你覺得你還有哪些比較熟的沒有問到的?;卮鹆薼smtree
- rocksdb寫入性能快的原因有哪些
- wal怎么保證宕機恢復的時候最后一條日志的原子性。先寫日志還是先更新index,index怎么實現(xiàn)原子更新,回答了faa,cas。我和他都笑了,他說與mysql的雙寫有點像
- rocksdb的remote compact
說部門是做對象存儲,元數(shù)據(jù),存算分離,計算層,存儲卸載到巴拉巴拉
晚上掛
阿里控股
3.27號,一面,2h,有點抽象
- 問項目
- 共享屏幕畫圖講sstable結構,字段,怎么存儲的
- 面試官不是很了解lsmtree
- 別的什么數(shù)據(jù)庫或者存儲用到了lsmtree
- memtable底層有用b+樹實現(xiàn)的嗎
- compact過程有什么優(yōu)化的手段
- 你了解clinkhouse嗎
面了倆小時,手撕力扣30,力扣沒寫過這道題,words=[ab,cd,ef]求words全排列在s中的首次出現(xiàn)的位置,最后討論用滑動窗口做,自己這也沒法運行,一個樣例過了,又有下一個樣例報錯,寫了1h還是太菜了。不過為啥面試官不提前結束orz,合理懷疑面試官在趁機摸魚。沒反問,究其惡心,共享屏幕給他畫sstable結構怎么存儲的,什么字段。語言項目都不匹配還撈人面試干啥。而且hr打電話約面試的時候我還專門問了是否匹配,她說部門有做存儲的,巴拉巴拉。
周末掛