1. 程式人生 > >應聘引擎程式需做哪些準備

應聘引擎程式需做哪些準備

每個人進入企業都面臨面試這一關,不同的職業面試的內容是不同的,即使都是IT遊戲行業,也分多個職業,從技術角度講,有客戶端,伺服器,引擎程式。它們面試的內容也是不同的,工欲善其事必先利其器,要想進入某個領域必須武裝好自己,不打無準備的仗。下面就給讀者分享關於面試引擎程式的一點心得。分別從簡歷,面試內容,學習,心態四個方面給讀者介紹。

  • 簡歷

簡歷是門面,相信每個面試者都寫過簡歷,應聘引擎的程式設計師在簡歷中最好能體現自己以前做過引擎編寫工作,或者使用某個開源引擎做過專案,這樣可以為你加分,畢竟每個職業都喜歡有經驗的開發者。簡歷寫的專案內容介紹大概就可以,細節方面留給與面試官交流,簡歷中的內容自己能夠完全掌握的,否則就不要寫的太多,以免誇大其詞,弄巧成拙,做人還是要實事求是的好,畢竟這個關乎態度問題。比如你在專案中實現了HDR,Blur,Bloom渲染效果,那就把這三個寫上,要求自己對這三個渲染演算法非常清晰,因為現在的技術網上都是,直接拿過來複制,貼上就可以,但是作為搞技術的我們,還是要深入的研究一下它的實現演算法,這樣一旦出現問題或者需要優化,我們能快速的找到原因。總之,簡歷的內容一定是自己能夠掌控的,切記誇大其詞,胡編亂吹。

  • 面試內容

很多人在論壇中也問過我這方面的內容,筆者為了獲取現場第一手資料,參加了國內一些知名的IT公司的面試,應聘公司的資深引擎程式,主考官有公司的引擎負責人或者技術總監出面面試,這樣就增加了跟大公司接觸的機會,可以進一步瞭解他們對引擎程式的需求,當然也可以看到自己的不足之處。資深引擎的工作主要是對遊戲引擎模組的編寫以及維護,同時解決專案中遇到的問題或者專案組提的需求。這個可以在網上的招聘簡歷檢視,引擎的編寫離不開演算法的實現以及Shader的編寫,下面我就參加面試時,面試官問我的問題整理如下,如果開發者想去大公司應聘引擎研發,下面的問題必須要掌握。
問題一:HDR技術使用的核心演算法是什麼?如何實現HDR?
問題二:形成地形的演算法有哪些?四叉樹與八叉樹的區別是什麼?八叉樹在地形中是如何使用的?如果場景改變,八叉樹是否發生改變?如何改變?
問題三:Lua與C++是如何結合的?具體實現原理?
問題四:頂點著色器與片段著色器的區別是什麼?比如繪製一個三角形三個頂點的顏色是否可以在頂點著色器中計算?頂點著色器是否可以進行顏色的計算,它跟片段著色器相比效率如何?
問題五:前向渲染和延遲渲染的區別?延遲渲染是如何實現的?
問題六:建築物場景的優化演算法有哪些?如何實現?
問題七:實時陰影渲染有哪些演算法?各個演算法實現思路。
問題八:以前使用過的引擎在PC端最多支援多少三角面片?
問題九:針對大場景的載入?有哪些載入方案?
問題十:專案的優化方案有哪些?舉例說明,先優化CPU還是GPU?
問題十一:針對Shader的優化有哪些?針對不同的機型需做哪些優化?
問題十二:介紹SSS渲染實現原理?
問題十三:C++11的特性以及資料結構中的排序演算法介紹
問題十四:Shader渲染出問題時,有哪些工具輔助我們檢測?
問題十五:引擎的記憶體管理方案。
問題十六:合併模型的優缺點及注意事項
問題十七:Blur和Bloom的實現原理
問題十八:抗鋸齒實現原理
問題十九:Lightmap實現原理

未完,待補充中。。。。。。。

  • 心得

