[Unity3D]蓝港面试题
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<Int>的主要差别
答:
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<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.请简述keywordSealed用在类声明和函数声明时的作用
答:
类声明时可防止其它类继承此类,在方法中声明则可防止派生类重写此方法。
9.请简述private,public,protected,internal的差别
答:
public:对不论什么类和成员都公开,无限制訪问
private:仅对该类公开
protected:对该类和其派生类公开
internal:仅仅能在包括该类的程序集中訪问该类
protected internal:protected + internal
10.反射的实现原理?
答:审查元数据并收集关于它的类型信息的能力。
參考http://blog.163.com/xuanmingzhiyou@yeah/blog/static/1424776762011612115124188/
反射个人觉得,就是得到程序集中的属性和方法。
实现步骤:
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这个keyword,以确保仅仅有一个线程能够在特定时间内訪问特定的对象
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.怎样安全的在不同project间安全地迁移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将改变全部物体使用这个材质的外观,而且也改变储存在project里的材质设置。
不推荐改动由sharedMaterial返回的材质。假设你想改动渲染器的材质,使用material替代。
[Unity3D]蓝港面试题的更多相关文章
- 去蓝港在线面试Unity3D的笔试题。难吗?知道答案的在评论里写出来分享
前一阵子去蓝港面试unity3d程序,在前台登记以后被领到一个吧台前面填2张个人信息表,之后有人送来笔试题,做了1个小时,感觉挺难的.之后被带到下面面试,面试的是一个年龄稍大的(可能是项目经理或者技术 ...
- unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新
本文献给,想踏入3D游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...
- (转载)Unity3D所要知道的基础知识体系大纲,可以对照着学习,不定期更新
本文献给,想踏入3D游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...
- [转]unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新 ... ... ... ...
本文献给,想踏入3d游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...
- .NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来
简洁.优雅.高效的C#语言,神一样的C#创始人Anders Hejlsberg,async/await编译器级异步语法,N年前就有的lambda表达式,.NET Native媲美C++的原生编译性能, ...
- 2018 dnc .NET Core、.NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来
简洁.优雅.高效的C#语言,神一样的C#创始人Anders Hejlsberg,async/await编译器级异步语法,N年前就有的lambda表达式,.NET Native媲美C++的原生编译性能, ...
- 浅谈千万级PV/IP规模高性能高并发网站架构(转自老男孩)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/736710 如果把来 ...
- C 语言学习:班级同学的博客地址列表
这里整理出本班级同学的博客地址.请各位同学之间相互帮助,尽快将博客都建立起来. 编号 学号 姓名 Cnblogs昵称 博客地址 Coding.net 地址 1 160809401 付胤 付胤 http ...
- Azure China (1) Azure公有云落地中国
<Windows Azure Platform 系列文章目录> 微软公有云Microsoft Azure已经落地中国,官方网址:http://www.windowsazure.cn/. 在 ...
随机推荐
- Transparency Tutorial with C# - Part 1
Download demo project - 4 Kb Download source - 6 Kb Download demo project - 5 Kb Download source - 6 ...
- Java基础知识强化41:StringBuffer类之StringBuffer的反转功能
1. StringBuffer 的反转功能: public StringBuffer reverse(): 2. 案例演示: package cn.itcast_05; /* * StringBuff ...
- CentOS NFS的安装配置、启动及mount挂载方法
一.环境介绍: 服务器:centos 192.168.1.225 客户端:centos 192.168.1.226 二.安装: NFS的安装配置:centos 5 : yum -y install n ...
- Windows下Node.js开发环境搭建-合适的开发环境
1)生产环境中的Node.js应用 Windows + Linus 2)虚拟机工具 VirtualBox 虚拟机CentOS安装 3)xShell与xFtp(windows到linux文件传输) 4) ...
- mac os 10.10下安装android studio问题:android studio was unable to find a valid jvm
友情提示:小编在做到这一步前,已经确定jdk和环境变量已经安装并配置无误,关于怎么检查java环境变量请自行百度. 原因分析:android studio安装包下的info.plist配置文件中有个关 ...
- Edwin windows下基本命令:
Ctrl-Alt-z: 对区域内所有代码求值. Ctrl-x Ctrl-e: 对光标左边或上一个表达式求值. Ctrl-c Ctrl-x: 中断当前求值. Ctrl-a: 移动到行首. Ctrl-e: ...
- SQL约束脚本的用法
1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码 要对一个列加主键,列名为id,表名为emp 格式为:a ...
- php 图片上传预览(转)
网上找的图片上传预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- 推荐Mac软件Alfred
实在忍不住推荐这个软件了, 身边的朋友们逐渐都在使用Mac OS了,每次我都会推荐Alfred这个软件.推荐来推荐去挺蛮烦的,干脆写篇文章, 下次有朋友新入手Macbook,我就直接附送本文章链接一枚 ...
- 转载自php 大牛的学习计划 人生规划
2012年偶决定开始写博客了,不为别的,就希望可以通过博客记录我的成长历程同时也希望可以帮助一些刚毕业,刚入行业的兄弟姐们们.我们是一群充满浮躁.抱怨.迷茫的程序猿,想一想3年就这么过去了,社会变得更 ...