作者:一碗紅豆湯;
來源:牛客網


-----

百度十三面,八字不和

-----

從內推到今天,總共十三面,5個部門+一次校招,身心俱疲,可能這就是菜雞吧。每次完美面試之後,下一面必然是死亡面試。當時信誓旦旦地說面到十幾面,我就在牛客寫個面經,今天總算結束了。總共面試經歷了三四十次了吧,我可真是菜的真實。前期每次都寫面經總結,後來就發現面試官總有新花樣,我學會什麼就問新的什麼,太菜了太菜了。


始於部門宣講SRE

SRE部門7月上旬在學校做宣講,然後現場面了幾天,好像當時不招人,略微有些調戲我們...走完了三面。

一面-電話面試

  • 主要聊項目
  • 假如有一羣用戶打開百度崩潰,有哪些原因?
  • 然後問我有沒有了解一些高層的存儲,比如數據庫的redis和levelDB。當時完全第一次聽,好吧,現在redis已經很熟了,levelDB rocksDB都能聊上一些,但感覺又沒什麼用了,面試官更新問題的速度總比我學習的速度快。

二面-現場

1.項目

2.邏輯題:帽子顏色問題。給了我3分鐘,花了1分鐘推出來,大佬可能幾秒鐘就會了,我太菜了。

3.編程題:一串珠子首尾相連L長度,有n種顏色,找出最短子串,包含所有顏色。當時用的滑動窗口解的。給了我5分鐘寫僞代碼,還有一些沒寫完,基本正確。

4.有0-9的數字,token密碼,6位密碼,拿反了,輸入也能正確的概率?給了我4分鐘。少考慮了6和9的對稱,太菜了。

5.同樣假如我打開百度崩潰,有哪些原因?

6.聊cache

三面-現場

交叉面,不同小組的面我,面完送了一個巨醜的百度吉祥物。

1.項目 請把我當小白給我講一遍。你這個項目有什麼難點。哎,菜雞做的都不知道哪裏難,現在都不會回答這個問題,說了也說不難。

2.編程題:求兩個鏈表的相交點。給了我7分鐘

先問了哪些特殊情況,我說空鏈表,包含關係鏈表,有一個鏈表成環。

寫代碼,用的先找到共同尾部,同時得到長度差,再長鏈表先走長度差,再找第一個公共節點。

代碼沒有考慮道成環情況。問我成環怎麼做,我說錯了,環問題劍指offer有一題原題。

3.qq通信中,假如客戶端時間不一定準確,客戶端到服務器之間存在不確定的網絡延遲,如何在服務器端保證兩個客戶端發送消息的先後順序

不會,後來討厭應該是效仿tcp

內推上海百度

興致勃勃地找師姐內推,而且很膨脹,作死的開始,看着45個cpp hc依舊投了。

智能雲-一面即涼

C++

1.inline介紹 static+inline會產生什麼樣的效果

2.++i和i++有什麼區別。效果上有區別,性能上++i會快一些。被專門問這個問題以後,寫算法題都用++i了。

3.volatile關鍵字

4.虛函數 構造 析構

5.智能指針 當時C++小白,這個沒回答上來,所以馬上接下來C++Primer全溫習了一遍。

6.move函數 模板

7.vector的capacity和size

操作系統

1.malloc原理 不會,後來學會了brk和mmap 學會了虛存管理和夥伴算法 slab分配器

2.多線程經驗?沒有 鎖有哪些 spin_lock mutex_lock rw_lock 樂觀鎖 悲觀鎖

3.top 命令詳解

4.LRU實現

5.linux內存管理 進程怎麼調度內存

網絡

1.TCP三次握手 四次揮手 爲什麼

2.半雙工和全雙工知道嗎

3.出現大量的time_wait怎麼辦 當時連time wait是什麼都不知道

也算讓我清醒的認清了現實,可是馬上第二個部門就撈我了,沒來得及消化這些知識

垂直搜索一面

因爲有了上一次智能雲的面試經驗,對C++ 網絡 操作系統也算現背現用,所以過了,會的比較多了。面試官人也很好,問我會的,不會的也會引導我,基礎面試。

