.net笔试题

1.简述一下Application对象的作用。

答案注释:Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在 Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和 Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性 能瓶颈.因此最好不要用此对象保存大的数据集合。

 

2.简述一下Session对象的作用。

答案注释:Session用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在 Web服务器内容中,保存的数据量可大可小.Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一 段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还

 

3.简述一下ApplicationSession状态的区别

答案注释:简单的说,Application是应用程序级别的状态存储,Session是会话级别的状态存储。

另外作用域不同,Application对象针对所有用户都生效Session对象则相反,每个用户都有自己的Session对象,它的生命周期起始于服 务器产生对用户请求页面的响应,终止于用户断开与服务器的连接。由于ApplicationSession状态都存储在内存中,但是当服务器重新启动 时,保留的状态就会消失了,为了保留其状态,就必须将状态保存到数据库。

 

4.简述一下Cookie对象及其作用。

答案注释:Cookie是存储在客户端文件系统的文本文件中或客户端浏览器对话的内存中的少量数据,它主要用来跟踪数据设置。

Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设 置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远 不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持 Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性。

 

5.简述一下ViewState的特点以及作用。

答案注释:ViewState 常用于保存单个用户的状态信息,有效期等于页面的生存期。ViewState容器可以保持大量的数据,但是必须谨慎使用,因为过多使用会影响应用程序的性 能。所有Web服务器控件都使用ViewState在页面回发期音保存自己的状态信息。如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的 ViewState,避免不必要的资源浪费。通过给@Page指令添加“EnableViewState=false”属性可以禁止整个页面的 ViewState

 

6.简述一下什么隐藏域。

答案注释:Hidden控件是属于HTML类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会在 用户端的浏览器中显示,始终处于隐藏状态。但是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,因此在服务器端可以使用Value属性获 取或保存一些数据信息。

 

7.简述一下什么是查询字符串,以及其特点。

答案注释:查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于URL的长度有一定的限制,因此不能传递太大的信息,加外安全性也不是很好。

 

8.简述一下Cache对象的特点。

答案注释:Cache对象用于在HTTP请求间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。它允许将频繁访问的大量服务器资源存储在内存 中,当用户发出相同的请求后服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每个应用程序专用的, 其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其Cache对象的实例。

 

9.结构和类有什么相似处和区别

答案注释:结构是值类型,而类是引用类型。

向方法传递结构时,结构是通过传值方式传递的,而类是作为引用传递的

与类不同,结构的实例化可以不使用 new 运算符

结构可以声明构造函数,但它们必须带参数

一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object

不能在结构中初始化实例字段

 

10. 定义结构体类型的格式为:

答案注释:struct <结构体类型名>

{

<成员类型1> <成员名1>;

<成员类型2> <成员名2>;

<成员类型n> <成员名n>;

};

11.什么是枚举?

答案注释:枚举是一个指定的常数,是一组已命名的数值常量。枚举是值类型的一种特殊形式。枚举从System.Enum继承而来

12.ContinueBreak的区别是什么?

答案注释:Continue是中断本次循环,进入一下次的循环

Break是中断整个循环

13.while dowhile循环的区别?

答案注释:While循环先判断条件是否满足再执行,而dowhile先执行然后判断条件是否成立。

14.方法的签名是指 ?

答案注释:方法名和该方法的参数列表,类型,大小,位置。

15.请简述C#中结构与类的区别?

答案注释:数据类型不同:结构是值类型,值类型在堆栈上分配地址,所有的基类型都是结构类型,类是引用类型,引用类型在堆上分配地址。

继承性:结构不能从另外一个结构或者类继承,本身也不能被继承,类完全可扩展的,除非显示的声明 sealed,否则类可以继承其他类和接口,自身也能被继承,虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样

