微软(外包)面试题(一)

前段时间去微软(外包)参加了面试,觉得大公司就是不一样,重基础!人家为啥能做大,因为招人时,眼光放的远。

一些面试题,会分几次记录下来。

CLR方面:
1.什么是装箱、拆箱?
答:值类型和引用类型的转换。
装箱分3部:
1)分配内存空间。包括要装箱的值类型的空间、方法表、SynBlockIndex,其中后两者用来管理引用对象。
2)值复制。把堆栈中要装箱的值复制到堆上。
3)返回引用对象的引用。
拆箱也分3部:
1) 检查类型,确保引用类型是装箱的结果。
2)指针返回,返回要拆箱的引用类型中的值的地址。
3)字段拷贝,把引用类型中的字段拷贝到堆栈中。

2.垃圾收集机制?
答:CLR实现的自动内存管理。需要清楚的几点:
1)什么被认为是可回收的对象?
GC采用一定的算法遍历所有的对象,找出可达对象和不可达对象,不可达对象是可回收的对象。
2)什么时候回收?
通常情况下:内存不足溢出时,确切的说,是第一代对象已满的时候。
3)如何回收?
垃圾收集进程来释放不可达对象的内存空间。
4)回收完后,还需要做什么?
避免托管堆上的内存碎片,重新分配内存,压缩托管堆。
5)避免垃圾回收带来的性能影响,采用代龄机制。

posted @ 2009-04-23 22:02  星晴  阅读(1250)  评论(4编辑  收藏  举报