unity和C#面試題記錄和解答

C#基礎

Q:問類和結構區別

Q:接口和抽象函數異同

Q:問數組,ArrayList和List;問數組和字典 很細

Q:string 和 StringBuilder異同

Q:什麼是反射;C#如何調用外部動態鏈接庫

Q:問棧堆區別

Q:虛函數 構造函數 析構函數

A:https://www.cnblogs.com/ysq0908/p/6407848.html

Q:ref out

Q:GC是什麼?具體機制是怎樣?它是怎麼知道哪些對象可以被回收的?

A:https://www.jianshu.com/p/53439af1eb00

Q:委託 事件是委託嗎

A:https://www.cnblogs.com/akwwl/p/3232679.html

Q:UI間傳參(事件傳參)

A:1.通過object類型來傳遞參數,這種方案最差,因爲拓展性比較差

    2.通過hashtable(keyvaluepair)傳遞參數,相比object類型更加自由可控,實現一種動態結構體的概念

    3.最好的方案是通過封裝成EventContext來傳遞參數 --- EventDispatcher sender(發起對象)object initiator(初始對象)                InputEvent inputEvent(傳入事件) string type(事件類型名)object data(數據)

Q:D3D渲染流程;什麼是粒子 如何做的

數據結構和算法

Q:排序有哪些 複雜程度 以及算法是否穩定? 

A:https://www.cnblogs.com/hokky/p/8529042.html

Q:射線和四邊形碰撞是否相交

Q:兩個四邊形是否相交(給四邊形中間點和長寬)

A:https://blog.csdn.net/yahohi/article/details/7927158

Q:問運動,給一段路線,初速度0,然後勻速運動,最後減速至停止,求加速度路程時間;勻速路程時間;和減速路程時間;

A: 路程:s=at^2 / 2     加速度: a=(v-v0)/t 

Q:問如果碰撞的運動判斷超過了碰撞體

A:射線長度和運動下個位置掛鉤(我沒回答好)

Q:傷害顯示怎麼一次drawcall

A:mesh或者Texture2D

Q:任意一條曲線,如何知道兩點間曲線長度

Q:List和Dictionary,增加,插入,刪除的時間複雜度

Q:設計一張哈希表,如何解決哈希衝突

Unity基礎

Q:問看到物體前後的所有影響

A:camera depth → sorting layer → order in layer → shader渲染列隊(所有數值越大越後渲染,顯示越靠前)

Q:問協程 IEnumerator()  一幀後執行 跳出 停止 與C#線程區別

Q:貼圖的壓縮格式

Q:unity是否嘗試物理彈開的影響;如何設定是否碰撞

Q:ui canvas是啥 三種模式區別

Q:AssetBundle打包函數,unload方法中boolean參數有什麼用,壓縮格式

Q:Update和FixedUpdate的區別 timescale和dataltime的使用和對前者的影響

Q:渲染流程,

Q:簡述Assetbundle的加載過程與注意事項(求嘉神解答)

Q:什麼是DrawCall,UGUI有哪些降低DrawCall的技巧

Q:自定義模型的實現原理 並說明如何在unity中自定義模型

Q:Unity shader中用什麼語言;Lighting Culling ZTest Zwrite Fog AlphaTest Blend Offset ColorMask分別代表什麼

Q:揹包界面如何實現?

A:主要問多項Item時scrollView如何處理,可以舉例說明,比如列表最多可顯示5項,那麼只創建6項,通過滑動時循環將第一項         變爲最後一項實現性能優化

     拓展:需求“可以定位到任意項時,如何處理?”“這些項可能有任意高度時如何處理?”

    根據item數量計算表高度,並定位到對應高度(在此基礎上詳細回答)

Q:貼圖的壓縮格式

Q:NGUI和UGUI中,兩個UI間夾着一個粒子特效是怎麼實現的?

A:NGUI:設置shader的renderQueue UGUI:設置sortingOrder

Lua

Q:變量有哪些?

A:nil bool string number function thread table

Q:閉包

Q:pairs和ipair區別 for i=1,n do和for ipairs區別?

Q:table是怎麼實現既有List特性又有Dictionary特性的?

方案

Q:Spine2d內部結構是怎樣的?如何實現換裝?

A:https://mp.csdn.net/postedit/82697910

Q:傷害彈出數字的製作

A:1.sprite(會多對象)   2.UI(如果使用Texture2d get/setPixel會增加計算 但是減少對象)  3.mesh 設置UV(單對象,計算消耗很低)

Q:網絡同步方案(詳細)

A:狀態同步和狀態同步,同步驗證問題

Q:傷害計算公式

Q:寫一個生產者與消費者的僞代碼

Q:寫一個C#打亂撲克牌(54張)的算法,寫一個鬥地主的計算各種牌的方法(3帶2 連對 飛機..)

Q:問子彈時間(覺得方案2不好 )

A: https://mp.csdn.net/postedit/83022461

Q:問AR塗塗樂 UVMapping技術(回答後覺得簡單)

Q: 問Kinect變身和Animator混合(回答後覺得簡單)

性能優化

Q:DrawCall

Q:使用對象池時,cpu cache的影響

Q:戰爭迷霧系統是怎麼實現的?怎麼實現對他的優化?(c#邏輯和shader渲染兩個方面)

Q:Mono中Foreach的缺點?怎麼解決

A:Mono中使用Foreach會產生40B的GC,具體原因是翻譯成IL代碼時,GetEnumerator()返回值類型在使用using語句時進行了裝      箱操作 

    在處理Array或者List類型數據時可以使用For

在處理Dictionary時可以用迭代器解決:              
var enumerator = m_Dictionary.GetEnumerator();
while (enumerator.MoveNext())
{
var element = enumerator.Current;
element.Value.UpdateComponent(deltaTime);
}

網絡連接

Q:TCP滑動窗口

Q:TCP和UDP的區別

Q:網絡信息的信息池

Q:UDP如何保證消息送達?在網絡較差時如何處理

Q:Protobuf的結構是怎樣的?怎麼實現高壓縮率(TODO:表述有問題,待修正)

A:Protobuf結構是Tag-Length-Value

框架和設計模式

Q:設計模式有哪些? 寫出工廠模式、單例模式 問ai和工廠 覺得不是工廠(工廠模式三種瞭解一下)

Q:ECS框架,優點

A:entity component system ①解耦 ②內存cache

Q:MVC框架 

A:Model View Controller 消息傳遞,控制data

Q:ToLua框架,如何使用

Q:ET框架

Q:framework

安卓

Q:SDK如何使用

Q:生命週期

A:

Q:回調方法描述

IOS

Q:生命週期

--------------------------------------------

說一下面試,大公司基本上都是問簡歷上的內容拓展問方案和基礎,然後會問一下C#基礎、unity基礎和你負責相關的部分。其他中小公司一般會先給筆試甚至機試。

比較好的面試官有一步步的引導解題和給予一定反饋。

然後最近在讀《深入C#》200+頁了 《C#高級編程》100+page 《程序員的自我修養》100+page,感覺深入C#挺不錯的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章