1.根據我會的,先讓我講了機械硬盤和SSD的區別

2.操作系統的進程和線程概述

3.鎖

4.大端小端

5.TCP 三次握手 四次揮手 time_wait這次我會了

6.海量數據top k 不會,被引導的,學會了小根堆找top k

7.快排算法 歸併排序算法 怎麼避免快排的最壞情況, 當時不會,後來查了一下沒有完美的解決方案,可以隨機取三值取中位數

C++有關

老生常談的幾個:虛函數 多態 智能指針 move struct和union的區別

容器的安全迭代刪除

LRU如何防止掃描,我現在也不會,沒找到答案

垂直搜索二面-死亡面試

上來先素質三連,寫三道編程題

1.海量數據,有m個有序數組 求總共的top k

我寫的是每個數組的尾部k個數據入優先級隊列,得到最後top k,面試官並不是很滿意

2.2個文件,每個都有1億個url,找出其中相同的

我寫的是先用set寫入1個文件,再查另一個 emmm顯然這有點蠢

一般這種海量應該是切割小文件,再多線程,再歸併

3.2000萬行數據,每一行可以看成很多列,比如找出列值>0 <10的行 說一下思路就行

我我我。。。不會

提示一下 類似數據庫

我我我。。。還是不會

後面就是垃圾時間了

1.怎麼查看目錄下有多少文件數量(不會。。。ls+grep find 找了答案,現在還是不會)

2.top命令的sy和us

3.進程通信 線程通信 多個進程怎麼維護鎖

4.cache SSD 機械硬盤區別

然後開始瘋狂吐槽我

百度雲一面即涼---太太太難了,要去造航母

1.項目引申淘汰算法 LRU ARC 分級熱度

2.TCP

3.selcet poll epool 背誦

4.TCP nodelay 好吧,我又是第一次聽說,漲姿勢

5.fork具體過程 又漲姿勢 我只知道fork一個一樣的子進程

6.父進程open文件 fork之後子進程能用嗎 能,拷貝了文件描述符

7.程序dump了,怎麼查看出錯在哪裏,有這方面的經驗嗎 又是知識盲區:我說log gdb 查看堆棧之類的,面試官應該覺得不對 估計是正在跑的程序dump了怎麼辦吧

8.性能分析是基於工具的嗎 怎麼做性能測試:我說之前是用的fio 跑數據集 然後用top iostat這些命令看 還是不滿意 涼涼

9.程序有一個很熱很熱的cpu消耗點 比如代碼寫錯 怎麼找到它 又觸及道知識盲區了

後來百度之後大概知道應該用perf oprofile這些工具

編程題

1.鏈表找中間節點 快慢指針法:

怎麼把數寫到文件再恢復出來

你先說一下二叉樹,我說先序和中序都存一遍

多叉樹,我說存當前節點的ID和父節點的ID,恢復的時候根據ID掛到樹上

我覺得行,但是面試官好像有點懷疑

好吧,最後幾個真是死亡問題,我太菜了

部門直招 系統部存儲組--北京的希望

跟我做的方向很接近,也是有關於openchannel SSDs還有kv數據庫,我已經把redis levelDB都熟悉了,然後因爲寫論文,看了好些文獻,百度也用了wisckey,一面面試官對我也很感興趣,評語寫的太好了。然後二面就地獄難度。這幾次面試沒有寫面經具體記不清楚。

錯覺一面---感覺完美

聊項目 聊openchannelSSDs 聊kv emmm把面試官聊的很開心

這幾個星期把國內外的kv和ocs的沒看的文獻也都看了,跟面試官吹,然後就覺得我研究的挺深的

死亡二面---跌落谷底

昨天聊了深度,今天聊一聊廣度,死亡的開始

最底層的硬件開始往上聊 全棧式存儲

聊硬件 不懂

聊NVMe協議,問我協議內容,命令內容 知識盲區,只懂一些

IO調度程序層 當時也不知道 盲區

通用塊層 瞭解

