.net面试常见问题
1. 静态成员和非静态成员的区别?
使用 static 修饰符声明的成员是静态成员,静态成员变量在类被实例化(装载)时创建,通过类进行访问;默认静态构造函数在类被实例化的时候被调用; 不带有 static 修饰符声明的变量称非静态变量,在对象被实例化时创建,通过对象进行访问; 一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值;
2. 类和结构的区别?
类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存;类有构造和析构函数;类可以继承和被继承;结构是值类型在栈上分配,结构的赋值将分配产生一个新的对象;结构没有构造函数,但可以添加。结构没有析构函数;结构不可以继承自另一个结构或被继承,但和类一样可以实现接口。
3. 接口可以包含哪些成员?
接口可以包含属性、方法、索引指示器和事件,但不能包含常量、域、操作符、构造函数和析构函数,而且也不能包含任何静态成员;
4. 抽象类和接口的区别?
抽象类(abstract class)可以包含功能定义和实现,接口(interface)只能包含功能定义;抽象类是从一系列相关对象中抽象出来的概念反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定反映的是事物的外部特性;抽象类一般用用不稳定的设计;接口用用稳定的设计;
5.StringBuilder 和 String 的区别?
String 在进行运算时会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String;
6. params 有什么用?
params 关键字在方法成员的参数列表中使用,为该方法提供了参数个数可变的能力;它在只能出现一次并且不能在其后再有参数定义。
7.out和ref有何相同和区别之处?
out和ref都用于在方法中返回多个值。但out作为输出参数使用且out参数必须是方法最后一个参数,用out传递的参数在方法内部初始化和赋值;ref作为输出参数使用且ref参数必须是方法最后一个参数使用引用传递,使用ref传递的参数必须在方法调用前进行初始化。
8.什么是Appdomain?
Appdomain是应用程序域,它是一个应用程序在其中独立执行的一个环境;应用程域为托管代码提供隔离、卸载和安全边界。多个应用程序域可以在一个进程中运行,一个应用程序域可以运行多个线程。
9.什么是委托?什么是事件?
委托是具有相同方法签名且安全的函数引用。事件是一种特殊的委托。
10.析构函数和IDispose接口有什么不同?
析构函数的执行会延迟对象最终从内存中删除的时间,没有析构器的对象在GC的第一次处理中从内从中删除,但有析构函数的对象需要两次才能从内存中删除,第一次调用析构函数时第二次才从内存中删除对象。IDispose接口为释放非托管资源提供了实现机制,避免了析构函数与GC固有的问题。推荐使用IDispose接口代替析构函数。
11.什么是泛型?
泛型是性能更好且类型安全的二进制代码复用机制。
12.什么是装箱?什么是拆箱?
装箱是把值类型转化为引用类型;拆箱是把引用类型转换为值类型。
13.什么是反射?
反射是在运行时刻获得类或程序集元数据的一种方法或手段。
14.什么是序列化和反序列化?如何使一个类可序列化?
序列化是.net的运行时环境用来支持用户定义类型的流化的机制。它是将对象实例的状态存储到存储媒体的过程。序列化的目的:使用某种形式使自定义类型持久化;将对象从一个地方传递到另外一个地方。反序列化是序列化的逆过程。要使一个类变为可序列化的可通过给类添加 [SerializableAttribute]特性或实现ISerializable接口。.net中可通过BinaryFormatter、SoapFormatter、XmlSerializer实现序列化。
15.C#中能否使用指针请说明。
可以使用指针使用是要在前边加上unsafe
16. HashMap和Hashtable区别?
HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。
17.被称为SOA的三驾马车是什么?
UDDI、WSDL、SOAP被称为SOA的三驾马车,UDDI统一发现、描述和集成,是一套基于web的、分布式的,为web服务提供信息注册和web服务能够被发现并访问的协议标准。WSDL是一种用来描述web服务和说明如何与web服务进行通讯的xml语言。WSDL包含以下元素:Type:数据类型定义;message:要传递的数据;part:传递的参数;Operation:服务支持的操作的抽象描述;Binding:特定端口类型的具体协议和数据格式规范 Endpoint:绑定和网络地址的组合。 Service:相关端点的集合,包括其关联的接口、操作、消息等。SOAP是轻量的、简单的、基于xml的、与平台无关的对象交换协议。一个SOAP包括四个部分envelop:描述消息的内容是什么,数据是谁发送的,谁应当接收并处理以及如何处理他们的框架;encodingrule:定义了一种序列化机制,用户交换数据的应用程序需要使用的数据类型的实例;RPC:表示过程调用和应答的协定;bing:底层协议交换信息。UDDI解决了如何注册服务和发现服务,WSDL解决了如果获得服务元数据并进行服务调用,SOAP解决了服务与服务之间或服务与服务消费者之间如何通过消息交换实现调用。
18.Remoting和WebService的区别是什么?
webservice使用SOAP通过消息机制实现服务调用和数据交换,Remoting使用RPC实现服务调用和数据交换;WebService能够实现不同平台的互操作性,而Remoting只能适用用.net开发的应用;webservice的效率比remoting低;在部署时remoting会存在被防火墙阻挡的问题,而webservice则会。
19. 强数据类型和弱数据类型有什么区别?
强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言。弱类型不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言。
浙公网安备 33010602011771号