Unity面試題部分高頻題目整理匯集

2021-02-20 遊戲學堂

  本文整理轉載了一些unity3d高頻面試題目,希望可以幫助到大家。限於個人水平有限,只附上一些參考答案。

數據結構和算法很重要,圖形學也很重要!

大的遊戲公司很看重個人基礎、綜合能力;

小公司看你實際工作能力,看你的Demo。

  1. 請簡述值類型與引用類型的區別

  答:區別:

  1)值類型存儲在內存棧中,引用類型數據存儲在內存堆中,而內存單元中存放的是堆中存放的地址。

  2)值類型存取快,引用類型存取慢。

  3)值類型表示實際數據,引用類型表示指向存儲在內存堆中的數據的指針和引用。

  4)棧的內存是自動釋放的,堆內存是.NET中會由GC來自動釋放。

  5)值類型繼承自System.ValueType,引用類型繼承自System.Object。

  可參考http://www.cnblogs.com/JimmyZhang/archive/2008/01/31/1059383.html

  2.C#中所有引用類型的基類是什麼

  答:引用類型的基類是System.Object 值類型的基類是System.ValueType

  同時,值類型也隱式繼承自System.Object

  3.請簡述ArrayList和List的主要區別

  答:ArrayList存在不安全類型『(ArrayList會把所有插入其中的數據都當做Object來處理)

  裝箱拆箱的操作(費時)

  List是接口,ArrayList是一個實現了該接口的類,可以被實例化。

  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 ls = new List(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/xuanmingzhiy ... 762011612115124188/

  反射個人認為,就是得到程序集中的屬性和方法。

  實現步驟:

  1)導入using System.Reflection;

  2)Assembly.Load("程序集")加載程序集,返回類型是一個Assembly

  3)foreach (Type type in assembly.GetTypes())

         {

              string t = type.Name;

         }

  得到程序集中所有類的名稱

  4)Type type = assembly.GetType("程序集.類名");獲取當前類的類型

  5)Activator.CreateInstance(type); 創建此類型實例

  6)MethodInfo mInfo = type.GetMethod("方法名");獲取當前方法

  7)mInfo.Invoke(null,方法參數);

  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.

  mono是.net的一個開源跨平臺工具,就類似java虛擬機,java本身不是跨平臺語言,但運行在虛擬機上就能夠實現了跨平臺。.net只能在windows下運行,mono可以實現跨平臺跑,

  可以運行於linux,Unix,Mac OS等。

  12.簡述unity3d支持的作為腳本的語言的名稱

  答:Unity的腳本語言基於Mono的.Net平臺上運行,可以使用.NET庫,這也為XML、資料庫、正則表達式等問題提供了很好的解決方案。

  Unity裡的腳本都會經過編譯,他們的運行速度也很快。這三種語言實際上的功能和運行速度是一樣的,區別主要體現在語言特性上。

  JavaScript:和網頁中常用的JavaScript不一樣,它編譯後的運行速度很快,語法方面也會有不少區別。

  C#

  Boo:可以看做是Python語言的變種,又糅合了Ruby和C#的特性,它是靜態類型語言

  13.Unity3D是否支持寫成多線程程序?如果支持的話需要注意什麼?

  答:參考http://www.unitymanual.com/3821.html

  僅能從主線程中訪問Unity3D的組件,對象和Unity3D系統調用

  支持:如果同時你要處理很多事情或者與Unity的對象互動小可以用thread,否則使用coroutine。

  注意:C#中有lock這個關鍵字,以確保只有一個線程可以在特定時間內訪問特定的對象

  14.Unity3D的協程和C#線程之間的區別是什麼?

  答:http://blog.csdn.net/kongbu0622/article/details/8775037

  多線程程序同時運行多個線程 ,而在任一指定時刻只有一個協程在運行,並且這個正在運行的協同程序只在必要時才被掛起。

  除主線程之外的線程無法訪問Unity3D的對象、組件、方法。

  Unity3d沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協同程序)和LoadLevelAsync(異步加載關卡)後臺加載場景的方法。 StartCoroutine為什麼叫協同程序呢,所謂協同,就是當你在StartCoroutine的函數體裡處理一段代碼時,利用yield語句等待執行結果,這期間不影響主程序的繼續執行,可以協同工作。而LoadLevelAsync則允許你在後臺加載新資源和場景,所以再利用協同,你就可以前臺用loading條或動畫提示玩家遊戲未卡死,同時後臺協同處理加載的事宜asynchronous[e ɪˈ s ɪŋ kr ə n ə s] .synchronous同步。

  15.U3D中用於記錄節點空間幾何信息的組件名稱,及其父類名稱

  答:Transform 父類是 Component

  16.簡述四元數的作用,四元數對歐拉角的優點?

  答:四元數用於表示旋轉

  相對歐拉角的優點:

  1)能進行增量旋轉

  2)避免萬向鎖

  3)給定方位的表達方式有兩種,互為負(歐拉角有無數種表達方式)

  17.向量的點乘、叉乘以及歸一化的意義?

  1)點乘描述了兩個向量的相似程度,結果越大兩向量越相似,還可表示投影

  2)叉乘得到的向量垂直於原來的兩個向量

  3)標準化向量:用在只關係方向,不關心大小的時候

  18.矩陣相乘的意義及注意點

  用於表示線性變換:旋轉、縮放、投影、平移、仿射

  注意矩陣的蠕變:誤差的積累

  19.為何大家都在行動裝置上尋求U3D原生GUI的替代方案

  不美觀,OnGUI很耗費時間,使用不方便

  20.請簡述如何在不同解析度下保持UI的一致性

  NGUI很好的解決了這一點,屏幕解析度的自適應性,原理就是計算出屏幕的寬高比跟原來的預設的屏幕解析度求出一個對比值,然後修改攝像機的size。

  原生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替代。

