.NET面试题及解答
1.error和exception有什么区别?
Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。 Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
2.List, Set, Map是否继承自Collection接口?
List、Set是,Map不是
3.abstract class和interface有什么区别?
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
下面接着再说说两者在应用上的区别:
接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用
4.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
不可以
5.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
全部可以
6.启动一个线程是用run()还是start()?
Thread t = new Thread(new ThreadStart(function()));
t.start();
7. 构造器Constructor是否可被override?
不能重写,只能重载(overload)
8.是否可以继承String类?
String为密封类,无法继承
9. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
该对象其他synchronized方法不能进入,但它的非synchronized方法是可以访问的
10. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
要执行,在return前
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
在转去之前,try中先把要返回的结果存放到不同于a的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量a进行了改变,但是不会影响返回结果。它应该使用栈保存返回值
11. 编程题: 用最有效率的方法算出2乘以8等於几?
2<<3
12. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对。两个对象值相同(x.equals(y) == true),则一定有相同的hash code。
13. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
值传递。该值指向该对象
14. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
15. 写一个Singleton出来。
public class Singleton
{
public static Singleton singleton = new Singleton();
/*
* 饿汉式,线程同步
*/
public static synchronized Singleton getInstance()
{
return singleton;
}
}
public class Singleton
{
public static Singleton singleton;
/*
* 懒汉式,线程同步
*/
public static synchronized Singleton getInstance()
{
if(singleton == null)
{
singleton = new Singleton();
}
return singleton;
}
}
数据库方面
16. 存储过程和函数的区别
本质上没区别。只是函数有限制只能返回一个标量,而存储过程可以返回多个。并且函数是可以嵌入在SQL中使用的,可以在SELECT等SQL语句中调用,而存储过程不行。执行的本质都一样。
17. 事务是什么?
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
。事务由四个特性ACID,原子性、一致性、隔离性和永远性。
18. 游标的作用?如何知道游标已经到了最后?
游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。
19. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。 语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次
20. 请说出强名的含义
强名称由程序集的标识——其简单文本名称、版本号和区域性信息(如果提供)——加上公钥和数字签名组成。强名称是使用相应的私钥,通过程序集文件生成的。
21. 请列出c#中几种循环的方法,并指出他们的不同
while, do while, for, foreach
22. SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
SELECT @@identity
23. 您在什么情况下会用到虚方法?它与接口有什么不同?
虚方法:使用虚函数就是在父类中把子类中共有的但却易于变化或者不清楚的特征抽取出来,作为子类需要去重新实现的操作(override)。
两种不同的实现多态的模式。接口:Like A ;虚函数:IS A。
24. 怎样理解静态变量?
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束
25. 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
有三种方法
1.QueryString
例: default.aspx?id=1
2.FormsAuthentication
例:配置文件添加结点,利用FormsAuthentication 读取
3.this.Server.Transfer
服务器重定向
26. 微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
1. 为应用系统提供了公用的配置管理解决方案,允许应用程序方便灵活地从不同配置存储读写配置信息
2. 隔离应用程序和配置数据的物理存储位置(Storage Location)
Storage Providers: 允许从不同的物理存储读写信息(如SQL/XML)
Transformers:将读取的配置数据经转换器转换为结构化数据
3.内置了XML Storage Provider和XML Transformer
也能扩展为对纯数据库的支持
4.改善安全性 (支持加密保存)
5.配置文件监控器( watchers) 能够监测到配置文件的变化并发出事件通知
6.增强设计时(Design-Time)的易用性
27. 请列举一些您用到过的设计模式以及在什么情况下使用该模式?
28. 您对WebService的体会?
Web Service的主要目的就是实现跨平台的可操作性。
Web Service的优势:1.穿透防火墙进行通信.2.应用程序的集成.
Web Service对于远程调用是个最优的选择,但要是相对于本机,反而消耗的资源更多。
29. 通过超链接怎样传递中文参数?请给出code
进行编码和解码
string urlFmt="...?a={0}";
url = string.Format(urlFmt, Server.UrlEncoding("测试"));
30. 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?请给出sample code
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
31. 有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.请给出code
1、设为public,直接调用
2、反射
32. 如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.
33. A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.
34. 写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“,”、“.”,对其设计测试用例。
35. 什么是反射?
36. 用Singleton如何写设计模式
37. 什么是Application Pool?
38. 链表和数组的区别,各有什么优缺点
39. Remoting在客户端服务器怎么实现?
40. 什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?
41. 使用什么工具来调用存储过程
42. 什么是Web Service?
43. Socket怎么实现?(给出C# code)