1. 程式人生 > >騰訊IEG-計算機視覺(3D渲染引擎方向)提前批筆試面試總結

騰訊IEG-計算機視覺(3D渲染引擎方向)提前批筆試面試總結

前面一直在準備出國留學申請,中間投遞了華為、騰訊、阿里三家公司。幸運的是拿到了華為多媒體演算法崗SP騰訊3D視覺演算法崗SP(真愛)阿里巴巴菜鳥物流演算法崗A級。接下來將投入到論文發表、計算機名校申請中。

Attention1:本文是騰訊秋招筆記內容。

Attention2:本文為了記錄面試經歷,不適用其他人。

1. 申請職位描述

騰訊遊戲:計算機視覺(3D渲染引擎)

其實,筆者大部分時間都在陶瓷、準備留學文書。此前並未準備找工作的相關事宜,僅利用暑假十天時間複習了一遍《機器學習與模式識別》、《劍指offer》、《計算機視覺演算法與應用》。

2. 申請流程


2.1. HR資料調查:~20min, 8.12

內推選擇筆試。因為報的是計算機視覺方向,所以筆試的題目中主要就是機器學習和計算機視覺的核心演算法以及描述子。

  • 對於機器學習方面,線性分類器、決策樹、LDA、PCA、貝葉斯後驗、最大似然、核函式都是很常見的,建議採用李航編的《統計機器學習》鞏固。
  • 對於計算機視覺方面,基於能量的分割方法、手工創造的SIFT/SURF/BRISK等描述子、基於三角測量的立體視覺(包括匹配)也很常見,建議採用艾海舟的《計算機視覺演算法與應用》複習
  • 對於深度學習方向,主要還是靠網路基礎。例如梯度消失、梯度爆炸、BatchNorm的作用、variance-bias模型選擇等。深度學習考題還是很規矩的,建議使用Bingo的《深度學習》(花書)
  • 資料結構,當然不可避免的就是會出現資料結構的題目,一般就是連結串列、雜湊表、最小路徑這一些,只要大家還記得本科學過的資料結構基本沒問題。

2.2. 組員輕鬆面:45min~50min, 8.16

  • 懟研究生專案。有“主流的跟蹤框架”、“你們要解決的跟蹤難點”、“有沒有嘗試使用其他方法做跟蹤”、“如何解決小目標/非剛體目標的跟蹤”
  • 懟研究生論文。CVPR論文主要問了Ablation Study 怎麼設計的? 和之前提出的演算法相比,我們提出的演算法最大優勢是什麼? 後期想怎麼發展?
  • 懟本科生畢業論文。介紹基於全域性-區域性配準的流程? 3D-2D配準的意義?3D資料格式,點雲or體素? 採用什麼語言實現的? 在進行粗配準階段,為什麼採用Harris演算法提取角點進行稀疏處理,魯棒性如何? 精配準階段,為什麼採用遺傳演算法進行優化,實時性如何? 除了遺傳演算法有沒有想過其他的優化演算法? 比較一下遺傳演算法與單純性演算法的優缺點?
  • 懟程式碼功底C++。vector如何實現動態增長?如何實現申請一大片連續空間?Python為什麼不需要像C++一樣指定資料型別?
  • 懟資料結構。雙向連結串列與頭尾指標設計;堆疊分段儲存,對臨界資源、互斥鎖與自旋鎖的理解。
  • 懟深度學習。CNN-loss中損失函式的設計? 什麼情況會出項梯度消失,如何避免出現梯度消失?GAN本身是想學習資料的分佈模式,但是我們的訓練資料僅僅是樣本的一個子集,如何能解釋GAN的優異效能? (我是從隨機抽樣和無偏估計角度解釋的) 為什麼用孿生網路處理跟蹤問題,效果很好? 如何理解淺層卷積特徵與深層卷積特徵? (淺層卷積特徵定位效果好,深層卷積特徵語義表達能力強)

2.3. 組長輕鬆面:45min~50min, 8.18

  • 懟專案。二面應該有了一面的面試記錄。所以專案問了另外兩個。碩士專案問了我做的3D重建的工作,我主要講了MarchingCube面繪製演算法,VolumeRendering體繪製演算法。 面試官非常和藹,中間糾正了我的一個錯誤,其實體繪製演算法還有很多種,比如基於蒙特卡洛的、基於光線投影演算法,拋雪球演算法等,我研一的工作更偏向於拋雪球演算法。本科專案問了我特徵提取+分類的問題解決方案,我主要講了基於形狀的特徵提取,基於矩陣的文理提取,基於傅立葉功率譜的特徵提取,分類器主要用了SVM和最大間隔分類。面試官問我有沒有采用其他分類器?
  • 懟資料結構:B+樹,紅黑樹;雜湊表;Freeman編碼;
  • 懟基本演算法:SIFT英文全稱以及實現原理(非常重要);DCF原理(迴圈取樣+傅立葉高速實現,是否考慮核方法?);稀疏表達(L1正則化畢竟L0正則化的合理性? 有沒有對比稠密表達和稀疏表達結果之間的差異,並進行量化評估);水平集分割;(因為數模比賽中提了ICA這個詞)所以面試官問了我一個ICA我記得這個演算法應該是做獨立成分劃分(雞尾酒效應)的,但是很可惜沒有說好,關於ICA的優化原理,核心是朗格朗日乘子法。
  • 懟程式設計功底:C++的標準庫,面試官問到了我STL中的vector和map,此外還有迭代器。平時用C++多一點還是Python多一點? C++的深拷貝、淺拷貝? 動態物件繫結? 虛擬函式?
  • 懟深度學習。面試官問了我一些CNN做目標檢測的工作(引用了何凱明的系列工作)和CNN做目標跟蹤的工作(引用了牛津視覺團隊和中科院自動化所模式識別實驗室的最新工作)。原始碼主要是讀懂和重讀,創新還在思考。

