秋招總結 C++方向,騰訊、百度、華為、滴滴、搜狐
作者:caelum
連結:https://www.nowcoder.com/discuss/13362
來源:牛客網
寫在前面的話:
今天收到了騰訊的簽約邀請,這意味著我的秋招之旅基本上可以結束了。平時經常在牛客上刷題以及看大家分享的面經,受益匪淺,因此趁著還有點小激動,跟大家分享下我的經歷。首先來總結一下這次秋招,我投了30家公司,以下列出,給來年的學弟學妹們做些參考吧:
阿里、騰訊、百度、京東、微店、唯品會、好未來、迅雷、360、搜狐、完美世界、攜程、去哪兒、愛奇藝、網易、網易有道、網易遊戲、搜狗、歡聚時代、美團、百度外賣、今日頭條、滴滴、深信服、藝龍、科大訊飛、小米、猿題庫、樂視、金山。
筆試光榮犧牲的有:阿里、京東、美團、猿題庫,可能還有搜狗
面試掛的有:百度
拿到了兩家的簽約意向書:騰訊,搜狐
華為進了池子,滴滴還在等通知,其他的直接放棄了或者是還沒有任何訊息
在應屆本科生中,我並不是什麼大神,身邊的大神們早就通過實習轉正或者內推拿到了bat的offer,我知道自己和他們的差距,所以在秋招前,我的心情是非常緊張和焦慮的。特別是投了一些內推完全沒動靜,唯一有動靜的網易內推筆試直接GG了,於是就更鬱悶了,真的是一度在懷疑人生。
在這些面試過程中,由於我的專案寫的比較多(然而大部分都是自己寫的小專案),所以大部分面試官都花了很多時間去問專案方面的細節(除了百度)(百度還是重基礎啊),所以一些基礎知識感覺問的不是特別多,也可能是本科生的緣故,問的不是特別難、特別偏,基本上看面經的時候都看到過。當然,這跟運氣確實有很大的關係,我感覺我遇到的都是非常不錯的面試官。另外,本人記憶力不好,有些問題已經忘了。
搜狐一面 50分鐘
全程聊專案
印象中問了兩個基礎問題:
select和epoll的區別
舉兩個stl內部實現的例子
搜狐二面 10分鐘
兩個問題:
描述一個印象最深的專案
對個性化推薦的理解
百度一面 50分鐘
1. strcpy和memcpy的區別
2. 手寫memcpy
3. linux下的malloc和free底層都幹了什麼事(呼叫free貌似系統不一定會真正釋放記憶體)
4. 手寫一個類(考察類的前置宣告)
5. epoll和select的區別
6. map遍歷刪除(考慮迭代器失效)
7. 手寫快排
騰訊一面 90分鐘
1. 做題:將近20道,主要是C++,作業系統和計網,都是一些基礎知識點。記得的有:
struct記憶體結構
一些關鍵字的作用(super是C++的?,沒看到過)
執行int main(int argc, char *argv[])時的記憶體結構
中斷
虛擬地址
Nat
Tcp的三次握手和四次握手
訪問www.qq.com經歷的過程
2. 問一些筆試做錯的題
3. 虛擬函式是怎樣實現的。。。
4. 已知有一個struct X,其中包括一個變數a,求a在X中的偏移量(不能宣告struct變數)
面試官給的答案:&reinterpret_cast<struct X *>(0)->a
5. 程序和執行緒的區別
6. 專案相關
騰訊二面 50分鐘
1. 主要是專案
2. 程序間的通訊方式
3. 如果父類和子類都有自己的虛擬函式(不是覆蓋),記憶體結構是怎樣的(各自都有自己虛擬函式指標)
4. 手寫快排
5. 數獨求解演算法
騰訊HR面:30分鐘
1. 你的一些個人基本情況
2. 總結你的大學四年
3. 你的優點和缺點,附上例項
4. 你的意向崗位和城市
5. 其他公司的面試情況
6. 等等。。。
華為技術面 40分鐘
1. 虛擬函式是怎樣實現的。。。
2. 看github程式碼。。。
3. 實現一個計算器的思路
4. 專案相關
華為綜面 30分鐘
面試官應該不是HR,像是一個部門的頭頭,一直在說他們工作的方向,沒問我啥,就讓我宣傳一下華為以後只會招更多的本科生,研究生會招的越來越少
滴滴一面 30分鐘
筆試做錯的題全都拿來問一遍
問些基礎,有兩個問題印象很深刻:
epoll和select的區別。。。
虛擬函式是怎樣實現的。。。
專案相關
滴滴二面 40分鐘
1. 介紹tcp協議和udp協議
2. stl traits是怎樣實現的
3. stl迭代器在哪些情況下會失效
4. ipv4的不足之處(提到了地址數量有限和安全性)
5. DDos攻擊
6. 演算法:一個連結串列,每個結點有next指標和向下指標,按照層的順序打印出來(用佇列即可)
滴滴三面 60分鐘
1. map是怎麼實現的
2. vector是怎麼實現的
3. epoll和select的區別。。。
4. 虛擬函式是怎樣實現的。。。
5. 建構函式可以是虛擬函式嗎?解構函式呢
6. 手寫位元組序轉換函式(從小端到大端)
7. 手寫memmove函式
8. 專案相關,問的很刁鑽,應該是所有面試官中問的最深的,問到最後自己會感到有點慌了,最後他表示把我當成研究生了
滴滴HR面 30分鐘
1. 你的個人情況
2. 你父母的一些情況
3.你的未來規劃
你的優點和缺點
你的期望薪資
等等。。。
關於專案:
在專案方面,面試官對其中的3個點比較感興趣
1. 陳碩的muduo網路庫,這是我在專案中用到的,已經閱讀過了它的原始碼,所以面試時的相關問題都可以講的很細很透徹
2. 簡單的UDP協議,常見的問題有:專案的實現過程,ARP協議的實現原理,IP的分片和重組
3. CMM直譯器(實現了char、指標、函式、除錯等功能),常見的問題有:指標、除錯是怎麼實現的,語法樹、中間程式碼、記憶體、臨時變數的實現問題
總結:
1. 大部分面試官都會問虛擬函式是怎麼實現的、select和epoll的區別
2. 個人感覺校招前的準備和平時的積累是相輔相成的,面試官看到你簡歷上寫的專案和技能後已經初步對你有了一個評估,之後的問題只是為了證明他對你的判斷,根據你的表現進行加分減分。對於這些問題有些確實需要去刻意地準備。
3. 對於一些簡單的問題儘量去回答得深入,比如說”虛擬函式是怎樣實現的“,我一般是從單繼承、多繼承、虛繼續三種情況去說明記憶體的佈局。又比如”epoll和select的區別“,除了基本的區別外,還可以說下epoll的LT和ET模式。我遇到的面試官對這些回答都很滿意。因此,去準備面經的時候不能只背,一定要去理解。
4. 個人對於學習C++方向的一些想法。除了基本的專業必修課,強烈建議看的書有:C++ Primer(Plus),Effective C++,深度探索C++物件模型,stl原始碼剖析,如果涉及到linux和網路方面(最好去掌握),需要看的書:APUE,UNP,Tcp/Ip詳解(卷1)。這些書不一定所有的章節都要看,但是重點不能看一遍就不管了,一定要熟練掌握。以外,一定要刷劍指offer,刷到你一看題目就能想到思路能寫程式碼為止,如果有時間還可以去刷leetcode。