1. 程式人生 > >騰訊、百度、網易遊戲、華為Offer及筆經面經

騰訊、百度、網易遊戲、華為Offer及筆經面經

面試完畢,已跟網易遊戲簽約。遂敲一份筆經面經,記錄下面試經過。類似於用日記記錄自己,同時希望對師弟師妹有一定幫助。不是炫耀,只是希望攢RP,希望各位不要鄙視我。正所謂飲水思源小弟來自廣州華南理工大學,電腦科學與工程學院。給華工計算機打一個廣告吧,呵呵。。。騰訊(20114)(所報職位:後臺開發工程師 – 深圳)騰訊是我一直準備的公司,所以對筆試的知識點及面試側重點有一定的瞭解。
@
筆試一份2個小時卷子,挺基礎的,具體什麼題記不清楚了。涉及網路原理,c/c++語言基礎及高階機制,基礎資料結構及演算法,資料庫,linux基礎,linux下可執行檔案組織機制(記憶體佈局,.text,.bss,.data

組織方式等)。因為一直在準備,所以這份卷子答起來,相對比較順利。成績有80+,這個為通過實習面試起決定性作用。今天筆試卷子可以勾選bussinessunit(BU),果斷勾選B3(互動娛樂)
@
一面我習慣面試帶簡歷(因為希望面試官多注重自己的專案經驗,少問些演算法,體現下自己優勢吧),見到一面面試官,直接雙手遞上一份簡歷。果然面試官對著簡歷開始問,看著簡歷中寫到的技能一項項問。
  c++ 
問了多型實現機制(這個問題屢次被面試官問),直接把insightc++ object models書裡面的記憶體佈局圖搬上去,面試官非常滿意。
  tcp/ip
原理,問了TCP狀態變遷圖,TCP/IP
接受傳送緩衝區相關概念。Unix環境程式設計、網路程式設計問的較多,不過都是Apue,Unp上面的,從容應答。
  linux kernel,