2.4. GM/EVP/面委會 壓力面:60min~70min, 8.26

  • 懟深度學習相關專案。
  • 懟機器學習。解釋一下線性分類和非線性分類的區別;解釋“自主取樣法”原理以及整合分類器Adaboost? (個人簡介通過概率論解釋機器學習是最好了的)。分析馬爾科夫鏈狀態狀態轉移過程。
  • 懟Python,為什麼Python可以實現跨平臺,Python的時間消耗最多的環節在哪裡,談談你知道的依賴Python的機器學習庫和計算機視覺庫;
  • 手撕程式碼。題目:有 n 個學生站成一排,每個學生有一個能力值,牛牛想從這 n個學生中按照順序選取 k名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎? //// 面試官很友好,不需要“完全手撕”,面試官會一點一點和你分析演算法。如何做?可以參考這個 https://www.jianshu.com/p/9847cc371858
  • 開放性專案解決方案。在MOBA遊戲如英雄聯盟、王者榮耀中,一般有多個玩家同時遊戲,要如何實現遊戲的實時性,如何處理玩家角色之間的同步?
  • 懟生活。部落格維護多久了?意義在哪裡?以後想往那方面進行拓展?你聽過賈佳亞嘛(優圖主任)?計算機視覺領域傑出的華人科學家能不能列舉3-5個簡單評價一下他們的工作(李飛飛的IMAGENET,何凱明的RCNN/ SPP / MaskRCNN,賈揚清Caffe / Fair,任曉楓KITTI / Graphics,湯曉鷗Facial Descriptors),

2.5. GM/EVP/面委會 壓力面: 60min~70min, 8.28

社團活動這麼豐富為什麼想做技術?

  • 懟深度學習專案;面試官超級好,其中聊到了推薦演算法,個性化影象以及精準使用者建模等. 也聊到唐傑老師(我最佩服的老師之一,真的很厲害)
  • 懟專案。跟蹤領域做了幾年了?說一下你對跟蹤的理解並談談主流的跟蹤方法?
  • 懟演算法。快速排序演算法(堆排序);L1正則化L2正則化的優缺點,為什麼需要L1.5正則化;
  • 懟程式設計能力。全域性與區域性靜態變數區別;explicit關鍵字的作用;如何實現多型,解釋一下動態物件捆綁技術,解釋一下運算子過載;談談你對指標函式與函式指標的理解;
  • 開放性專案解決方案。遊戲中需要對毛髮進行深度刻畫,從渲染引擎角度設計一個基本的演算法。這裡需要詳細的說明一下,希望一起和同行探討。關於渲染,現在主流還是採用三角面片稀疏分解體素進行進行光照處理(當然如果你說你想用SLAM思考,我認為也是可以的)。如果直觀從三角面片談,我們就很get到面試官的出題點。遊戲流暢度和人物的逼真程度都很重要,但是呢? 很難兩全。如果是平整的物件,那麼我們只需要幾個三角面片就可以處理了(這也是早年很多遊戲為什麼都是光頭或者固定髮型的原因)。但是頭髮會消耗大量的三角面片。由於計算機儲存人物形象就是依靠三角面片的頂點和灰度值,因此精細化頭髮渲染所消耗的記憶體將遠遠大於其他部位。 ///// PS:如果單純回答利用三角面片渲染,肯定會被淘汰,沒有get到問題的核心 /// 這裡我提供一種思路,三角面片+直線曲率估計+B樣條。 具體做法可以參考基於B樣條的影象配準技術。 核心就是利用控制點+數學模型進行了稀疏化。

2.6. HR1背景調查:~20min, 9.1

  • 家庭,期望的工作地,騰訊中是否有實驗室畢業的師兄師姐。
  • 為什麼不去讀博士?為什麼要考GRE/TOFEL?
  • 目前收到了offer嗎?如果有多個offer根據什麼進行選擇?
  • 你對騰訊的印象是什麼,說一下你的優缺點?
  • 提供一位瞭解你的老師或者博士生的電話。

3. 跟蹤申請進展


////////您已完成所有面試環節(微信招聘-個人中心,QQ招聘中心) 9.3
////////內推網:offer 待報批......     9.4
////////內推網:offer 報批中......     9.10
////////內推網:畢業生已錄用 ....    9.11

4. 總結 

4.1 實習 or 科研

最好還是參加實習生培訓,優勢就是快準狠,劣勢是沒時間發論文刷簡歷;

對於筆者而言,找工作和留學一樣,都是一種生活的探索。騰訊剛開始也沒有投遞,心虛。7月份好基友開始忽悠我一起去參加騰訊提前批面試,那時候我還在準備出國文書...  

但是最後我們的申請結果都不錯,基友中了TIMI Studio,對...就是設計了王者榮耀、天天酷跑的天美工作室,一年變土豪啊 !!!

4.2 筆經 and 面經

劍指offer能重複就重複,最好背下來,基本就能解決C++/資料結構; Python由淺入深過一下;模式識別與機器學習計算機視覺演算法(艾海舟)當做科普有時間讀一下;

維護一個大型的開源社群或者開源專案可以讓自己“更真實地”融入所謂的計算機視覺、人工智慧這個圈子。

多看論文,多背論文,多重複論文,多發論文。

多看原始碼,多寫演算法,精益求精,長期積累。

最後,無論是求學還是深造,都希望大家實現自己的夢想。