騰訊暑期 前後七面 + hr(已拿offer面經)
以下是時間線
魔方
魔術師工作室
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類需不需要有移動拷貝函數?什麼情況下需要
- 棧和堆的區別?為什麼棧比堆高效?
- 虛函數原理和機制?虛函數表存放位置?
項目
- 項目中遇到的問題和做法?
程式碼部分
- 給了個帶虛函數的類進行程式碼分析
- 手撕洗牌演算法,並且驗證等概率隨機
4.30 二面(40mins)
數據結構
- 判斷鏈表有環?你講到哈希表,說說原理和使用場景?哈希衝突的兩種解決方法和優缺?
線性代數
- 點乘和叉乘的數學意義和區別?
Unity
- FixedUpdate?Unity生命周期?
- material和sharedmaterial的區別?
電腦圖形學
- 法線貼圖原理?在哪個著色器做?
- shadowmapping原理?
項目
- 項目中為什麼用UDP?亂序問題怎麼解決?(突然想起用的是TCP…)
其他
-
你覺得你是什麼性格的人?為什麼大二選擇實習?
-
喜歡玩遊戲嗎,?玩什麼遊戲?
5.06 hr面(30mins)
-
你最喜歡的3A遊戲是什麼?(因為自我介紹說我想做3A遊戲所以被反問)
實習 -
實習做了哪些事?有什麼收穫?
項目 -
遇到什麼技術的問題?如何發現問題並解決的?
-
項目之間你感受的差異是什麼?
意願 -
為什麼想來騰訊?來騰訊能學到什麼?
其他
- 說說你對筆試的感受?(很慚愧說,筆試發揮的不是很好,有些題目意思理解不清楚)
- 現階段是想考研還是找工作?
5.07 雲證
5.11 oc
題外話
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#)
- 面試過程因為設備不好,並且騰訊那邊已經雲證,所以沒有什麼太大的興趣繼續提問了