某公司的U3D筆試題
今天這套筆試題感覺做得一般。
隨後是二對一的技術面試,但涉及的技術細節相對較少,更多的是對以前工作、項目經歷的詢問。
然後說今天先到這裏,讓我等通知。
我還特意問了一下,通知大概要多久,他們說這個得看hr,他們只是給hr傳達他們的信息。
當時就覺得差不多掛了、、、
1. 請簡述值類型與引用類型的區別
答:
可參考http://www.cnblogs.com/JimmyZhang/archive/2008/01/31/1059383.html
2.C#中所有引用類型的基類是什麽
答:
引用類型的基類是System.Object 值類型的基類是System.ValueType
同時,值類型也隱式繼承自System.Object
3.請簡述ArrayList和List<Int>的主要區別
答:
ArrayList存在不安全類型‘(ArrayList會把所有插入其中的數據都當做Object來處理)
裝箱拆箱的操作(費時)
4.請簡述GC(垃圾回收)產生的原因,並描述如何避免
答
:GC回收堆上的內存
避免:1)減少new產生對象的次數
2)使用公用的對象(靜態成員)
3)將String換為StringBuilder
5.請描述Interface與抽象類之間的不同
答:
參考http://www.cnblogs.com/seapub/archive/2012/08/08/2628433.html
6.下列代碼在運行中會產生幾個臨時對象?
string a = new string("abc"); a = (a.ToUpper() + "123").Substring(0, 2);
答:其實在C#中第一行是會出錯的(Java中倒是可行)。應該這樣初始化:
string b = new string(new char[]{‘a‘,‘b‘,‘c‘});
7.下列代碼在運行中會發生什麽問題?如何避免?
List<int> ls = new List<int>(new int[] { 1, 2, 3, 4, 5 }); foreach (int item in ls) { Console.WriteLine(item * item); ls.Remove(item); }
答:會產生運行時錯誤,因為foreach是只讀的。不能一邊遍歷一邊修改。
8.請簡述關鍵字Sealed用在類聲明和函數聲明時的作用
答:
類聲明時可防止其他類繼承此類,在方法中聲明則可防止派生類重寫此方法。
9.請簡述private,public,protected,internal的區別
答:
public:對任何類和成員都公開,無限制訪問
private:僅對該類公開
protected:對該類和其派生類公開
internal:只能在包含該類的程序集中訪問該類
protected internal:protected + internal
10.反射的實現原理?
答:審查元數據並收集關於它的類型信息的能力。
參考http://blog.163.com/xuanmingzhiyou@yeah/blog/static/1424776762011612115124188/
11..Net與Mono的關系?
答:Mono官網主頁
Mono is a software platform designed to allow developers to easily create
cross platform applications. Sponsored by Xamarin, Mono is an open source
implementation of Microsoft‘s .NET Framework based on the ECMA standards for C# and the Common Language Runtime.
12.簡述Unity3D支持的作為腳本的語言的名稱
答:Unity的腳本語言基於Mono的.Net平臺上運行,可以使用.NET庫,這也為XML、數據庫、正則表達式等問題提供了很好的解決方案。
Unity裏的腳本都會經過編譯,他們的運行速度也很快。這三種語言實際上的功能和運行速度是一樣的,區別主要體現在語言特性上。
JavaScript:和網頁中常用的JavaScript不一樣,它編譯後的運行速度很快,語法方面也會有不少區別。
C#
Boo:可以看做是Python語言的變種,又糅合了Ruby和C#的特性,它是靜態類型語言
13.Unity3D是否支持寫成多線程程序?如果支持的話需要註意什麽?
答:參考http://www.unity防禁manual.com/3821.html
僅能從主線程中訪問Unity3D的組件,對象和Unity3D系統調用
14.Unity3D的協程和C#線程之間的區別是什麽?
答:http://blog.csdn.net/kongbu0622/article/details/8775037
多線程程序同時運行多個線程 ,而在任一指定時刻只有一個協程在運行,並且這個正在運行的協同程序只在必要時才被掛起。
除主線程之外的線程無法訪問Unity3D的對象、組件、方法。
15.U3D中用於記錄節點空間幾何信息的組件名稱,及其父類名稱
答:Transform 父類是 Component
16.簡述四元數的作用,四元數對歐拉角的優點?
答:四元數用於表示旋轉
相對歐拉角的優點:
1)能進行增量旋轉
2)避免萬向鎖
3)給定方位的表達方式有兩種,互為負(歐拉角有無數種表達方式)
17.向量的點乘、叉乘以及歸一化的意義?
1)點乘描述了兩個向量的相似程度,結果越大兩向量越相似,還可表示投影
2)叉乘得到的向量垂直於原來的兩個向量
3)標準化向量:用在只關系方向,不關心大小的時候
18.矩陣相乘的意義及註意點
用於表示線性變換:旋轉、縮放、投影、平移、仿射
註意矩陣的蠕變:誤差的積累
19.為何大家都在移動設備上尋求U3D原生GUI的替代方案
不美觀,OnGUI很耗費時間,使用不方便
20.請簡述如何在不同分辨率下保持UI的一致性
原生GUI http://unity3d.9ria.com/?p=2587
NGUI http://blog.csdn.net/mfc11/article/details/17681429
21.為什麽dynamic font在unicode環境下優於static font
Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。
使用動態字體時,Unity將不會預先生成一個與所有字體的字符紋理。當需要支持亞洲語言或者較大的字體的時候,若使用正常紋理,則字體的紋理將非常大。
22.Render的作用?描述MeshRender和SkinnedMeshRender的關系與不同
A renderer is what makes an object appear on the screen。
23.簡述SkinnedMesh的實現原理
http://blog.csdn.net/n5/article/details/3105872
24.在場景中放置多個Camera並同時處於活動狀態會發生什麽
答:
遊戲界面可以看到很多攝像機的混合
25.Prefab的作用?如何在移動環境的設備下恰當地使用它?
答:
Prefab在實例化的時候用到,主要用於經常會用到的物體,屬性方便修改
http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html
26.如何銷毀一個UnityEngine.Object及其子類
答:
Destory
27.為什麽Unity3D中會發生在組件上出現數據丟失的情況?
答:
組件上綁定的對象被刪除了
28.如何安全的在不同工程間安全地遷移asset數據?三種
答:
將Assets目錄和Library目錄一起遷移
導出包
用unity自帶的assets Server功能
29.MeshCollider和其他Collider的一個主要不同點?
答:Convex?
30.當一個細小的高速物體撞向另一個較大的物體時,會出現什麽情況?如何避免?
穿透(碰撞檢測失敗)
http://forum.unity3d.com/threads/3353-collision-detection-at-high-speed
31.OnEnable、Awake、Start運行時的發生順序?哪些可能在同一個對象周期中反復的發生?
答
Awake -》OnEnable-》Start
OnEnable在同一周期中可以反復地發生
http://answers.unity3d.com/questions/217941/onenable-awake-start-order.html
32.請簡述OnBecameVisible及OnBecameInvisible的發生時機,以及這一對回調函數的意義?
答
當物體是否可見切換之時。
可以用於只需要在物體可見時才進行的計算。
33.Unity3D如何獲知場景中需要加載的數據?
題目是獲取的意思?
Resource.Load
AssetBundle
34.MeshRender中material和sharedmaterial的區別?
修改sharedMaterial將改變所有物體使用這個材質的外觀,並且也改變儲存在工程裏的材質設置。
不推薦修改由sharedMaterial返回的材質。如果你想修改渲染器的材質,使用material替代。
某公司的U3D筆試題