網(wǎng)易游戲研發(fā)客戶端一面+二面面經(jīng)

剛剛面完網(wǎng)易的初面,被網(wǎng)易的面試官按在地上摩擦。先說說感受再放面試題把,就我已經(jīng)工作三年了,雖然是最近一年才開始發(fā)糞涂墻。但是本來面試之前是覺得C++八股文應(yīng)該準(zhǔn)備的挺到位的。但是面試官還是會(huì)往下扣,真正一扣還是會(huì)被扣出來,真正理解和背,還是有差別的。
好的,話不多說,下面放面經(jīng):
介紹自己,說說過往的經(jīng)歷,以及你覺得有意思的,有困難的地方。
這部分我還是有點(diǎn)東西說的,之前有一個(gè)比較有成就的地方,就是把一個(gè)特別卡的UI界面,給優(yōu)化到與平常UI一樣。然后面試官圍繞著我是怎么進(jìn)行優(yōu)化的扣了半天。好在這是我真正的經(jīng)歷,我都能掰扯出來。只是面試官對(duì)我提供的數(shù)據(jù)不是很相信,我表示我很委屈。
開發(fā)的時(shí)候遇到過野指針嗎?你是怎么處理的?
這個(gè)問題一看就是讓說智能指針,很慶幸自己準(zhǔn)備過了,說了自己準(zhǔn)備過的shared_ptr,unique_ptr, weak_ptr。但是面試官聽完之后會(huì)接著向下挖掘,在我講完weak_ptr之后,問我只用weak_ptr行不行?其實(shí)面試官想讓我說,weak_ptr可以判斷持有指針是否有效。這個(gè)當(dāng)時(shí)腦子瓦特了沒有答出來。
然后又問了問我的項(xiàng)目,因?yàn)槲抑白鲞^demo,就是我發(fā)視頻的自走棋,還有灰魂。因?yàn)樽宰咂迨锹?lián)機(jī)的,所以想問我虛幻的網(wǎng)絡(luò)框架,以及灰魂里的技能是怎么做的。
這個(gè)捶胸頓足啊,很明顯,前者是想讓我講虛幻的網(wǎng)絡(luò)框架,后者是想讓我講虛幻GAS。目前我的水平只是會(huì)用這兩個(gè)東西而已,真讓我講底層的東西,我真講不出來。我已經(jīng)在學(xué)了,只是沒有成果。這一部分很快略過了。
開始問C++,Vector是如何實(shí)現(xiàn)的。
這個(gè)問題在面試前沒有復(fù)習(xí)過,只能憑老本掰扯,我講了講底層是數(shù)組,以及大概擴(kuò)容的策略,但是顯然很多細(xì)節(jié)我不能咬的很死。面試官也聽得興致闌珊。
vector 的 push_back 和 emplace_back 有什么區(qū)別?
這個(gè)我只答上來,emplace會(huì)直接在插入位置構(gòu)造,減少開銷。面試官直接追問,如果也是傳入一個(gè)對(duì)象呢?直接問住,剛搜了一下,是在傳入對(duì)象實(shí)現(xiàn)了移動(dòng)構(gòu)造函數(shù)的時(shí)候會(huì)有區(qū)別。
講講你對(duì)右值引用的理解吧。
應(yīng)該是和上面的vector一個(gè)系列的,想由emplace引出來移動(dòng)語義,可惜我不太爭(zhēng)氣。不過右值引用還是準(zhǔn)備過的,講了講。
問你一個(gè)比較難的問題吧,說說虛函數(shù)的性能開銷?
直接懵逼,虛函數(shù)的性能開銷……我就胡亂說了說,可能也是驢唇不對(duì)馬嘴吧,面試官?zèng)]有再追問。
C++的部分結(jié)束了,接下來問我圖形學(xué)。上來先問一個(gè)比較常見的問題,動(dòng)態(tài)陰影是怎么渲染的?
面試官覺得常見,然鵝我完全不知道。
接下來問,如果畫一個(gè)三角形?
我恨吶,圖形學(xué)我只學(xué)到畫直線,然后我給面試官講了講,面試官?zèng)]做評(píng)價(jià)。
虛幻的渲染管線有了解嗎?
在虛幻里把一個(gè)立方體放到世界中都做了哪些操作?
虛幻向世界加載藍(lán)圖的時(shí)候,要做什么特殊操作嗎?
要加一個(gè)“_C”
為什么?
反問環(huán)節(jié)
面試至此結(jié)束。有一點(diǎn)小感悟分享一下吧。
八股文環(huán)節(jié)面試官都會(huì)向下挖掘,挖掘了之后覺得我還是用的比較少。確實(shí)如此,這些八股文我都是自己學(xué)的,平時(shí)應(yīng)用的場(chǎng)景少到幾乎沒有,真正用過理解和單純的背書還是有很大的區(qū)別的。這一整個(gè)面試,我唯一底氣十足的階段就是掰扯那段界面優(yōu)化,那是我真正做過的,我從頭到尾全都了解的東西。
我這個(gè)是工作了三年的社招面經(jīng),不知道面試官是不是提高了門檻,給想跳槽的大兄弟們分享一下吧。
最后對(duì)在校的還是想跳槽的大兄弟們說,我這一場(chǎng)面試基本上C++的部分都是C++11 的東西,這些東西,雖然我們能用到的場(chǎng)景確實(shí)不太常見,但是如果有,千萬別錯(cuò)過了,只會(huì)背口訣的和真正練過武功的還是很好分辨的。而且雖然少,但是面試時(shí)造的火箭真的有機(jī)會(huì)用!

