unity算法面试_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的主要区别

答: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.下列代码在运行中会产生几个临时对象?

答:其实在C#中第一行是会出错的(Java中倒是可行)。应该这样初始化:

string b = new string(new char[]{'a','b','c'});

7.下列代码在运行中会发生什么问题?如何避免?

答:会产生运行时错误,因为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/

反射个人认为,就是得到程序集中的属性和方法。

实现步骤:

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#

<
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值