問了一些核心原始碼相關的概念,問得廣而淺,不難回答。幾個綜合問題,1QQ飛車新使用者註冊時,如何判斷新註冊名字是否已存在?(數量級:幾億)
編寫高效伺服器程式,需考慮的因素?
3 Epoll
機制相關概念(EpollSelect機制區別),這個概念許多面試官都會問起一面答得不錯,加上筆試成績不錯。面試官當場說了一些表揚的話,並把他QQ留給我,說以後什麼事直接諮詢他。我知道自己肯定過了,後面面試走流程吧。^_^
@
二面一個和藹的大叔,35-45
歲,一直在笑。從簡歷開始,介紹技能,介紹專案經驗,對筆試時的系統設計題做改進優化,隨便說了下自己想法。
@HR
隨便聊天。拿到騰訊實習Offer,並在騰訊暑期實習兩個月。二、百度(2011/10) (所報職位:軟體研發工程師 –深圳)對百度的面試一直很猶豫,不知是否應該參加。主要兩個原因,一是騰訊已通過實習拿到Offer,二是覺得自己演算法很差,怕被鄙視。直至考試前一天,都沒有確定是否應該參加。幸運地是,最終克服自己的害怕,走上了百度的筆試考場,有機會體會百度的面試。面度的筆試卷子,因部門而異。我報的軟體研發,RD-3的卷子。
@
筆試筆試題回憶版一簡答題(30)1 對遠端linux/unix系統進行遠端操作,通常的途徑是採用終端軟體通過ssh登陸遠端系統進行操作,但是在網路發生中斷時,Linux/unix端執行的程式將會中斷。請闡述這種問題發生的原理、通過何種路徑可以避免這種問題、以及闡述可避免這種問題發生途徑的原理
最小堆插入,刪除程式設計實現。
不知所云。二演算法與程式設計(40)(演算法可以使用虛擬碼描述)
給定一個數字編碼N,大多數情況下可以找到一個數字編碼M,其位數與N相同,各位數字之和與N的各位數字之和相同。並且M是大於N的數值中最小的一個,也可能M不存在。如:N=134,M=143.N=020,M=101。形式化表述為F(N)=M。如果M不存在,則F(N)=-1要求給定演算法計算F(N)序列。
給定序列s={a1,a2,…,an};1)構造演算法求全排列。2)構造演算法求所有組合。系統設計題(40)這個有時間再慢慢回憶吧。這個筆試可以用超爛來形容,勉強40分(後面面試時,卷子上見到)。筆試當天是星期日,當晚手機沒電,充電開機後有兩個未接020-*。因為其他童鞋都是簡訊通知,所以沒太在意,自己沒收到簡訊通知,很清楚筆試沒過,遂決定霸面。星期一:霸面,霸終端研發深圳,見到面試官,但面試官一直忙於找我筆試成績,我就一直推銷自己,專案經驗如何,linux如何,核心如何,TCP/IP網路如何,嵌入式開發如何。終於面試官問了幾個小題,寫了幾個程式設計之美上面的小題。答的還可以,但因為霸面,他一直不爽我。這次霸面非常失敗,自己也備受打擊。失落的星期一夜晚,無意中又收到020-*的電話,接起來,對方告知是百度公司,通知星期二去一面。星期二:哥今天是有通知來一面,不是霸面了。NND一面:設計資料結構及改進。我做的不好,我坦言資料結構及演算法一般,因為自己忙專案,但專案經驗及linux,網路知識較豐富。遂轉問linux及核心原始碼,tcp/ip原理及實現細節。他拿著筆記本上網查問題,我壓力大啊。問題廣而深,幸好linux掌握的還可以。記起來的問題有,linux作業系統作用,記憶體管理在原始碼哪個目錄(mm),說些程序排程核心實現大致機制,TCP/IP接收發送緩衝區,記憶體管理實現機制。又對專案提問題,要求優化。面試快結束時,面試官直言我資料結構及演算法掌握的不熟練,以後希望強化。雖然知道這可能意味被淘汰,但還是特別感謝他,遂說了N多謝謝,但都是真心的。因為對比他和霸面的面試官。星期二晚上一直沒通知,我等到12點就睡了。失望,絕望。雖面試時知道自己可能被淘汰,但仍不願接受這個事實,但現在不得不接受,帶著遺憾入夢。星期三晚上,沒有期待的時候,不經意又是百度的通知。那一刻,死裡逃生,我想尖叫。星期四:二面:兩個演算法都是程式設計之美的。其他就是linux、核心,網路、專案,高效伺服器,如何預防攻擊等題目,發揮的不錯。面試官一直微笑。我知道三面有了。星期五:三面:萬幸不問演算法,問意向,專案經驗,專案細節及能否優化,linux核心等。因為專案確實是自己完成的,所以答的還不錯。星期日:收到Offer通知。但職位是北京的研發。三、華為:(所報職位:作業系統工程師 –深圳)
@
機試給一個數組,求陣列中比平均數大的數字個數。這題是在考我們的程式設計能力嗎?b汗。
@
一面主要就專案問。
@
二面群面。技術,非技術總16人,分兩組,討論曹操,劉備,孫權,諸葛亮,誰適合當總經理。這個環節,技術的一直被動。Finally,我們組淘汰了兩個(都是技術)
@
三面上機性格測試,104題。這個沒聽說刷人的。
@
四面跟兩個老男人隨便聊,聊專案,聊未來方向,聊華為作業系統發展,聊linux作業系統及實現,很廣但很淺。四、網易遊戲面試遊戲系統架構師
@
筆試10.22網易遊戲筆試,三個小時的題,題量還是非常大的,設計計算機各們核心課程,作業系統原理,c/c++,基礎資料結構與演算法,數學推理題,網路等。題特別多,題特別雜,幾乎沒有童鞋做完吧。多多益善吧。經歷過考研,一些基礎課程還是蠻紮實,前40分的題答的不錯,後面的演算法題做的一般,我只會最笨重的方法。
@
一面10.24晚上通知11.1下午2點面試最次給各位同學提個醒,簡歷一定要多帶幾份,以備不時之需。他要求2份,我帶了5份,份份都起作用了。通知2點面試,1:50簽到,開始做題,矩陣相乘,差不多10分鐘做完。開始等一面。大概240通知一面,2個面試官。要求先自我介紹,其次問了一個專案,之後問了一句你是哪裡人?你目前拿到哪些公司offer?之後一面結束,不足10分鐘。沒問任何技術,偶是相當不淡定。
@
二面11.1晚上通知11.2下午3點面試
2
點半左右到網易準備。大概310分,一個女人帶我進面試房間。當時緊張了,這是我的第一個女技術面試官?進去後,21女。面試官先自我介紹,1個大話西遊II主程式,1個天下II主程式,靚女姐姐是HR。二面+HR面一起面的。問了很多c++高階機制,問了2道基礎演算法吧。題目回憶如下:
1
建構函式可以呼叫虛擬函式嗎?語法上通過嗎?語義上可以通過嗎?
解構函式可以丟擲異常嗎?為什麼不能丟擲異常?除了資源洩露,還有其他需考慮的因素嗎?
3 c++
中型別轉換機制?各適用什麼環境?dynamic_cast轉換失敗時,會出現什麼情況?(對指標,返回NULL.對引用,丟擲bad_cast異常)
洗牌演算法,如何證明演算法是隨機的
100萬個32位整數,如何最快找到中位數。能保證每個數是唯一的,如何實現O(N)演算法?這道題是程式設計之美或程式設計珠璣上的。這道題使用點陣圖,需要空間複雜度是512M。6問了一個他們感興趣的專案,關於gcc外掛的,聊了比較久。
拷貝建構函式作用及用途?什麼時候需要自定義拷貝建構函式?