内部结构:结构没有默认的构造函数,但是可以添加构造函数 ,没有析构函数,没有 abstract 和 sealed(因为不能继承,不能有 protected 修饰符,可以不使用 new 初始化 ,在结构中初始化实例字段是错误的。类有默认的构造函数 ,有析构函数,可以使用 abstract 和 sealed,有 protected 修饰符,必须使用 new 初始化。

16.静态成员和非静态成员的区别?

答案注释:静态成员用static修饰符声明,在类被实例化时,通过类进行访问,不带有static修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一静态变量都是一个值,同一个类的不同实例的同一非静态变量可以是不同的值。

17.C#访问修饰符有哪些,分别有什么作用?

答案注释:public:访问不受限制。

protected:访问仅限于包含类或从包含类派生的类型。

Internal:访问仅限于当前程序集。

protected internal:访问仅限于当前程序集或从包含类派生的类型。

private:访问仅限于包含类型。

18.C#中类可以实现多继承吗?通过什么方式实现呢?

答案注释:C#中类不能够多继承,必须通过接口实现。

19.继承是面向对象编程的一个重要的概念.请简述继承的概念和优点.

答案注释:继承:一个类可以有能力直接从另一个类获得其代码和数据,派生类从基类那里获得其所有成员。

优点:使用继承无需从头开始创建新类,便可以在现有类的基础上添加新方法、属性和事件(事件是对用户操作)的响应。,既省时又省力。

20.说明base关键字、new关键字和override关键字各自的作用。

答案注释:关键字base,用于派生类的构造函数显示调用基类构造函数。

new访问修饰符用于显示隐藏继承自基类的成员,即如果派生的类成员的名称与基类成员名称相同,new关键字会将派生类成员识别为一个全新的成员。

关键字override用于修改方法,具有override关键字修饰的方法是对基类中同名方法的新实现,

1.Sealed修饰符是干什么的?

答案注释:表示密封类,用于类时表明该类不能被继承,不能和abstract同时使用,因为这两个修饰符在含义上互相排斥,用于方法和属性时,表示该方法 或属性不能再被继承,必须和override关键字一起使用,因为使用sealed修饰符的方法或属性肯定是基类中相应的虚成员

21.简述抽象类的定义以及在C#编程语言中,抽象类的作用是什么?

答案注释:有时,我们只需要继承某个特定类,但不需要实例化该类的对象。这样的类成为抽象基类。C#允许通过在类中添加abstract关键字来创建抽象基类。

   作用在抽象基类中,可以指定一个方法而不指定其代码主体。这意味着抽象基类保存着方法的定义,而方法的实际实现则写在派生类中

22.声明抽象方法注意一下几点?

答案注释:1.抽象基类除了抽象方法外,还可以包含已实现的方法。 2.操作需要用abstract关键字来标识。  3.操作的定义始终已分号结束。

23.简述属性的定义及其作用?

答案注释:属性是一种用于访问对象或类的特性的成员,停供了数据的封装性和安全

性。

24.简述索引器的定义及其作用?

答案注释:索引器是C#的简单组件,使用索引器,可以用索引数组的方式来索引对象,

索引器提供了与数组访问相类似的类成员访问方式。

25.简述索引器和属性之间的区别?

答案注释:属性通过名称标识。索引器通过签名标识。

属性通过简单名称或成员访问来访问。索引器通过元素访问来访问。

属性可以为静态成员或实例成员。索引器必须为实例成员。

属性的get 访问器没有参数。 索引器的 get 访问器具有与索引器相同的形参

表。属性的 set 访问器包含隐式 value 参数。除了 value 参数外,索引器的 set

访问器还具有与索引器相同的形参表。

26.什么是迭代器,运用迭代器有什么好处。

答案注释:迭代器是 C# 2.0 中的新功能。迭代器是方法、get 访问器或运算符,它使

能够在类或结构中支持 foreach 迭代,而不必实现整个 IEnumerable 接口。只

需提供一个迭代器,即可遍历类中的数据结构,它的优点就是可以是实现容器

类和自定义集合的循环。

27.定义一个多路委托有几个步骤

答案注释:定义一个委托类型

编写具有相同签名方法作为委托

创建委托对象,将它绑定到需要通过委托调用的第一个方法

创建另一个委托对象,绑定到下一个需要调用的方法

可用+,-,+=或-=操作符,合并成一个集成的多播委托

28.简述创建事件的过程

答案注释:定义事件

   给对象预订该事件

   将该事件(当它发生时)通知订户

29.什么是多播委托?

答案注释:多播委托也是一个委托,它可以调用多个方法,只要这些方法的签名与委托的定义相同。多播委托的概念是委托和事件编程之间的门槛,多播委托是通过 对方法的委托进行组合而创建的。组合多个委托,可用+,-,+=或-=操作符。要让一个委托调用多个方法,可以用+或+=操作符为该委托增加方法。要减少 一个多播委托持有的方法,可以使用-或-=操作符。

30.数组包括哪些种类?

答案注释:一维、多维、交错。

 

31.二维数组的Length得到的是?

答案注释:成员个数

 

32.二维数组与交错数组有什么区别?

答案注释:二维数组的每一行成员数相同,交错数组的每一行成员数有可能不同。

 

33.简述常见的数组声明及赋值的方法

答案注释:方法一:

int[] arr1 = new int[3];

arr1[0]=1;

arr1[2] = 2;

arr1[1] = 3;

 

方法二:

int arr2 = new int[3] { 1, 2, 3 };

 

方法三:

int aar3 = new int[] { 1, 2, 3 };

34.StringStringBuilder有什么区别

答案注释:在.NETString是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改变,也就是你不可能改变一个字符串的值

String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样 就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。

35.字符串的比较有几种?分别举例说明

答案注释:String 类有四种方法:Compare( )CompareTo( )CompareOrdinal( )Equals( )

Compare( )方法是CompareTo( )方法的静态版本。只要使用“=”运算符,就能使用Equals( )方法,CompareOrdinal( )方法对两个字符串比较不考本地语言与文件。

36.string s = abcdeabcdeabcde;

string[] sArray = s.Split(c);

foreach (string i in sArray)

Console.WriteLine(i.ToString());

输出的结果是:

答案注释:ab

deab

deab

de

 

37.请说明foreach的用法

答案注释:foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。此语句的形式如下:

foreach (type identifier in expression) statement

若要循环访问集合,集合必须满足特定的要求。集合类型:

必须是 interfaceclass 或 struct

必须包括返回类型的名为 GetEnumerator 的实例方法

 

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

答案注释:

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] ;

