本文同時(shí)發(fā)布至我的個(gè)人博客,點(diǎn)擊進(jìn)入我的個(gè)人博客閱讀。本博客供技術(shù)交流與經(jīng)驗(yàn)分享,可自由轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)?jiān)谠u(píng)論區(qū)或私信簡(jiǎn)單通知,感謝!
前言
大二暑假之前做了許多的暑假設(shè)想:學(xué)習(xí)python、了解人工智能和機(jī)器學(xué)習(xí)、學(xué)一學(xué) Unity3D shader、補(bǔ)聽(tīng)完上半年落下的新專(zhuān)輯...雖然按照以往的經(jīng)驗(yàn)這些計(jì)劃往往都會(huì)泡湯,但是單單是這樣一想,也可以說(shuō)是野心勃勃了。在眾多設(shè)想里面,唯獨(dú)沒(méi)有考慮過(guò)“實(shí)習(xí)”這件事,似乎心里把它默認(rèn)為大三才應(yīng)該做的事。后來(lái),和一個(gè)同校的師姐聊天的時(shí)候聊到暑假和實(shí)習(xí)的事,被慫恿去找實(shí)習(xí)。于是回到宿舍后閑著沒(méi)事在實(shí)習(xí)僧平臺(tái)上看了幾眼,發(fā)現(xiàn)了幾個(gè)還蠻感興趣的公司和崗位,然后轉(zhuǎn)念一想覺(jué)得其實(shí)實(shí)習(xí)也不錯(cuò),于是便開(kāi)始深入地物色對(duì)比各種實(shí)習(xí)招聘以及準(zhǔn)備簡(jiǎn)歷。
面試前準(zhǔn)備
首先是準(zhǔn)備簡(jiǎn)歷了,第一次寫(xiě)簡(jiǎn)歷不知道從何下手,在網(wǎng)上找了個(gè) html 版的簡(jiǎn)歷,修修改改就變成了自己的簡(jiǎn)歷了。后來(lái)發(fā)現(xiàn)用 html 寫(xiě)簡(jiǎn)歷還是略有點(diǎn)不方便,主要是要轉(zhuǎn)化成 pdf 時(shí)總會(huì)出現(xiàn) css 樣式丟失、鏈接丟失等等問(wèn)題。找了許多辦法,最后還是 chrome 大法好,找到了 FireShot 這個(gè) chrome 插件,完美轉(zhuǎn)化 html 為 pdf,簡(jiǎn)歷搞定。
接著發(fā)現(xiàn)了網(wǎng)易游戲的引擎開(kāi)發(fā)實(shí)習(xí)生這個(gè)崗位,大致看了一下 jd ,大概就是 c++/ lua/ cocos2dx/ u3d 這一類(lèi)的方向,覺(jué)得和自己的技術(shù)棧還是較為貼合的,于是就在7月4號(hào)將簡(jiǎn)歷投給了網(wǎng)易游戲。很快,隔天 hr 就來(lái)聯(lián)系面試了,二面時(shí)間定在7月6號(hào)。這個(gè)二面的形式其實(shí)就相當(dāng)于筆試+技術(shù)面了,做完筆試如果筆試成績(jī)過(guò)了的話(huà)直接進(jìn)行技術(shù)面。當(dāng)時(shí)由于之前的一段時(shí)間都在準(zhǔn)備期末考試,完全沒(méi)有看過(guò)技術(shù)面試和筆試相關(guān)的內(nèi)容,心想八成是要裸面了,心里開(kāi)始有點(diǎn)忐忑,大概就是“要是筆試一道題都做不出就尷尬了”那種心態(tài)。
忐忑歸忐忑,雖然只有一天左右的時(shí)間準(zhǔn)備,但是還是要盡量準(zhǔn)備吧。首先由于是第一次職場(chǎng)面試,在面試禮儀之類(lèi)還是要多做功課,于是在知乎和掘金刷了一堆面試經(jīng)驗(yàn)和面試禁忌。后來(lái)發(fā)現(xiàn)其實(shí)對(duì)于軟件開(kāi)發(fā)行業(yè)來(lái)說(shuō),面試環(huán)境都是相對(duì)輕松的,所以有些面試細(xì)節(jié)并不是想象中那么重要,只要表現(xiàn)得比較禮貌,著裝整潔基本就沒(méi)有什么大的問(wèn)題。
然后再看了一下數(shù)據(jù)結(jié)構(gòu)課的筆記,大致看了下重要的基礎(chǔ)排序查找算法,溫習(xí)一下 c++ 基本語(yǔ)法。最后在看了十來(lái)道“技術(shù)面試高頻題”,看了一下之前 unity3d 項(xiàng)目的項(xiàng)目總結(jié),然后就去面試了。
筆試
提前15分鐘到達(dá)網(wǎng)易游戲,下午2點(diǎn)30筆試準(zhǔn)時(shí)開(kāi)始。拿到試卷大致掃描了一遍,長(zhǎng)吁一口氣:三道邏輯題有一道是比較熟悉的,另外兩道不熟悉的感覺(jué)難度不大,編程題感覺(jué)也不是很不友好,至少不會(huì)像之前擔(dān)心的那樣一道題也做不出了。邏輯題大都大同小異,基本都是一些智力題,就不多講了。編程題的話(huà)也沒(méi)有涉及很明確的復(fù)雜度要求,而且也是類(lèi)似實(shí)現(xiàn)非遞歸全排列這樣的類(lèi)型題,不用太擔(dān)心答不出來(lái)的問(wèn)題。主要是答題時(shí)間的把握吧,如果時(shí)間充裕的話(huà)能想出復(fù)雜度更低的方法當(dāng)然能有所加分的。
技術(shù)面
筆試完 HR 小姐姐讓我們?cè)诠镜囊粋€(gè)討論室稍等十分鐘等待筆試結(jié)果。由于是第一次筆試,做完之后其實(shí)也不知道自己發(fā)揮的算好算壞,最大的感覺(jué)是手寫(xiě)代碼什么的很難受,寫(xiě)得十分潦草??傊氐攘耸昼姾螅琀R 小姐姐過(guò)來(lái)通知筆試通過(guò)了,接著進(jìn)來(lái)了兩個(gè)面試官,看樣子應(yīng)該是部門(mén)的技術(shù)負(fù)責(zé)人,然后面試立刻就開(kāi)始了。
面試完的感覺(jué)是:面試官很 nice,面試內(nèi)容比想象中豐富。除了自我介紹、項(xiàng)目介紹這些固定環(huán)節(jié),還問(wèn)了四五個(gè)技術(shù)方面的問(wèn)題,大多數(shù)是關(guān)于游戲開(kāi)發(fā)和游戲引擎的問(wèn)題。另外還有一些關(guān)于產(chǎn)品和開(kāi)發(fā)流程之類(lèi)的問(wèn)題也有所提及。問(wèn)題的難度并不大,面試官應(yīng)該是根據(jù)個(gè)人情況調(diào)整問(wèn)題的難度,所以不必?fù)?dān)心完全答不上的問(wèn)題。這里列幾個(gè)印象比較深刻的問(wèn)題:
屏幕自適應(yīng)是如何實(shí)現(xiàn)的?
一開(kāi)始問(wèn)到這個(gè)問(wèn)題我是有點(diǎn)懵的,直接想到的是 UGUI 里Canvas的自適應(yīng)渲染,就說(shuō)只要把Canvas調(diào)整為Screen Space就可以。果然面試官追問(wèn)我,怎么通過(guò)代碼實(shí)現(xiàn)?這個(gè)時(shí)候我才懂了面試官的意思,聯(lián)系之前 uwp 開(kāi)發(fā)的經(jīng)驗(yàn)不太確定的回答了,大致就是需要使用游戲引擎提供的 API 或者是調(diào)用系統(tǒng)的接口獲得設(shè)備的屏幕分辨率,根據(jù)分辨率進(jìn)行縮放就可以?;貋?lái)查了一下在中可以使用UnityEngine 中 Screen來(lái)實(shí)現(xiàn)。
一個(gè)游戲引擎需要實(shí)現(xiàn)哪些功能?
游戲引擎包含以下系統(tǒng):渲染引擎(即“渲染器”,含二維圖像引擎和三維圖像引擎)、物理引擎、碰撞檢測(cè)系統(tǒng)、音效、腳本引擎、電腦動(dòng)畫(huà)、人工智能、網(wǎng)絡(luò)引擎以及場(chǎng)景管理。面試時(shí)答得并不是很好,只提到了其中幾個(gè)點(diǎn),慶幸的是沒(méi)有犯常識(shí)性和方向性的錯(cuò)誤。
如果讓你來(lái)選擇一個(gè)游戲引擎,你會(huì)考慮那些問(wèn)題?
非技術(shù)的問(wèn)題應(yīng)該就是見(jiàn)仁見(jiàn)智了,感覺(jué)主要還是在考對(duì)游戲引擎的理解。由于并沒(méi)有真正地參與過(guò)大型項(xiàng)目,就只憑著常識(shí)水了幾點(diǎn),大概就是:引擎的性能優(yōu)化、畫(huà)質(zhì)的支持、平臺(tái)兼容性、使用什么語(yǔ)言開(kāi)發(fā)、符不符合當(dāng)前團(tuán)隊(duì)的技術(shù)棧、學(xué)習(xí)成本有多高這幾點(diǎn)。其實(shí)可以提到的還有很多:例如開(kāi)發(fā)手段是否友好便捷(支持可視化腳本)、第三方插件數(shù)量、性能分析工具、是否支持 VR 等等。
另外也有很多回答同樣都是很開(kāi)放的問(wèn)題:“不給你任何數(shù)據(jù),你要怎么判斷一款游戲當(dāng)前的收入?”,“比較一下 unity3D 與 cocos2dx”等等。
面試體會(huì)
- 筆試的手寫(xiě)代碼其實(shí)不用過(guò)分的糾結(jié)于一些細(xì)節(jié),最重要的是把你的想法用語(yǔ)言與注釋明確地表達(dá)出來(lái),具體的代碼實(shí)現(xiàn)細(xì)節(jié)并不會(huì)有太大的影響,當(dāng)然保持最基本的代碼風(fēng)格和整潔度,以及規(guī)范的變量命名是必要的。
- 邏輯題的答案,盡量用表格、分點(diǎn)列舉的形式有條理的表述你的答案。除了便于面試官理解,也便于自己的糾錯(cuò)和梳理。
- 技術(shù)面試,答案明確的話(huà)就直接一步到位直接點(diǎn)題,如果自己并沒(méi)有什么把我,可以先詢(xún)問(wèn)一下面試官這個(gè)問(wèn)題是不是自己所理解的那樣,然后通過(guò)聯(lián)系一些相關(guān)的開(kāi)發(fā)經(jīng)歷去回答,嘗試獲取和認(rèn)真把握面試官的引導(dǎo)尤為重要。如果實(shí)在完全不懂,就直接告訴面試官自己這方面了解不足,不懂裝懂是大忌。
- 平時(shí)可以多整理一些各大公司的面試真題,總會(huì)有用的。
- 項(xiàng)目經(jīng)歷以及熟悉自己的項(xiàng)目很重要。不一定是要很難、完整性很高的項(xiàng)目,但是項(xiàng)目中的每個(gè)技術(shù)細(xì)節(jié)你都要了解,尤其是要能準(zhǔn)確地表達(dá)出“在這個(gè)項(xiàng)目中,你用到(學(xué)會(huì))了什么技術(shù)?”這個(gè)問(wèn)題。
后記
面試完沒(méi)過(guò)多久人事部的同事就聯(lián)系我了,說(shuō)筆試面試的表現(xiàn)都很不錯(cuò),但是兩個(gè)月的實(shí)習(xí)時(shí)間太短,問(wèn)我是否確定只能實(shí)習(xí)兩個(gè)月。雖然很希望能在網(wǎng)易游戲工作,但是也確實(shí)沒(méi)辦法保證更長(zhǎng)的實(shí)習(xí)時(shí)間,所以還是遺憾地沒(méi)能留住這次寶貴的實(shí)習(xí)機(jī)會(huì)~雖然這次沒(méi)能在網(wǎng)易游戲?qū)嵙?xí),但是面試獲得的經(jīng)驗(yàn)還是很讓我成長(zhǎng)的,而且整個(gè)面試過(guò)程也是很開(kāi)心的。一是網(wǎng)易游戲的氛圍與環(huán)境給人的感覺(jué)很舒適,和 HR 小姐姐的交流中也能感覺(jué)到在這里工作是件比較愉悅的事;二是技術(shù)氛圍很好,接觸的兩個(gè)面技術(shù)的面試官給人的感覺(jué)都是技術(shù)很成熟,而且沒(méi)有什么技術(shù)架子。面試過(guò)程中許多問(wèn)題都會(huì)盡量引導(dǎo),面試完之后還送了我一程,很 nice。希望以后有機(jī)會(huì)能在網(wǎng)易游戲工作~