一. C#中值类型引用类型的区别?
A:

  1. 值类型的数据存储在内存的中;引用类型的数据存储在内存的中,而内存单元中只存放堆中对象的地址

  2. 值类型存取速度快,引用类型存取速度慢

  3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用

  4. 值类型继承自System.ValueType,引用类型继承自System.Object

  5. 栈的内存分配是自动释放;而堆在.NET中会有GC来释放

  6. 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用

二. C#中的协程并发的区别?
A:
协程在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程是在每帧结束之后去检测yield的条件是否满足
并发是多线程的,逻辑同时运行。

三. 面向组件编程和面向对象的Java的区别?
A:
面向对象与面向组件的区别在于,面向对象编程着眼于程序集或模块中类之间的关系,而面向组件着眼于独立工作的可替换的程序集或模块,并且无需了解其内部工作原理。面向组件的开发人员大部分时间花在设计接口上,而不是花力气设计复杂的类层次结构。
因为面向组件技术是对面向对象技术的进一步发展,所以面向对象的设计原则也适用于面向组件。参考文章

四. Unity中如何减少GC?
A:

  1. 字符串连接的处理。因为将两个字符串连接的过程,其实是生成一个新的字符串的过程。而之前的旧的字符串自然而然就成为了垃圾。而作为引用类型的字符串,其空间是在堆上分配的,被弃置的旧的字符串的空间会被GC当做垃圾回收。
  2. 尽量不要使用foreach,而是使用for。foreach其实会涉及到迭代器的使用,而据传说每一次循环所产生的迭代器会带来24 Bytes的垃圾。那么循环10次就是240Bytes。
  3. 不要直接访问gameobject的tag属性。比如if (go.tag == “human”)最好换成if (go.CompareTag (“human”))。因为访问物体的tag属性会在堆上额外的分配空间。如果在循环中这么处理,留下的垃圾就可想而知了。
  4. 使用“池”,以实现空间的重复利用
  5. 最好不用LINQ的命令,因为它们会分配临时的空间,同样也是GC收集的目标。而且我很讨厌LINQ的一点就是它有可能在某些情况下无法很好的进行AOT编译。比如“OrderBy”会生成内部的泛型类“OrderedEnumerable”。这在AOT编译时是无法进行的,因为它只是在OrderBy的方法中才使用。所以如果你使用了OrderBy,那么在IOS平台上也许会报错。(p.s. AoTtype.cs解决iOS编译的问题,这里又看到了相关内容..)
    参考文章

2016年4月面试题(Unity)的更多相关文章

  1. 2016年5月面试题(Unity&iOS)

    NGUI的DrawCall drawcall定义:对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西. List在内存中连续的空间保存 List是线性直接存储类型 mipMap是 ...

  2. 摩根斯坦利 - 2016年09月8日 面试题 - HashMap

    摩根斯坦利 - 2016年09月8日 面试题: 给定一个 Map<Person, Object> map = new HashMap<Person, Object>(); 放入 ...

  3. 2016年12月31日 星期六 --出埃及记 Exodus 21:26

    2016年12月31日 星期六 --出埃及记 Exodus 21:26 "If a man hits a manservant or maidservant in the eye and d ...

  4. 2016年12月30日 星期五 --出埃及记 Exodus 21:25

    2016年12月30日 星期五 --出埃及记 Exodus 21:25 burn for burn, wound for wound, bruise for bruise.以烙还烙,以伤还伤,以打还打 ...

  5. 2016年12月29日 星期四 --出埃及记 Exodus 21:24

    2016年12月29日 星期四 --出埃及记 Exodus 21:24 eye for eye, tooth for tooth, hand for hand, foot for foot,以眼还眼, ...

  6. 2016年12月28日 星期三 --出埃及记 Exodus 21:23

    2016年12月28日 星期三 --出埃及记 Exodus 21:23 But if there is serious injury, you are to take life for life,若有 ...

  7. 2016年12月27日 星期二 --出埃及记 Exodus 21:22

    2016年12月27日 星期二 --出埃及记 Exodus 21:22 "If men who are fighting hit a pregnant woman and she gives ...

  8. 2016年2月16日开始,每天一篇,记录学习心得,【基本技能篇】>>开篇《如何阅读一本书——心得》

    如何阅读一本书——心得 ——2016年2月12日 要达到阅读的所有目的,就必须在阅读不同书籍的时候,运用适当的不同速度.读的太快或太慢,都一无所获. 四个阅读层次:①基础阅读,具有基本阅读的能力,包括 ...

  9. Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

    array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...

随机推荐

  1. MSP430FR5739串口程序

    今天急着用这个片子的串口,匆忙中调试串口也话费了一段时间,在网上下了一个程序,忽然就把所有问题搞清楚了,只是中断就看着头文件中寄存器写的,虽然通讯正常,不过不确定有没有写错.代码如下: #includ ...

  2. 394. Decode String

    [题目] Total Accepted: 10087 Total Submissions: 25510 Difficulty: Medium Contributors: Admin Given an ...

  3. css 变量与javascript结合

    <div onClick="test('yellow')"> CSS Variable</div> ================CSS :root{ - ...

  4. linux系统中查看系统位数(转载)

    查看系统多少位网上很多种说话   ### getconf WORD_BIT 错误的 这3个是对的        getconf LONG_BIT    echo $HOSTTYPE uname -a  ...

  5. java.net.UnknownHostException: Unable to resolve host "api102.meishi.cc": No address associated with hostname

    有三个原因: 清单文件Mei加网络访问权限 在主线程中执行了耗操作 你没开wifi

  6. 面试复习(C++)之堆排序

    #include <iostream> using namespace std; void Maxheap(int *a,int i,int heapSize)//最大数调整 { +;// ...

  7. redis-JedisPoolConfig配置

    项目之前要使用redis这个临时缓存,下面是从别的大神那里转来的一些基本配置属性的说明:   JedisPoolConfig config = new JedisPoolConfig(); //连接耗 ...

  8. AX2012自定义注释脚本开发

    废话少说,直接进入主题: 1.在类xppSource中增加一个类似的方法: eg. Source ifElse(Source _condition = '', Source _ifStatement ...

  9. C++虚函数和虚函数表

    前导 在上面的博文中描述了基类中存在虚函数时,基类和派生类中虚函数表的结构. 在派生类也定义了虚函数时,函数表又是怎样的结构呢? 先看下面的示例代码: #include <iostream> ...

  10. HBase查找一条数据的过程

    HBase中的Client如何路由到正确的RegionServer 在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的 Regi ...