作者:TLIVE;

來源:牛客網;

鏈接:https://www.jianshu.com/p/32259011aca3

C++後臺研發工程師2018年BAT華爲網易等面經總結

如果我做不了大事,我至少能把小事做得大氣一點。——馬丁·路德·金

先介紹下個人情況,國內top5本碩科班,英特爾和騰訊兩段實習經歷,幾個項目和還沒中的論文QVQ。目前提前批和內推已經基本結束,有意向的offer也有了幾個,現整理下C++後臺的面經(包括春季實習招聘)合集回饋各位牛友。有些問題可能時間久遠記得不太清楚了,主要給大家看下面試官都問了哪些問題的類型吧,話不多說黑喂狗!

1.阿里-螞蟻金服

一面:

扣簡歷項目細節

linux下一個write()函數的具體過程

介紹下page cache和buffer cache ,它們有什麼區別

fysnc調用哪個內核模塊,你熟悉哪個內核模塊

free 指令怎麼用

select、epoll,以及邊緣觸發、水平觸發

TCP三次握手、四次揮手,time wait解釋一下

線程和進程的區別

瀏覽器輸入一個網址,得到頁面的具體過程。

JAVA會嗎(不會你別問)

數據庫用過哪些(沒用過你別問),數據庫的索引介紹一下(。。。)

單鏈表翻轉,如果只用指針的話怎麼翻轉

找100億個數中最小的1000個數

二面:

扣簡歷項目細節

JAVA會嗎(真的不會)

那問點C++吧:多態如何實現、auto如何實現、編譯器對extern修飾的變量會如何處理、一個空對象的大小是多少、函數重載時編譯器是如何工作的、內存對齊的原則

分佈式系統中CAP原則,給出具體的場景

用過哪些分佈式的系統,解決了什麼問題

B+樹和紅黑樹的特點,爲什麼紅黑樹能保持較好的平衡性

介紹下哈希表的原理。

如果一個進程有異常如何監控(答了用htop查看cup和內存的適應狀況)

兩個文件各有100億個URL,如何找到兩個文件中相同的URL

三面:

扣簡歷項目細節

我們這邊JAVA用的多(我會好好學的!)

說下爲什麼會出現死鎖,如何避免

介紹下讀寫鎖,讀寫鎖適用於什麼場景

udp和tcp的區別,如何用udp實現tcp

五種I/O模型介紹一下

四面:

​扣簡歷項目細節

你簡歷上說參加過數模,介紹下當時的情況

你論文裏面解決的問題用了哪些算法

馬爾科夫鏈介紹一下

你平常會學習什麼算法(老哥別問了,我知道你肯定是做算法的了。。)

2.騰訊-IEG遊戲部門

一面:

扣簡歷項目細節

自己做過遊戲嗎?難點在哪裏?

論文裏面的問題來源,如何解決

判斷兩個鏈表相交,並找出交點

linux的dd指令操作介紹一下

進程通信的幾種方式

二面:

扣簡歷項目細節、寫了多少代碼,是幾個人做的

C++ List STL底層數據結構

Make file原理,流程,如何寫?

gdb原理,爲什麼能讓程序停下來?coredump調過嗎?

手寫個雙向鏈表,帶插入刪除等功能

bitmap用過嗎,介紹一下可以使用在什麼場景

實習答辯面:

介紹實習做的東西

進程通信-共享內存怎麼用

實現無鎖循環隊列的基礎是什麼

DDR4 2400MHZ的內存讀寫帶寬多大?說說你方案性能比內存讀寫帶寬差這麼多的原因(被無情diss)

unreal engine如何是進行內存管理的,介紹一下它處理一張貼圖的流程?

我看你用的是蘋果手機,你用過它的延時攝影(現在叫慢動作)的功能嗎,它爲什麼在幾年前就可以處理4k 60fps畫面產生的巨大數據流(我沒用過謝謝)

3.百度-AI芯片算法

一面:

扣簡歷項目細節

FPGA和ASIC的區別

LRU實現,以及幾種優化

TLB是什麼,有什麼用

棧的逆序操作,不能使用額外的數據結構。