相關焦點

  • 熬夜整理了一份Android高頻面試題集錦+開源框架實戰PDF
    379頁的面試PDF。內容是從基礎到架構進階,包含了騰訊、百度、小米、阿里、樂視、美團、58、獵豹、360、新浪、搜狐等一線網際網路公司面試被問到的題目,涵蓋了初中高級安卓技術點。文章中所列主要為大綱部分,詳細內容可以在文末自行獲取哈!如果你熟練掌握本文中列出的知識點,相信將會大大增加你通過前兩輪技術面試的機率!這些內容都供大家參考,互相學習。
  • 錯題本怎麼整理?學霸與你分享錯題本整理方法
    本文是一位學霸分享的錯題本整理方法,有圖有真相哦~名師和學霸均強烈推薦錯題本學習法,藉助積微錯題本,完全杜絕抄錯、漏抄、圖形圖像、看不清等問題,一分鐘整理一道題。簡潔高效,讓每個學生都樂於使用!什麼樣的內容該整理起來?
  • LeetCode Top 100 高頻算法題 07:11. Container With Most Water
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題
  • LeetCode Top 100 高頻算法題 02:Add Two Numbers
    近期公眾號沒怎麼更新,這周末再和大家聊聊近期在字節的工作~LeetCode Top 100這個專欄對小夥伴找工作非常有幫助,所以這個專欄一定會繼續下去~LeetCode Top 100高頻算法題
  • LeetCode Top 100 高頻算法題 03:Longest Substring
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題。
  • LeetCode Top 100 高頻算法題 49. Group Anagrams
    由於公眾號做了改版,為了保證公眾號的文章可以準時推送到你手裡,大家記得點擊上方藍色」菜鳥名企夢「,將咱們的公眾號 加星標置頂 ,在此真誠的表示感謝~LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題。
  • Unity面試題精選(2)
    小編整理了一些Unity面試題目,希望可以幫助到你。面試官:抽象類和接口的區別?答:面試官:MeshCollider和其他Collider的一個主要不同點?面試官:Unity3d中的碰撞器和觸發器的區別?答:碰撞器是觸發器的載體,而觸發器只是碰撞器身上的一個屬性。
  • LeetCode Top 100 高頻算法題 05:Longest Palindromic Substring
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題
  • LeetCode Top 100 高頻算法題 21. Merge Two Sorted Lists
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題
  • Unity面試題精選(7)
    小編整理了一些Unity面試題目,希望可以幫助到你。面試官:簡述一下對象池,你覺得在FPS裡哪些東西適合使用對象池?面試官:CharacterController和Rigidbody的區別?面試官:簡述prefab的用處?答:在遊戲運行時實例化,prefab相當於一個模板,對你已經有的素材、腳本、參數做一個默認的配置,以便於以後的修改,同時prefab打包的內容簡化了導出的操作,便於團隊的交流。
  • 資源|備戰金九銀十,LeetCode高頻面試題合集
    而最高效的準備方式,不外乎刷題、刷題、刷題。刷題就不得不提 LeetCode 了~俗話說的好:LeetCode刷不好,一面都過不了。所以,今天就將一些 LeetCode 大廠高頻面試題整理成合集分享給大家,希望能助大家一臂之力~分享連結:https://www.turingtopia.com/article/details/64afe54fb4014475a24c47e0d1dbbaa1
  • 60道CPA高頻易錯題,給你整理好了
    現在該進入強化階段啦,此階段最重要的就是刷題。但是刷題一定要有效率、有目的地刷,不能貪多貪快。【東奧會計在線】為了幫助考生在考前有效提分,東奧會計在線小編整理了注會六個科目各10道高頻易錯考題,這60道題都是去年的高頻易錯題目。
  • LeetCode Top 100 高頻算法題45. Jump Game II
    由於公眾號做了改版,為了保證公眾號的文章可以準時推送到你手裡,大家記得點擊上方藍色」菜鳥名企夢「,將咱們的公眾號 加星標置頂 ,在此真誠的表示感謝~LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題。
  • 硬體工程師筆試面試必刷題庫02-硬體經典筆試題目整理(附答案)
    說明:網上能搜到的硬體工程師筆試面試的題庫雖然也有一些,但是有些題目太舊,也沒有更新,有的答案有錯誤,對初入行的工程師反而有誤導。因此,並產生了此題庫。此題庫精選網上能搜到的絕大多數硬體工程師筆試面試題庫,部分由網友提供。
  • LeetCode Top 100 高頻算法題 53. Maximum Subarray
    由於公眾號做了改版,為了保證公眾號的文章可以準時推送到你手裡,大家記得點擊上方藍色」菜鳥名企夢「,將咱們的公眾號 加星標置頂 ,在此真誠的表示感謝~LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題。
  • LeetCode Top 100 高頻算法題 15. 3Sum
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題。
  • 校招面試題:編寫 strcpy, strlen, strstr, atoi 等庫函數的題目
    實現 atoi,將一個字符串轉化為整數,代碼實現:注意: 這道題,表面雖然簡單,一般面試官雖然只是簡單的描述,其實這時候的面試官,卻暗中觀察你如何思考,考慮到了那些邊界數據,這才是這道題的重點.注意幾個測試用例: 1. 不規則輸入,但是有效,」-3924x8fc」,」 + 413」, "-0001"2.
  • LeetCode Top 100 高頻算法題42. Trapping Rain Water
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題。小編和實驗室同學之前面試找工作,也只刷了劍指offer和這top 100算法題,在實際面試中也遇到了很多LeetCode上的原題。
  • 2020部隊文職面試題目及答案:10月28日面試題
    【導讀】華圖廣西軍隊文職考試網同步華圖教育發布:2020部隊文職面試題目及答案:10月28日面試題,詳細信息請閱讀下文!考生反饋給圖兔的信息只有各省的人武部、幹休所等單位在10月28日-31日進行面試,這是入圍名單少部分人群的通知。 據了解大部份入圍考生是在11月份陸續進行面試甚至時間上會更晚。
  • LeetCode Top 100 高頻算法題 04:Median of Two Sorted Arrays
    LeetCode Top 100高頻算法題,即LeetCode上最高頻的100道求職面試算法題