首页 > 代码库 > .NET技术类面试、笔试题汇总(13~19)
.NET技术类面试、笔试题汇总(13~19)
13、能用foreach遍历访问的对象的要求
14、GC是什么?为什么要有GC?
15、值类型和引用类型的区别?
16、C#中的接口和类有什么异同?
17、抽象类(abstract class)和接口(interface)有什么区别?
18、是否可以继承Srtring类?
19、下面程序的运行结果:
static void Main(string[] args)
{
Console.WriteLine(GetIt());
Console.ReadKey();
}
static int GetIt()
{
int i = 8;
try
{
i++;
Console.WriteLine("a");
return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
}
finally
{
Console.WriteLine("b");
i++;
}
}
13、需要实现IEnumerable接口或者GetEnumerator方法的类型
14、GC是垃圾收集器(Garbage Collection)。程序员不必担心内存管理,因为垃圾收集会自动进行管理。GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须有程序员手工回收,Filestream和SqlConnection需要程序员调用Dispose进行资源回收。要请求垃圾收集,可以调用GC.Collect()。当一个对象没有任何指向的时候就可以被回收,但不一定会立即回收。
15、1)将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2)值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口。
3)值类型不可能包含null值,然而,可空类型功能允许将null赋给值类型。
4)每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
16、不同点:不能直接实例化接口,接口不包含方法的实现,接口可以实现多继承,类只能单继承,类定义可以在不同的源文件之间拆分
相同点:接口,类和结构体都可以从多个接口继承,接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口和类包含,事件,索引器,方法和属性。
补充知识:接口只能定义方法(只能定义行为,不能定义实现也就是字段),因为事件,索引器,属性本质上都是方法,所以接口中也可以定义事件,索引器,属性。
17、相同点:都不能被实例化,都可以通过继承实现其抽象方法。
不同点:接口支持多继承;抽象类不能实现多继承;
接口接口只能定义行为:抽象类既可以定义行为,还可能提供实现;
接口只包含方法(Method),事件(Event),索引器(Index),属性(Proprety)的签名,但不能定义字 段和包含实现的方法;
抽象类可以定义字段、属性、包含有实现的方法;
接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
18、String类是sealed类故不可以继承。
19、运行结果是 a b 9 程序由主函数开始执行Console.WriteLine(GetIt());跳到GetIt()方法执行,i++ i=9;Console.WriteLine("a");输出a, return i,然后执行finally里面的代码,输出b,最后输出9。
.NET技术类面试、笔试题汇总(13~19)