網站server與client間的通信安全,攻擊者僞造身份怎麼辦,中間人攻擊怎麼防禦

大數定律、貝葉斯公式

CFS調度器介紹下,如果離線處理海量日誌文件,如何設計CPU調度策略以提升性能

排序,所有數字大小都在a到b之間,要求線性時間

八個球,七個一樣,一個重,最少幾次找出那個重的

二面:

扣簡歷項目細節

Linux的內存管理、slab機制介紹一下

DMA操作介紹一下

網卡的工作流程

設計一個網站,實現多人同時搶票功能,保證先點擊的人先進入頁面,人滿了或者沒票了需拒絕

如何實現多人搶紅包的功能,保證高併發和數據的一致性

實現一個聊天工具,在底層如何設計存儲的數據信息,以支持類似微信聊天一樣,支持刪除信息(信息自己看不到,別人看得到)、撤回信息(信息自己看不到,別人看不到)和轉發信息

設計類似百度百科的功能,允許多個人同時閱讀,保證只有一個人修改

三面:

(終於不用再介紹一次簡歷了)

缺頁中斷什麼時候會發生

fork時的cow技術介紹一下

說下你知道的內核中所有用到內存zero copy的地方

寫一個波浪子序列的題

shell腳本怎麼寫

linux中VFS是什麼,和其他具體的文件系統如何配合工作的

介紹下epoll和iocp

4.華爲-中央軟件

一面:

給面試官介紹我簡歷上做的東西。。

Nagle算法和tcp的擁塞控制

項目用過哪些數據庫嗎(沒用過,別問)

二面:

過一下簡歷項目

如何理解軟件的健壯性和高可靠性

瞭解哪些linux內核的模塊

5.網易互娛-遊戲部門

實習面:

簡歷項目(聽完一個問題也沒問。。)

虛函數和多態如何實現的

static函數能定義成虛函數嗎

shared_pointer瞭解嗎,weak_pointer有什麼作用

std::move有什麼用,介紹下左值和右值

Const的用法

常量指針和指針常量

STL vector和map的底層結構

鏈表排序,如何直接在鏈表上實現快排,如果元素類型任意呢?

整數的二分查找,如果元素類型任意

B+樹如何保持樹平衡的

LINUX找特定的文本段

LINUX如何殺掉特定名稱的進程

一個二維圖,如何優化一個大圓包含儘量多的小圓

深度優先+存子狀態與動態規劃的區別

socket編程介紹一下

6.拼多多-業務平臺

一面:

扣簡歷項目細節

socket裏面send和recv流程具體介紹一下

說一下你對系統cache的理解

spark streaming介紹一下

Linux一次系統調用的過程

系統進程內存分配,虛擬地址,內核高位物理地址

自旋鎖、MCS鎖

軟/硬連接下inode是如何工作的

二面:

過了一下簡歷項目

JAVA會嗎?(不會,別問)

epoll介紹一下

離線的用戶行爲日誌分析系統可以怎麼做,隨便說一下

如果線上運行的服務端崩潰了,如何排查原因並解決 (我說的是查log)

最關鍵的log可能在服務端時崩潰時丟失,並沒有真正寫入磁盤,重啓後無法查看該如何解決(承接上一個問題,我說的是log肯定還在內存裏,可以實現一個常駐內存的日誌系統來保存log)

如果整個物理機器宕機了,內存裏面的log也沒了,如何解決(不知道。。實在沒辦法就只能強制每次產生日誌就刷進磁盤。。)

用過哪些數據庫嗎(沒用過,別問)那redis的一致性哈希怎麼實現的(。。。)數據庫的四種隔離級別(。。。)

設計模式裏面裝飾器介紹一下

如何統計一個數的二進制有多少個1,logN的方法能想到嗎?

寫個最長公共子序列的題

以上幾家公司問過的問題基本上是這些,大家如果有什麼問題覺得我沒說清楚的可以留言或者私信我,如果後面還面了其他公司我還會回來補充的。

最後,也請大家幫忙把關下幾個意向的offer(都還沒正式談錢):

1.螞蟻金服

2.騰訊遊戲

3.百度AI芯片

4.華爲中軟院

5.拼多多

相关文章