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

秋招總結(C++方向,騰訊、百度、華為、滴滴、搜狐)


寫在前面的話:         今天收到了騰訊的簽約邀請,這意味著我的秋招之旅基本上可以結束了。平時經常在牛客上刷題以及看大家分享的面經,受益匪淺,因此趁著還有點小激動,跟大家分享下我的經歷。首先來總結一下這次秋招,我投了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。