1. 程式人生 > >秋招總結 C++方向,騰訊、百度、華為、滴滴、搜狐

秋招總結 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。