美文网首页
2018年9月10日.NET笔试面试题

2018年9月10日.NET笔试面试题

作者: 墨弄笔 | 来源:发表于2018-09-08 09:11 被阅读0次

    堆和栈的区别?

    • 栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义。
    • 局部值类型变量、值类型参数等都在栈内存中。
    • 堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

    不是说字符串是不可变的吗?string s="abc";s="123"; 不就是变了吗?

    • String是引用类型,变量中存放的是指针,即指向数据的地址。改变String类型变量中的内容,实际上是在堆内存中放入了一个新的字符串,并把这个字符串的地址赋值给了变量。
    • 在这段代码中,s原先指向一个String对象,内容是"abc",然后我们将s指向"123"
    • 这时的s不指向原来那个"abc"String对象了,而指向了另一个内容为"123"的String对象,原来那个对象还存在于内存之中,只是s这个变量不再指向它了。

    你对.net 的 GC 的理解。

    • GC是.Net 的垃圾收集器,可以进行内存资源的回收。
    • 程序员无需关心资源的回收,当一个对象没有任何引用的时候就可以被回收了。
    • 一个对象可以被回收并不意味着一定会被立即回收,GC会选择时机进行回收。
    • 可以调用GC.Collect()让GC立即回收。
    • GC 不能回收非托管资源,对于非托管资源一般都实现了IDisposable接口,然后使用using关键字进行资源> - 的回收。

    相关文章

      网友评论

          本文标题:2018年9月10日.NET笔试面试题

          本文链接:https://www.haomeiwen.com/subject/dsrkgftx.html