array[j] = temp ;

}

}

}

1.C#中,string str = null 与 string str =””,请尽量用文字说明区别。

答案注释:string str =””初始化对象分配空间而string str=null初始化对象

39.什么是集合?

答案注释:NET Framework 提供了用于数据存储和检索的专用类。这些类提供对堆栈、队列、列表和哈希表的支持。大多数集合类实现相同的接口,可继承这些接口来创建适应更为专业的数据存储需要的新集合类

40.可以创建自已的异常吗?

答案注释:可以,要创建自定义的异常类型,编写派生自Exception的类即可。

41.什么是异常处理?为什么需要异常处理?

答案注释:一个良好且强大的程序的标志是为意外情况作好准备并在出现意外情况时能够恢复。在程序编译或执行的任何时候都有可能发生错误码。执行有问题的代码时,会“产生异常“,导致应用程序的崩溃,所以必须在程序中处理可能产生的各种异常。只有这样,才能保证开发出健壮的应用程序。

42.net的错误处理机制是什么

答案注释:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

答案注释:会执行,在return前执行

44.以下代码段中能否编译通过?请给出理由。

try

            {

            }

            catch (IOException e3)

            {

         }

答案注释:不能,IOException不在System名称空间,而在System.IO名称空间


由“.net笔试题库”收集整理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章