.NET问题库

 1. 值类型和引用类型的区别 
答:值类型就是一块内存空间,存的是数据本身,引用类型需要两块内存空间,一个是存地址,一个是存数据。 
 

2. ASP.Net 页面生命周期 ?
答:页请求,开始,页初始化,加载,验证,回发事件处理,呈现,卸载。

 

3.简述private,protected,public,internal

答 . private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。

 

4.string str = null 与string str = ""的区别

答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。

 

5.ADO.NET五大对象,作用
1、 Connection:与数据源建立连接。
2、 Command:对数据源执行SQL命令并返回结果。
3、 DataReader:读取数据源的数据,只允许对将数据源以只读、顺向的方式查看其中所存储的数据。DataReader对象还是一种非常节省资源的数据对象。
4、 DataAdapter:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet中,或根据DataSet中的数据绑定数据源。
5、 DataSet:内存中的数据库,是数据表的集合,它可以包含任意多个数据表。

 

6.ASP.NET 页面之间传递值的几种方式。

答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量- 3.使用Server.Transfer 4.使用Application

5.使用HttpContext的Item属性 6.使用文件 7.使用数据库 8.使用Cookie

 

7.请编程实现一个冒泡排序算法?

答:int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;P
array[j] = temp ;
}
}
}

 

8.string和stringbuilder两者的区别:

string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。stringBuilder是.net提供的动态创建string的高效方式,以克服string对象恒定性带来的性能影响。

对于简单的字符串连接操作,在性能上stringBuilder并不一定总是优于string。因为stringBuider对象创建代价较大,在字符串目标连接较少的情况下,过度滥用stringBuilder会导致性能的浪费,只有大量的或者无法预知次数的字符串操作,才考虑stringBuilder来实现。事实上,一般连接次数设置100次以内,根本看不出两者的性能差别。

 当修改字符串信息时,此时不许创建对象,可以使用stringBuilder对象。

 

9.多线程和异步有什么关系和区别?

多线程是实现异步的主要方式之一,异步并不等同于多线程。实现异步的方式还有很多,比如利用硬件的特性、使用进程或纤程等。在。NET中就有很多的异步编程支持,比如很多地方都有Begin***、End***的方法,就是一种异步编程支持,她内部有些是利用多线程,有些是利用硬件的特性来实现的异步编程。

 

10.线程池的优点有哪些?又有哪些不足? 
优点:减小线程创建和销毁的开销,可以复用线程;也从而减少了线程上下文切换的性能损失;在GC回收时,较少的线程更有利于GC的回收效率。 
缺点:线程池无法对一个线程有更多的精确的控制,如了解其运行状态等;不能设置线程的优先级;加入到线程池的任务(方法)不能有返回值;对于需要长期运行的任务就不适合线程池。 

 

11.什么是委托,事件是委托吗?

委托是C#新增的概念,在C++中没有。不过委托的概念与C++的函数指针比较相近。如图函数指针,委托可以引用一个或多个方法(静态或非静态)。委托比函数指针更为强大,同一个委托可以引用不止一个方法,而且语法更加清晰和好用。

事件是一种特殊的委托。

 

12.Finalize,Dispose()的区别

Finalize自动释放资源,Dispose()用于手动释放资源。
1、 Finalize只释放非托管资源;
2、 Dispose释放托管和非托管资源;
3、 重复调用Finalize和Dispose是没有问题的;
4、 Finalize和Dispose共享相同的资源释放策略,因此他们之间也是没有冲突的。

 

13.字段与属性有什么异同

字段用于直接存取数据,而属性本身不能够直接存取数据,它相当于包裹在字段外的一层壳,用于对其内部字段的访问进行权限控制。、

 

14.Session 有什么重大 BUG,微软提出了什么方法加以解决? 

答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,

可以用Sateserver或SQLServer数据库的方式存储Sessiion不过这种方式比较慢,而且无法捕获Session的END事件。

 

15.DateTime.Parse(myString); 这行代码有什么问题? 

答:有问题,当myString不能满足时间格式要求的时候,会引发异常,简要使用DateTime.TryParse().
同时,还需要注意到文化区域的设置,如果做代码规范检查,该语句也不符合规范,就是因为缺少文化区域的设置

 

 

 

posted @ 2017-03-30 10:33  风如你  阅读(136)  评论(0编辑  收藏  举报