說明:

當一個類含有一些資料成員,你需要在例項化類的時候就初始化這些成員,你就需要自己定義建構函式。例如Person類含有m_strName成員,你在宣告該類是就將其賦值 Person myPerson("張三")對於拷貝建構函式,為了防止淺拷貝造成的兩個物件指向同一記憶體,當刪除其中一個物件後導致另一物件指向內容為空的時候,我們就需要定義自己的拷貝建構函式來進行深拷貝。當你的類資料成員中使用了動態分配的記憶體,你就需要定義自己的解構函式來釋放這部分記憶體,防止記憶體洩露。
系統定義的預設建構函式和解構函式函式名和類名相同,如Person類:
Person()建構函式
~Person()解構函式

8一些題目記不清楚了。
9
聊待遇。@簽約 11.2晚上收到通過面試通知,通知11.3下午4點簽約。網易遊戲不同部門不同職位不同面試面試內容不同,但都注重基礎知識。還有的一面題目是BFS,這個應該特別容易了,但還有一些童鞋完成的不好。如果各位師弟師妹,如果覺得此貼對你們有點點幫助,就祝福下我吧,幫我攢點RP吧,多謝。關於書單,列表如下:一直準備的是騰訊後臺開發,所以針對性很強,難免有偏見,望見諒。先貼下騰訊後臺開發要求的技能,這些技能要求是我讀書的指南針。遊戲開發類後臺開發工程師返回>>職位描述:負責遊戲相關後臺系統的開發和設計。
1
職位要求:
1
Unix/Linux作業系統下的C/C++專案的2年以上開發經驗;
2
熟悉網路程式設計;熟悉Linux下的mysql開發;
3
精通TCP/IP協議及程式設計,熟悉網際網路應用協議;
4
、熟悉面向物件的大型分散式系統設計與開發,瞭解中介軟體的技術以及基於中介軟體的開發模式;
5
、全面的軟體知識結構(作業系統、軟體工程、設計模式、資料結構、資料庫系統、網路安全)
6
具備良好的分析解決問題能力,能獨立承擔任務和有系統進度把控能力;
7
責任心強,良好的對外溝通和團隊協作能力,主動,好學。有以下經驗者優先考慮:
1
、大型分散式系統設計開發經驗;
2
、遊戲後臺系統開發經驗。
這其中大部分書都是研1下,研2上購買的。大部分已讀完。一部分書反覆讀3遍以上。比如apue,unp,tcp/ip v1等。重點圈幾本推薦下:(*號書籍強烈推薦)
c/c++:
初級 c語言解惑/C和指標專家:C專家程式設計 *
c++ primer/effictive c++/inside c++ *
tcp/ip
書籍
tcp/ip v1(tcp/ip
詳解I) ***2/3沒必要買,也沒必要看,這本卷1主要將tcp/ip原理
unp *** 
這本主要將linux socket程式設計API,兩本結合看,效果最佳
unp2(unix 
網路程式設計第2)這本主要講IPC,有時間可以看看
linux
書籍:
apue ***
深入理解linux核心 *其他系列linux原始碼書籍,適量看即可。應試演算法及智力題:程式設計之美、程式設計珠璣海量資料處理:這個網上收集資料,或者有時間我傳上來。資料結構:資料結構與演算法分析-C語言描述 Weiss *考研資料結構1800紅色題集(這本書對於向我這種資料結構基礎薄弱的童鞋,幫助很大)差點沒忘了2本至牛的書籍:組合語言程式設計(毫不誇張的說,這本書改變了我)深入理解計算機系統其他的沒什麼了,這些書都掌握了,足夠了,O了。我對嵌入式開發蠻感興趣的,所以上面photo中也包含部分嵌入式書籍,不感興趣的可以忽略。最後,談一談廣研和深圳騰訊的一點面試感受。廣研:筆試:6小題,設計基礎資料結構:連結串列,樹,字串。很基礎,但也很考驗C語言功底。不要說你會,要熟練,要確保你寫的程式碼無誤且程式設計風格優美。這樣才能增加籌碼。保證你後面順利通過。一面:講解筆試卷子解題思想,講解專案。面試過程很隨意,面試官主要側重linux,c++,網路。二面:談一談專案,就專案問一些問題。問一些他們實際中遇到的問題,你會如何解決?也是比較隨意。騰訊深圳:筆試:資料結構、tcp/ip、作業系統、計算機底層機制(包括堆疊如何組織等,apue有講)20個多選,每題3分,多選少選不得分。40分大題。每空4分,10空。大題基本是送分的。這個筆試我得了82分,42+40,  RAID磁碟陣列,b/b+樹,堆,幾個問題沒把握,錯了6個選擇題。
82
分,一面面試官說算不錯的分數了。一面:可能因為筆試成績不錯,所以面試過程比較順利。2頁的簡歷,他只看了第1頁的1/2,其它的都沒看。就我簡歷所列技能問了幾個問題,tcp/ip狀態轉換,socket api,高效能遊戲伺服器需要考慮哪些瓶頸,我主要就tcp/ip回答的,比如三次握手佇列,資料接受/傳送緩衝區等。linux也問了幾個 proc機制及作用,我直接跟他談ls /proc核心如何生成結果,這proc個是件系統原始碼所談,他比較滿意。你使用的IPC及比較?  epoll模型及優缺點?(這個年年必考)主要有3點,對應於select3個缺點:1連線數受限 2 查詢配對速度慢 3資料由核心拷貝到使用者態。C++主要問動態如何實現。直接畫記憶體佈局,既inside c++所講,面試官還是比較滿意。還問了一些大數量的問題。由於之前準備過,所以答的還不錯。