2022.12.2 更新
二面面經(jīng)

二面一直都在圍繞著我過往的經(jīng)歷和項(xiàng)目進(jìn)行挖掘,可能對(duì)于別人參考性不是那么大,大家隨便看看把:
直接跳過了自我介紹環(huán)節(jié),上來直接說在過往的項(xiàng)目中有什么成果,對(duì)項(xiàng)目做出了那些提升?
唉,屬實(shí)是沒有什么能拿的出手的。又拿出了一面說的優(yōu)化了UI性能,面試官示意我接著說,我就又說了點(diǎn)其他的大個(gè)的功能,以及之前寫的一些小工具鏈,android logcat。面試官示意我接著說,然鵝已經(jīng)沒有了。比較尷尬。
有了解過Tracy是怎么監(jiān)控CPU時(shí)間的嗎?
這個(gè)問題是承接著UI優(yōu)化來的,因?yàn)樘岬綌?shù)據(jù)了,問我是怎么得到的,我說Tracy,這一下應(yīng)該是撞槍口了,面試官顯然是知道Tracy并且很懂。我確實(shí)是看過我們項(xiàng)目是怎么把函數(shù)暴露給Tracy的,但是Tracy的內(nèi)部沒有研究過,就胡亂說了說。
你了解虛幻的哪些模塊呢?
經(jīng)典尷尬,一直在搬磚,虛幻是將將會(huì)用,讓我掰扯模塊是真掰不出來呀。支吾了一陣,面試官說沒有也沒關(guān)系。過。
你剛剛說你搭了一個(gè)禮包的框架,這里面有什么設(shè)計(jì)模式嗎?
媽的,想哭。我就是實(shí)現(xiàn)了傻逼策劃的傻逼需求(希望我的策劃看不到,看到了我就不承認(rèn)),哪有什么具體的設(shè)計(jì)模式呀。不過我靈機(jī)一動(dòng),因?yàn)槲覀冋麄€(gè)項(xiàng)目是基于觀察者模式的,然后我基于我們項(xiàng)目給面試官講觀察者模式,也不知道講得對(duì)不對(duì),反正不明確的地方就項(xiàng)目是什么樣,我就講什么樣。
看來你寫lua寫的比較多,那你知道lua里面能繼承嗎?
終于問到自己會(huì)的了,結(jié)合元表給面試官講了一下,lua怎么實(shí)現(xiàn)繼承。
lua里面require都做了哪些事情?
講了loaded表,慶幸自己平時(shí)有積累。
開始問demo,問我的demo里都是基于虛幻已有的功能寫的嗎,有沒有自己的擴(kuò)展?
這一部分問了幾個(gè)問題,我的移動(dòng)啊,碰撞啊, 都是怎么做的。那些都是我學(xué)習(xí)虛幻時(shí)做的demo,屬實(shí)是說不出來啥,都是虛幻的能力,我自己沒什么擴(kuò)展,這里合并成一個(gè)問題,不展開了。
如果卡頓的話,有可能碰撞體上一幀的位置,和這一幀的位置已經(jīng)有很大的差距了(比如發(fā)射一顆子彈),你要怎么優(yōu)化這個(gè)誤差?
不知道標(biāo)準(zhǔn)答案,但是摁著頭皮扯。
想要檢測(cè)碰撞的話,歸根結(jié)底就是線段,那么空間內(nèi)兩條線段,注意是線段,你要怎么判斷他們是否相交?
嗯扯。
動(dòng)態(tài)陰影和烘焙陰影疊加會(huì)發(fā)生什么?會(huì)更黑一點(diǎn)嗎?
扯就完事了。
再問你個(gè)C++吧,如果我把一個(gè)指向A類的指針強(qiáng)轉(zhuǎn)為B類指針(AB類沒有繼承關(guān)系),會(huì)發(fā)生什么?
終于問八股文了,我淚流滿面,但是這個(gè)問法讓我很捉雞。講了一下,AB沒有關(guān)系,會(huì)調(diào)用reinterpret_cast,會(huì)產(chǎn)生未定義行為。
那么如果我按照int類型進(jìn)行訪問呢?
面試官解釋說,因?yàn)樗械牡刂范伎梢钥闯墒莍nt型,那么我強(qiáng)轉(zhuǎn)之后,一定能訪問成功嗎?不知道答案,我就扯了扯,最后說,實(shí)際開發(fā)中,我會(huì)盡量避免這種不安全的行為。
反問環(huán)節(jié)
感覺網(wǎng)易的二面沒有太明確的問題范圍,完全是根據(jù)個(gè)人定制。都是圍繞著你的簡(jiǎn)歷來問,不斷的去挖掘你的上限,也側(cè)面反映了網(wǎng)易面試官的技術(shù)水平深不可測(cè),哪怕是八股文,都能問點(diǎn)花樣出來,本來問到類型轉(zhuǎn)換我還挺開心,結(jié)果自己答的竟然似懂非懂。
最后,祝我好運(yùn),也祝看我面經(jīng)的大兄弟們好運(yùn)!