文件系統 瞭解一些

VFS 瞭解一些

用戶態到內核態 瞭解一些

levelDB 瞭解一些

分佈式存儲 ceph 盲區

虛擬化 盲區 估計指docker這些

簡單聊一下測試工具 fio

io深度 我說--depth

這個真的是io隊列的深度嗎,我說是的 踩雷

多線程 我說numjobs 他說是這是進程 線程在後面加--thread emmm這個我持懷疑態度

你知道一些新的硬件吧

我做過NVM上的文件系統

那你知道PCM嗎 我知道

它的顆粒怎麼存儲數據的? 盲區 應該是狀態變化

然後說我還是差了一點

三面

emmm聊聊項目 聊聊人生

因爲正直內推上報的前幾天,非常激動以爲三面了就可能有offer了

我還舔了好幾波,可以去北京,很喜歡百度

問了好多我工作之後的事,好吧最後還是沒有offer

說中旬來武漢現場聊聊,事實證明他把我忘了,這幾天校招面試他並沒有找我

北京校招---最後的進擊

一面--基礎面

40分鐘快速解決,看別人都1個小時

1.殭屍進程 孤兒進程 知道基本的,往深了問我就不會了

2.TCP模型 和UDP的區別 擁塞算法 基本都懂

3.如何判斷一個機器是32位還是64位

我說sizeof指針,他說那不用這個呢,我說那我try訪問32位後面的地址,拋出異常就是32位

面試官當時也不懂這個對不對,實際上是錯的,非法訪問,PCB中沒有這部分頁表,程序終止

可能還可以地址差吧,但是這個跟sizeof一個道理,還有網上一些方法,感覺都跟sizeof差不多的思路

4.聊redis 底層實現 再聊到跳躍表

5.寫一個二分查找

寫了,然後說我這個有點問題,emmm會溢出, left+right溢出,後來看了一下網上的,應該left+差值/2

不過還是感謝給我過了

二面---完美的錯覺

30分鐘快速解決,除了紅黑樹聊不下去以外,沒什麼問題

1.項目 測試

2.TCP模型

3.數據庫寫了3個select語句

4.static

5.C++常見容器及其底層實現

6.續上一個講到map 紅黑樹的時候 讓我講解一下紅黑樹 emmmm 知識盲區

7.續上一個hash_map時候講一下hash的衝突解決

8.C++11特性,並讓我寫了個很簡單的vector的一些用法

9.linux命令 grep top這些 基本都會

10.手寫單例 然後重載賦值構造函數

今天最後的死亡面試---還是結束我的秋招吧,我累了

爲什麼大多數人的校招三面都是聊聊人生,我的這麼黑暗,面試官還是個妹子

1.聊項目,去重壓縮

2.聊項目 redis openchannel SSDs等

3.聊操作系統

什麼時候用進程 什麼時候用線程 背完問爲什麼就懵逼了

我說多機分佈式用進程 高併發多線程用線程

爲什麼

我說因爲多機只能用進程而且進程管理簡單 線程管理複雜 安全性各種 自己要管理

我理解的本來就不是很深,一連串的問題直接擊倒

select poll epoll

開始我強大的背誦能力

面試官:你用過嗎

我沒用過

一看就是背的

面試官:話說你對面試準備了多少

我說我看了很多面試常用的,背了很多(我可能說錯話了)

4.二叉樹有8個度爲1的節點,3個葉子節點 總共有幾個節點。 懵逼

答錯 答成了10個。 應該是3+2+8=13

5.二維座標系裏有很多矩形,這些矩形有一條邊始終在一條直線上,找出外包矩形 懵逼

我說了往四邊查找最外邊直線的辦法。面試官說可能不對,而且效率也低

6.聊人生

課外興趣愛好

寫寫字玩玩樂器

7.職業規劃

做技術就行,數據庫 存儲方向最好

8.你還有什麼要問的嗎

請問您(給我死亡一擊的)是哪個部門的

地圖的 大組

總結起來就是很多都會背,一問深入就不懂,我又沒用過

百度,你好!百度,再見!

相关文章