一面過程中,面試管多次提到他對我非常滿意,我也適當的表達了實習後會留職。他把Q號留給我,說以後有什麼事,就在Q上聯絡他。那一刻,我就知,我應該可以去實習了。呵呵二面:比較隨意,自己講專案。講完專案,還有點時間,就著筆試附加題問了些問題。後又結合QQ相簿問了些比較難的問題,勉強答了幾個。
hr
面:是我所有面試中最慘的一次,由於之前浩哥面hr很隨意,所以我就沒準備了,因為有一些其他事要做。中午沒睡好,4點去面,頭暈暈的。被hr問的好慘。主要是談人生。有幾個問題答的不好:你是一個什麼樣的人?你到底是一個什麼樣的人?MD,這讓我想起另一個極品噁心的女人,所以這2個問題沒有發揮好。

百度核心研發面試經驗

第一面

自我介紹,專案介紹。。。畢設做的是多核平行計算,問了很多細節的技術問題,包括硬體模型,記憶體使用,並行演算法,多執行緒排程等等等等,大概20分鐘
技術方面:

  • memcpy程式碼實現,問了各種問題,包括strcpy,區域重疊,void指標的含義,(char *)是怎麼實現的,const修飾符的含義,返回值的問題,最後還問到記憶體的某些東西,反正扯的小問題比較多(最後扯得有點遠,大概20分鐘)
  • 找尋二叉樹中兩個節點的公共父節點中最近的那個節點 
    要求: 
    • 每個節點只有value,p_left和p_right指標 
    • 不能用額外的空間 
    • 不能用每個節點的index來找尋父節點的index
      (當時的原話是這麼說的,這個大概25分鐘,最開始不限制額外空間,說了算法,然後不是面試官想要的,限制了不能用額外空間,然後又想了個說了下,貌似還不是,無奈放棄了,面試官GG不給答案,進行下一個題目)
  • 3 四個開關,對應四盞燈,進屋一次,要求判斷出這四盞燈對應的開關 要求: 額,有條件要求,但是是你來提問,面試官回答這個條件可不可以 (這算智力題麼?還好貌似沒被這個BS,這道題目10分鐘) 向面試官提問:大概3分鐘 (p.s一面面試時間1個小時多點,問的東西還是偏基礎一些)

第二面

自我介紹:對照著簡歷順便問了一下學過的課程和程式設計方面的資訊。專案介紹: 介紹自己做的印象最深的專案,遇到的問題,怎麼解決的,學到了什麼,還能如何進行改善,如果你再做一次的話,會如何去做。。(大概就這麼多,感覺很隨意了,這部分大概20分鐘)

技術方面:

  • 手寫程式,輸入一個N*N的矩陣,對角線輸出每個元素,大概意思如下:  比如輸入4*4的矩陣 
    { 
       0, 1, 2, 3,
       4, 5, 6, 7,
       8, 9,10,11,