騰訊暑期(遊戲客戶端)前後七面 + hr(已拿offer面經)

shadow_lr發表於2021-05-14

介紹下自己,雙非二本,大二暑期有過一個月實習經歷,做過聯網專案,做過劇情類專案
去騰訊面試最初就是看看自己夠不夠格去實習

  • 5.07 雲證
  • 5.11 oc

以下是時間線

魔方

魔術師工作室

3.19 一面(120mins)

c++

  • struct和union區別?
  • 指標和引用的區別?
  • 左值和右值?
  • 位元組對齊的作用?
  • 什麼情況下需要自定義new?
  • malloc和new的區別?
  • 解構函式宣告為虛擬函式有什麼好處?虛擬函式放在記憶體中的哪個地方?(後面哪次面試也問到這個問題)
  • 抽象類和介面類的區別?
  • 多型的實現?
  • 行內函數?
  • 動態連結和靜態連結區別?
  • 野指標?懸空指標?

Unity

  • 知道AssetBuddle嗎?AB是如何工作的?
  • 知道Lua嗎?Lua的基本型別?(問的時候沒詳細用過Lua,於是答知道一點Lua熱更的基本原理,然後簡單說了一下,面試官點了點頭)
  • 有美術資源優化的經驗嗎?
  • 圖集使用過嗎?Unity是怎麼打包圖集的?打包的格式瞭解嗎?(Master圖集沒實際用過,處於口嗨階段)
  • 動態合批的規則?Unity怎麼動態合批?(答得不是很好,後來瞭解到是Texture ID和Material ID以及渲染順序那一塊影響渲染佇列,然後影響合批順序)
  • UI合批的最小單元和理解?
  • 怎麼理解Editor編輯器?
  • 序列化和反序列化?
  • .Net和Unity的區別?(硬扯皮Unity的編譯過程C#和MonoBehviour編譯成IL那一部分,感覺面試官對我的回答還行?)
  • Resources資料夾的作用?
  • meta檔案?meta丟失怎麼做?

作業系統

  • 程式和執行緒?區別?
  • 實體記憶體和虛擬記憶體?虛擬記憶體如何實現的?分頁?

計算機網路

  • TCP和UDP區別?
  • TCP擁塞控制?

計算機圖形學

  • 光柵化?
  • 說下可程式設計渲染管線?
  • 說下固定渲染管線?之間的區別?

專案

  • 遇到了什麼問題?如何解決的?
  • 專案中聯網部分邏輯互動是怎麼做的?
  • 用過哪些設計模式?如何用的?

程式碼部分

  • 說下快排原理並且手撕(15mins)

其他

  • 什麼時候能實習?喜歡玩遊戲嗎?

  • 考研嗎?為什麼不考研?
    反問

  • 工作室的氛圍?

  • 我喜歡什麼型別的遊戲?比如?這裡聊到了面試官也喜歡黑魂遊戲?問我鬼泣5和黑魂的區別在什麼地方?

  • 工作室是喜歡做賺錢的遊戲還是喜歡做喜歡的遊戲?(面試官說你這個問題有點刁鑽(心中:怎麼提個憨批問題,我一定不能講實話))
    面試體驗最好的一場,雖然有時我說話有點不利索,但基本都是面試官仔細聽我的回答並且給予我肯定

3.24 二面(110mins)

C++

  • 左值和右值?左值引用和右值引用?
  • 虛擬函式是怎麼實現多型的?虛擬函式表存放的形式和位置?

Unity

  • 如何在UI上顯示3D模型?
  • 如何在UI上顯示粒子效果?(答了用新Camera單獨照3D模型然後攝像機畫面混在一起)假如UI會同時顯示10個,並且彼此獨立怎麼做?Unity的層序順序講一下?
  • PBR瞭解嗎,說一下?(硬扯高光和Blinn Phong一些概念)用過URP嗎?

線性代數

  • 點乘和叉乘?
  • 矩陣如何求逆?被面試官懟這是數學的做法

計算機圖形學

  • 怎麼判斷空間內三角形和射線是否有交點?(後續才知道Möller-Trumbore演算法
  • 說下渲染管線?介紹下每個步驟?

程式碼部分(60mins)

  • 個人覺得是七面中考的最多的演算法面試題了,直接三道動態規劃演算法題
  • 如何選取4個砝碼的重量能夠在天平上稱起1~40克的物體?(口述)一開始不理解題目,面試官講了幾分鐘,後面才提醒要用動態規劃的思想...
  • 手撕無序n個元素取k個最大值(n很大,k很小),不改變順序刪這些元素(建堆)
  • 手撕Leetcode最大連續子元素和(力扣難度簡單)
  • 手撕Leetcode.332 零錢兌換變種題(力扣難度中等,剛好之前做過說了下簡單思路然後上手)

反問

  • 工作室是做什麼的?怎麼學好圖形學?
3.26 三面(60mins)

C++

  • 位元組對齊的作用?(一面也問到了)
  • dynamic_cast作用和使用場景?

C#和Unity

  • 說下GC?垃圾回收原理是什麼?怎麼減少記憶體洩漏?怎麼優化gc?如果第一次gc後記憶體還是不夠呢,會怎麼做?以為不是問分代回收策略,直接亂說了,面試官直接說我不理解gc(腦闊疼)
  • UI適配?適配不同的手機?劉海屏和曲面屏?因為沒做過手遊,所以面試官說我方法不行,我懷疑你在為難我胖虎
  • 知道哪些Unity的優化方式?
  • NGUI和UGUI區別和使用?

計算機圖形學

  • 空間中已知入射光線和法線求反射光線?
  • 做過哪些圖形學專案?被質疑:你這是課程作業麼?

程式碼部分

  • 手撕字元計數壓縮和合並有序連結串列(對應Leetcode簡單難度,六七分鐘兩道題就做出來了)
  • 手撕rand(1,7)實現rand(10),要求等概率均勻分佈。只知道rand(a,b)怎麼用rand(0,1)實現,所以直接說不會

反問

  • 我這是三面麼,這是最後一面麼?面試官突然詫異,原來我在面三面,對的是最後一面,當晚直接流程灰了
    體驗最差的一場,面試官那邊網路不好並且有同事說髒話的聲音傳過來,而且我寫的是熟悉C++結果一直問C#(那時還沒補起來)

魔鏡工作室(前臺開發)

沒錯,又是魔方 換個工作室撈起來再面

3.31 一面(40mins)
  • 自我介紹

  • 問了學校問題

  • 專案介紹和在專案中擔任的角色工作是什麼?遇到哪些問題,如何解決的?

  • 聽我吹水建模比賽

  • 說一下A*演算法的原理?啟發函式怎麼算?

反問

  • 為什麼不問我C++?(因為問題實在是太水了,我怕面試要求低,把我拉過去幹苦力)面試官說前面的面試官問過我C++了,說我C++和數學還可以,才知道有面試評價這個東西...
  • 專案用什麼引擎?在UE4做大世界專案
4.02 二面(30mins)

實習經歷

  • 之前實習做了啥?專案用的UDP還是TCP?理由?

期間二面結果等了四到五天灰了...

接著就是正式批階段了

光子

4.21 一面(40mins)

C++

  • 如何學習c++?是系統學過嗎?
  • c++11之後有了解麼?
  • 左值和右值?左值引用和右值引用?
  • 移動拷貝作用和使用場景?Vector3類需不需要有移動拷貝函式?什麼情況下需要
  • 棧和堆的區別?為什麼棧比堆高效?
  • 虛擬函式原理和機制?虛擬函式表存放位置?

專案

  • 專案中遇到的問題和做法?

程式碼部分

  • 給了個帶虛擬函式的類進行程式碼分析
  • 手撕洗牌演算法,並且驗證等概率隨機

反問

  • 如何學好圖形學?面試官說,英文好的話 直接看Real Time Render,不夠好的話,就看LearnOpengl或games101(順嘴提了一句,這些廣度夠了,但深度不夠,alright面試官是個大佬無疑了)
4.30 二面(40mins)

資料結構

  • 判斷連結串列有環?你講到雜湊表,說說原理和使用場景?雜湊衝突的兩種解決方法和優缺?

線性代數

  • 點乘和叉乘的數學意義和區別?

Unity

  • FixedUpdate?Unity生命週期?
  • material和sharedmaterial的區別?

計算機圖形學

  • 法線貼圖原理?在哪個著色器做?
  • shadowmapping原理?

專案

  • 專案中為什麼用UDP?亂序問題怎麼解決?(突然想起用的是TCP...)

其他

  • 你覺得你是什麼性格的人?為什麼大二選擇實習?

  • 喜歡玩遊戲嗎?玩什麼遊戲?

5.06 hr面(30mins)
  • 你最喜歡的3A遊戲是什麼?(因為自我介紹說我想做3A遊戲所以被反問)

實習

  • 實習做了哪些事?有什麼收穫?

專案

  • 遇到什麼技術的問題?如何發現問題並解決的?
  • 專案之間你感受的差異是什麼?

意願

  • 為什麼想來騰訊?來騰訊能學到什麼?(想實現夢想,做3A遊戲!)

其他

  • 說說你對筆試的感受?(很慚愧說,筆試發揮的不是很好,有些題目意思理解不清楚)
  • 現階段是想考研還是找工作?

題外話

網易雷火(引擎開發)

5.09 一面(60mins)

不得不說網易效率不如騰訊高,4.22號的筆試處理完後,過了快兩週多才約面

  • 上來第一個問題,有沒有做過渲染方面的東西(本來想走的就是客戶端,可能手誤投了引擎,直接說沒做過)

C++

  • move函式和用處?移動拷貝?拷貝構造的小例子判斷是拷貝構造還是賦值運算?
  • 給個例子判斷佔用位元組?
  • 一個C++的程式碼例子說說結果是什麼?
  • const的定值和定向問題?
  • static的作用?
  • 行內函數的作用?

作業系統

  • 說下大小端模式?(直接把如何判定和用處說了下)
  • 位元組對齊作用?
  • 陣列for a for b data[a][b]和for a for b data[b][a]哪個高效?(說了一維陣列元素地址連續訪問快取命中問題)

數學

  • 點乘與叉乘的數學意義和區別?
  • 在xy座標系上的點座標如何轉成uv座標系?
  • 4乘4矩陣變換的作用?如果不讓平移矩陣方便表示怎麼做,怎麼轉換?
  • exp ln 實現 power(x, y) (不會,甚至看不懂符號,後面才發現是一些shader方面的符號)

計算機圖形學

  • 頂點著色器和片元著色器是否一一對應?
  • 裁剪空間的作用?怎麼變換的?

渲染

  • alpha test和alpha blend說一下(all right 不會...)
  • mipmap瞭解嗎?(說了減少CPU渲染壓力,增大記憶體佔用,被面試官問 除了這個還知道什麼嗎(可能是想問具體演算法怎麼實現的?))

反問

  • 主要用什麼語言(C++、C#)
  • 面試過程因為裝置不好,並且騰訊那邊已經雲證,所以沒有什麼太大的興趣繼續提問了

總結

  • 自從去年9月後,發誓要進遊戲行業,不停的看C++、計網、Unity、shader、閆老的games101,雖然累,但是有時也會覺得自己學到了東西
  • 給自己總結一下好了,騰訊面試會很深挖基礎知識,圖形學的面試題有些都是偏實際的(之前沒有了解過,所以吃了個大虧- -),邊面邊看面經邊做Unity手遊專案,一遍感嘆自己如此之菜,幸得一些面試官對我的肯定,也算給自己一個比較好的慰藉

相關文章