通過上面的面試內容可以看出,公司需要的引擎程式對演算法有一定深度的認識,並不只是大概瞭解,而且既有深入的問題,也有比較基礎的知識,更有專案的實戰經驗,這些問題我們在專案實現過程中都會遇到,有些我們可能並不關心,只是一掠而過。如果讀者想從事引擎開發,對於引擎使用的技術必須深入理解,所學的知識能夠運用到專案開發中,專案中會出現各種問題,在解決專案的問題中收穫成長,上面所列的問題,我們不要侷限,可以舉一反三,把知識點再擴展出去,如果你準備的不是很充分,建議不要急於去應聘引擎程式,先打好基礎,好好準備準備。面試官招聘你是讓你能夠快速的幫助公司專案,所以他會對你的技術問的比較詳細,這樣他通過你的回答能夠看出你對渲染技術掌握程度。另外,引擎程式面試的問題,基礎知識問的相對來說比較少,大部分都是與技術實現相關的,開發者可以在這方面多下點功夫。

  • 學習
    無論做什麼職業,我們都要不停的學習,大家知道,打籃球都會有新秀牆,就是到了一定的時期,球員的得分能力下降,這是因為對方已經把你以前運用的技術研究的很透徹了,需要球員自己做出改變的時候了,如果不改變就會後退,沉淪,一蹶不振。同樣,我們在工作中也會遇到瓶頸,感覺自己能力一直沒有提升,不知道學習什麼?很茫然,滿足於現在的狀態,不思進取,固步自封,認識不到自己的缺點。遇到這種狀態時,我們要學會自己調整,而不是沉浸其中,我的建議是可以跟以前的同事或者同行圈子裡的人員互相聊聊專案或者技術的事情,拓展一下視野,在聊的過程中就會發現自己感興趣的技術點,一方面可以跟同事交流,另一方面可以自己學會查閱,比如一些好的技術論壇,知名的IT網站,在查閱的過程中又會遇到新的技術點,這樣就可以不斷地拓展自己的知識面,當然查閱書籍或者網上資料必須要跟現有的專案相關,這叫學有所用,還有一招學習技術的方法,可以去應聘,去一些行業比較知名的公司,通過跟主考官聊,也可以發現自己的不足,進而去彌補,這也是學習的一種方法,也可以通過這個機會考察一下公司,為以後自己跳巢做準備。

  • 心態

技術面試只是幫助自己提升技能,不要有過度的心理負擔,即使面試不上,只能說我們跟公司沒有緣分,並不能否定我們的技術水平,或者說我現在還達不到公司的要求。不必灰心,查詢不足,彌補短板,繼續尋找下一家,俗話說“不經歷苦難,怎見彩虹”。很多人一旦面試不上感覺心灰意冷,看低自己,貶低自己,其實大可不必,是你的終歸是你的,不是你的,與你無緣。面試一定要保持一個好的心態,當然也避免盲目樂觀,要腳踏實地,平和心態,要相信金子總會發光滴。我們去公司面試也不要抱著必須要進這個公司,可以想著,我先了解一下公司,因為我們應聘公司,跟公司是雙向選擇,互相看得上才可以成交。面試,不僅僅只是技術面,我們還可以通過面試官瞭解公司專案情況,團隊配置,盈利情況,公司的文化氛圍,加班情況等等。我們去一個公司還是要想著長遠發展,不是一去了公司就開始裁員,所以心態很重要,放鬆自己,不要給自己過多的壓力,這樣很容易發揮失常。
又到年底了,很多想跳巢的程式設計師開始準備面試了,最後預祝想從事引擎研發的程式設計師,能夠找到自己滿意的公司。

  • 總結
    應聘技術,也需要自己不停的總結經驗,每個公司都有自己的面試風格,有時會遇到技術官面試我們的問題不在我們掌控範圍內,實時求是的回答,不丟人。面試也需要技巧的,可以把話題引到自己擅長的技術中,掌握主動,這些需要多經歷一些面試積累經驗。