.net面试题

范文1:.Net试题【以文搜文】

1.new 关键字用法

(1)new 运算符用于创建对象和调用构造函数。

(2)new 修饰符用于向基类成员隐藏继承成员。

(3)new 约束用于在泛型声明中约束可能用作类型参数的参数的类型。

2.如何把一个Array复制到ArrayList里

(1)实现1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);

(2)实现2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);

3.DataGrid的Datasouse可以连接什么数据源

DataTable

DataView

DataSet

DataViewManager

任何实现IListSource接口的组件

任何实现IList接口的组件

4.概述反射和序列化反射

公共语言运行库加载器管理应用程序域。

这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

程序集包含模块,而模块包含类型,类型又包含成员。

反射则提供了封装程序集、模块和类型的对象。

您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。 然后,可以调用类型的方法或访问其字段和属性。

序列化

序列化是将对象状态转换为可保持或传输的格式的过程。

与序列化相对的是反序列化,它将流转换为对象。

这两个过程结合起来,可以轻松地存储和传输数据。

5.概述O/R Mapping 的原理

利用反射,配置将对象和数据库表映射。

6. 可访问性级别有哪几种

public 访问不受限制。

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

internal 访问仅限于当前程序集。

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

private 访问仅限于包含类型。

7. sealed 修饰符有什么特点 sealed 修饰符可以应用于类、实例方法和属性。

密封类不能被继承。

密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。

当应用于方法或属性时,sealed 修饰符必须始终与 override一起使用。

8.列举ADO.NET中的共享类和数据库特定类共享类

DataSet

DataTable

DataRow

DataColumn

DataRelation

Constraint

DataColumnMapping

DataTableMapping

特定类

(x)Connection

(x)Command

(x)CommandBuilder

(x)DataAdapter

(x)DataReader

(x)Parameter

(x)Transaction

9.执行下面代码后:

String strTemp ="abcdefg 某某某";

Int i=System.Text.Encoding.Default.GetBytes(strTemp).Length;

Int j=strTemp.Length;

问: i=? j=?

i=(14 )

j=(11 ) 中文两个字节

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

string str ="";初始化对象分配空间而string str=null初始化对象

11.详述.NET里class和struct的异同

结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:

尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。 结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。 实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。 结构不能从类或其他结构继承。

结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。

复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。

由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型实例是无法区分的。 C# 中的所有值类型本质上都继承自 valueType,后者继承自 Object。

编译器可以在一个称为装箱的过程中将值类型转换为引用类型。

结构具有以下特点:

结构是值类型,而类是引用类型。

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

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

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

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

结构可以实现接口。

在结构中初始化实例字段是错误的。

12.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

应用程序域

应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。

应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。

应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

托管代码

使用基于公共语言运行库的语言编译器开发的代码称为托管代码;

托管代码具有许多优点,

例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。

装箱和拆箱

装箱和拆箱使值类型能够被视为对象。

对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。

这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。

重载

每个类型成员都有一个唯一的签名。

方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。

只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。

当定义两种或多种具有相同名称的方法时,就称作重载。

CTS通用类型系统 (common type system) 一种确定公共语言运行库如何定义、使用和管理类型的规范。

CLR公共语言运行库 .NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。

CLS公共语言规范要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。

为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。

强类型 C# 是强类型语言;因此每个变量和对象都必须具有声明类型。

13.值类型和引用类型的区别?

基于值类型的变量直接包含值。

将一个值类型变量赋给另一个值类型变量时,将复制包含的值。

这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

所有的值类型均隐式派生自 System.valueType。

与引用类型不同,从值类型不可能派生出新的类型。

但与引用类型相同的是,结构也可以实现接口。

与引用类型不同,值类型不可能包含 null 值。

然而,可空类型功能允许将 null 赋给值类型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

值类型主要由两类组成:结构、枚举

结构分为以下几类:Numeric(数值)类型、整型、浮点型、 decimal、bool、用户定义的结构。

引用类型的变量又称为对象,可存储对实际数据的引用。

声明引用类型的关键字:class、 interface、delegate

内置引用类型: object、string

14.如何理解委托委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。

有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

15.C#中的接口和类有什么异同。

异:不能直接实例化接口。

接口不包含方法的实现。

接口、类和结构可从多个接口继承。

但是C# 只支持单继承:类只能从一个基类继承实现。

类定义可在不同的源文件之间进行拆分。

同:接口、类和结构可从多个接口继承。

接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。 接口可以包含事件、索引器、方法和属性。

一个类可以实现多个接口。

16.ASP.net的身份验证方式有哪些

Windows 身份验证提供程序提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。

Forms 身份验证提供程序提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。

Passport 身份验证提供程序提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置

17.活动目录的作用

Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。

Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。

18.解释一下UDDI、WSDL的意义及其作用

UDDI 统一描述、发现和集成协议(UDDI, Universal Description, Discovery and Integration)是一套基于Web的、分布式的、为Web服务提供的信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web服务注册以使得别的企业能够发现的访问协议的实现标准。

UDDI 提供了一组基于标准的规范用于描述和发现服务,还提供了一组基于因特网的实现。 WSDL WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;

服务 URL 和命名空间

网络服务的类型(可能还包括 SOAP 的函数调用,正像我所说过的,WSDL 足够自如地去描述网络服务的广泛内容)

有效函数列表

每个函数的参数

每个参数的类型

每个函数的返回值及其数据类型

19.什么是SOAP

SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。

使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。

SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。

SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。

这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。 SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。

为此,它提供了一种基于 XML 且具有以下特性的消息处理框架:

1) 可扩展,

2) 可通过多种底层网络协议使用,

3) 独立于编程模型。

20.如何部署一个ASP.net页面

VS 2005和VS 2003都有发布机制。

2003可以发布然后再复制部署。

VS2005 基本上可以直接部署到对应位置。

21.如何理解.net中的垃圾回收机制

.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。

每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。

只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。

但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。

垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。

当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。

范文2:net工程师试题【以文搜文】

.net工程师面试题

一. 填空题

1. 面向对象的语言具有( 封装 )性、( 继承 )性、( 多肽态 )性 等特征。

2. 当整数a赋值给一个object对象时,整数a将会被_____装箱______

3. float f=-123.567F ;int i=(int)f; i的值现在是_______-123_________

4. 能用foreach遍历访问的对象需要实现 ________IEnumerator__________接口或声明_______getEnumerator________方法的类型

5. 用户自定义异常类需要从____throwable(异常类的基类)或exception_____________类继承

二. 选择题 1.以下叙述正确的是:( BC )

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

2.从数据库读取记录,你可能用到的方法有:( BCD )

A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

3.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。 4. 下列ASP.NET语句( B )正确地创建了一个与SQL Server 2000数据库的连接。

A. SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

B. SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

C. SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

D.SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

5. abstract class BaseClass

{

public virtual void MethodA()

{}

public virtual void MethodB()

{}

}

class Class1: BaseClass

{

public void MethodA(string arg)

{}

public override void MethodB()

{}

}

class Class2: Class1

{

new public void MethodB()

{}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

Console.WriteLine(o.MethodA());

}

}

请问,o.MethodA调用的是: ( c )

A.BaseClass.MethodA B.Class2.MethodA C.Class1.MethodA D.都不是

三. 问答题

1. 下面这段代码有错误么?case 2:dufault;不能直接这样写

switch (i){

case():

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault;

CaseTwo();

break;

}

2.列举ASP.NET 页面之间传递值的几种方式

答:使用Qurrystring【“”】只能传递简单的值不能传递数组和对象,application对所有对象有效,session保存在服务器,cookie保存在客户端,server.transfer完全面向对象,把流程从当前页面引导到另一个页面

3.C#中的接口和类有什么异同。

答:接口实质上是功能说明书,说明有什么属性和方法,理论上是继承者的父类,因此可以作为实现类的引用,来实现复杂类的引用。引用接口实例化一个新的对象,它只是呈现接口中约定的属性和方法。二类是实际上的运用。

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

答:使用web.config的配置项,是全局性的,源自于应用程序配置文件,使用放在应用程

序根目录下的Global,asax中的Application_Error事件处理方法,局部性的错误处理机制有:使用Errorpage属性以及page_Error事件处理方法,四种错误处理机制优先级,,从高到低:page_Error事件处理方法>Errorpage属性》Application_Error事件处理方法>customErrors配置项

5.ADO.net中常用的对象有哪些?分别描述一下。

答:DateSet对象:表示内存中数据的缓存,称为临时的数据库,可以存多张表,而且是断开方式的,不用每一次操作对数据库更新,DataReader对象,于Dataset区别在于它是连接方式的,每次对数据库的存取都会影响到数据库,Connection对象,Command对象,表示要对数据库执行的一个SQL语句或一个存贮过程;DataAdapter对象,于dataset配合使用的对象,用于将表填充到DataSet,和更新dataset。

6.现有一个非静态的product类,其中类中有两个属性age(寿命),name (名称),并有个两个参数(age,name)的构造函数,同时有个方法叫showinfo() 该方法是输出产品的寿命和名称。问题:控制台需要输出电视机 寿命10年,你如何处理 ,请根据描述用一个完整的类实现

void Product;;showinfo(){

System.out.printf(“名称”+getname());

Setage(10);

System.out.printf(“寿命”+getage());

}

7. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 Int f(int n){

If(n==0)

Return 0;

If(n==1)

Return 1;

If(a>1){

Return f(n-1)+f(n-2);}

}

传入参数值为30

8. 如何在前台aspx页面获取后台cs文件中的公共变量a=100的值并弹出a=100的提示信息

答:在aspx页面中使用<%=a%>,windows.confirm(‘a=’+<%=a%>)

9.取一个表A中的第21至30条数据,id不连续,如何用sql语句实现

答:select top 30 into rom from A order by columnname

Set rowcount 10

Select * from rom order by columnname desc;

10. 现在有A、B两个表,两表的字段是相同的,但这两个表没有任何的关系,只是数据分开存储,现在想把这两个表的数据同时取出来,请写出实现的sql语句

Select A.*,B.* from A ,B;

11.表格如下:

请根据他们的三科成绩来显示不同的级别 <60 的即:不及格;>60并<80的即:良好 ;>80的即:优秀,用一条sql语句实现

数据格式如下:

Name english math chinese

张三 优秀 良好 优秀

Select name,english,math, chinese case english when 成绩<60 then “不及格”

when english>=60 and english<80 then “良好”

when english>80 then “优秀” end

case math when 成绩<60 then “不及格”

when emathh>=60 and emath80 then “良好”

when english>80 then “优秀” end

case english when 成绩<60 then “不及格”

when chinese>=60 and chinese<80 then “良好”

when chinese>80 then “优秀” end;

12.表格如下:

Select date 日期, sum(case when result=’赢’ then 1 else 0) from compity group by date ;

13.浅谈一下自己在项目中所处的优势及未来三年对自己的规划

我是一名即将步入社会的学子,以前的学习工作中,我渐渐养成了团队协作,一起讨论学习的习惯,不仅交到了许多朋友,我学会了容忍,顾及他人的感受对我印象深刻的就是大家都很热枕,你用什么心态对待,反过来,你也会得到什么。对于未来三年,我认为是我一生的又一个重大起点,现在,我只期待能有一个痛苦而又快乐的三年,能让我真正的学会在社会上独立,也为未来指明一个方向。

范文3:NET试题(最新2017年)【以文搜文】

富盛科技股份有限公司 .net工程师面试题

1.列出你所知道的ORM框架都有哪些,并进行简要说明?

2..Net托管代码和非托管代码有何区别?

3.静态函数可以直接调用非静态函数吗?

4.什么是Socket套接字?

5.网络通讯中UDP是不是比TCP快?为什么?

6.程序中一般线程跟线程池有何不同?

7.如何解决多线程中资源抢占问题?

8.简单写一个Lambda表达式的使用场景?

9、写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。

10、问题描述:

为管理岗位业务培训信息,建立3个表:

S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄

C (C#,CN ) C#,CN 分别代表课程编号、课程名称

SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩

题目:

(1). 使用标准SQL语句查询选修课程名称为’税收基础’的学员学号和姓名

(2). 使用标准SQL语句查询选修课程编号为’C2’的学员姓名和所属单位

11. 简述 private、 protected、 public、 internal 修饰符的访问权限。

12.线程静态成员的作用是什么

13.C#支持多重继承吗

1

富盛科技股份有限公司 .net工程师面试题

14.接口与抽象类有什么区别

15.如果catch块捕获了一个异常,那么finally块还会被调用吗?

16.结构体能继承结构体吗?结构体能继续类吗?结构体可以作为一个类的基类吗?结构体可以实现一个接口吗?结构体与类有什么区别?

17.Debug类与Trace类有什么区别?

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

19.常用的调用WebService的方法有哪些?

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

21.堆和栈的区别?

其他:

22.请随意列举您曾经读过的认为比较优秀的书籍(计算机编程、软件过程、管理、励志不限)。

2

范文4:.Net软件工程师试题【以文搜文】

一.填空题(每空1分,共12分)

1面向对象的语言具有__封装______性、__继承_______性、__多态______性。

2能用foreach遍历访问的对象需要实现 ____Ienumerable____________接口或声明

_____GetEnumerator___________方法的类型。

3当类T只声明了私有实例构造函数时,则在T的程序文本外部,___不可以___(可以 or 不可以)从T派生出新的类,在T的内部__可以__(可以 or 不可以)直接创建T的任何实例,在T的外部__不可以__(可以 or 不可以)直接创建T的任何实例。

4. 委托声明的关键字是__Delegate____

5. override与重载的区别: override覆盖是基类中函数的重写。重载:方法或函数的名称相同,参数或许参数类型不同,进行多次重载实现功能。

二. 不定项选择(每题2分,共18)

Question 1

以下叙述正确的是:

A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。

C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

Question 2

以下描述错误的是()

1. 在C++中支持抽象类而在C#中不支持抽象类。

2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。

4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

Question 3

声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是

1. void myCallBack(int x)

2. int receive(int num)

3. string receive(int x)

4. 不确定的

Question 4

下列描述错误的是()

a) 类不可以多重继承而接口可以;

b) 抽象类自身可以定义成员而接口不可以;

c) 抽象类和接口都不能被实例化;

d) 一个类可以有多个基类和多个基接口;

Question 5

下列关于构造函数的描述正确的是()

a) 构造函数可以声明返回类型。

b) 构造函数不可以用private修饰

c) 构造函数必须与类名相同

d) 构造函数不能带参数

Question 6

接口是一种引用类型,在接口中可以声明( ),但不可以声明公有的域或私有的成员变量。 a) 方法、属性、索引器和事件;

b) 方法、属性信息、属性;

c) 索引器和字段;

d) 事件和字段;

Question 7

以下的C#代码,试图用来定义一个接口:

public interface IFile

{

int A;

int delFile()

{

A = 3;

}

void disFile();

}

关于以上的代码,以下描述错误的是( )。

a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误; b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;

c) 代码void disFile();声明无错误,接口可以没有返回值;

d) 代码void disFile();应该编写为void disFile(){};

Question 8.

class Class1

{

public static int Count = 0;

static Class1()

{

Count++;

}

public Class1()

{

Count++;

}

}

Class1 o1 = new Class1();

Class1 o2 = new Class1();

请问,Class1.Count的值是多少?( )

1. 1

2. 2

3. 3

4. 4

Question 9

abstract class BaseClass

{

public virtual void MethodA()

{

Console.WriteLine("BaseClass");

}

public virtual void MethodB()

{

}

}

class Class1: BaseClass

{

public void MethodA()

{

Console.WriteLine("Class1");

}

public override void MethodB()

{

}

}

class Class2: Class1

{

new public void MethodB()

{

}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

o.MethodA();

}

}

请问,此程序输出结果是:

1. BaseClass

2. BassClass Class1

3. Class1

4. Class1 BassClass

(解析,三重继承问题,孙类只是继承父类,而不是直接继承祖父类)

三.问答题(每题3分,共15分)

1. 简述 private、 protected、 public、 internal 修饰符的访问权限。

private:私有访问,它只能在声明自身的类中进行访问。

protected:表示受保护的访问,该类内部和继承类中可以访问

.public :表示公共访问,在代码任何位置都可对其进行访问

internal表示内部成员,在同一命名空间内可以访问。

2. C#中的委托是什么?事件是不是一种委托?

委托是指具有相同属性(也称具有相同的函数签名:返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。主要用途是三个:1)函数回调;2)传递方法;3)事件机制

事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托,对事件的声

明, 实际是声明一个私有的委托变量,对委托变量进行封装,即委托变量加上event关键字后,不管其前面的访问修饰符是public还是private,编译器都会将其编译为private。

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。以委托为参数的函数具有一定的通用性。

使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

3. abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?

不可以一起使用,但是可以和override一起使用。

4. 请叙述属性与索引器的区别。

属性:它是存取类的字段,索引器:Indexer它是特殊的属性,用它可以使用户像访问数组一样访问类的成员。

5. 请详述在dotnet中类(class)与结构(struct)的异同。

类class可以进行实例化,它是引用类型,内存分配在栈中,效率高,它有默认的构造函数,有析构函数可以使用 abstract 和 sealed, protected 修饰符。要用new进行初始化,

结构它是属于值类型,内存分配在堆中,效率低,它没有默认的构造函数,但是可以添加构造函数,没有析构函数没有 abstract 和 sealed(因为不能继承) 不能有protected 修饰符 可以不使用new 初始化,但是可以在结构中初始化实例字段。

四.分析程序(每题5分,共25分) (此题不能调试,若发现调试,扣除分数)

1. 写出程序的输出结果

class Class1 {

private string str = "Class1.str";

private int i = 0;

static void StringConvert(string str) {

str = "string being converted.";

}

static void StringConvert(Class1 c) {

c.str = "string being converted.";

}

static void Add(int i) {

i++;

}

static void AddWithRef(ref int i) {

i++;

}

static void Main() {

int i1 = 10;

int i2 = 20;

string str = "str";

Class1 c = new Class1();

Add(i1);

AddWithRef(ref i2);

Add(c.i);

StringConvert(str);

StringConvert(c);

Console.WriteLine(i1);

Console.WriteLine(i2);

Console.WriteLine(c.i);

Console.WriteLine(str);

Console.WriteLine(c.str);

}

}

10

21

str

string being converted

2.写出程序的输出结果

public abstract class A

{

public A()

{

Console.WriteLine('A');

}

public virtual void Fun()

{

Console.WriteLine("A.Fun()");

}

}

public class B: A

{

public B()

{

Console.WriteLine('B');

}

public override void Fun()

{

Console.WriteLine("B.Fun()");

}

public static void Main()

{

A a = new B();

a.Fun();

}

}

解析:主函数 A a = new B();首先声明了一个A的对象a,但被赋给不同于A的对象B,在此期间分别调用了A类的构造函数和B类的构造函数,然后调用a的fun()函数,因为a的fun()函数是虚函数,被b的fun()的函数覆盖,所以实际执行的是b的fun().

答案:

A

B

B.Fun()

3.写出程序的输出结果:

public class A

{

public virtual void Fun1(int i)

{

Console.WriteLine(i);

}

public void Fun2(A a)

{

a.Fun1(1);

Fun1(5);

}

}

public class B : A

{

public override void Fun1(int i)

{

base.Fun1 (i + 1);

}

public static void Main()

{

B b = new B();

A a = new A();

b.Fun2(a);

a.Fun2(b);

}

}

输出结果为:

2

5

1

6

(一个函数的执行必须在一个具体的对象中实现,如果函数明确告诉是哪个对象,则在改该对象下执行;如果没有,则在默认的对象下执行)

4. 在下面的例子里

using System;

class A

{

public A()

{

PrintFields();

}

public virtual void PrintFields(){}

}

class B:A

{

int x=4;

int y;

public B()

{

y=-1;

}

public override void PrintFields()

{

x += 1;

Console.WriteLine("x={0},y={1}",x,y);

y += 1;

}

当使用B b = new B()创建的实例时,产生什么输出?b. PrintFields();结果是什么?

X=5,y=0

b. PrintFields 结果是x=6;y=1

5. 下面的例子中

using System;

class A

{

public static int X;

static A()

{

X=B.Y+1;

}

}

class B

{

public static int Y=A.X+1;

static B()

{ }

static void Main()

{

Console.WriteLine("X={0},Y={1}",A.X,B.Y); }

}

产生的输出结果是什么?

X=2,Y=1

五.程序设计(每题7分,共28分)

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

//比较法

using System;

using System.Collections.Generic;

using System.Text;

namespace test1

{

class Program

{

static void Main(string[] args)

{

int[] Array ={ 6,18,12,23,19,28,30}; Console.WriteLine("排序前的数组:"); foreach(int n in Array)

{

Console.Write(n+" ");

}

Console.WriteLine();

for (int i = 1; i < Array.Length; i++) //控制趟数 {

for (int j = 0; j < Array.Length - i; j++)

{

if (Array[j] > Array[j + 1]) //交换

{

int temp = Array[j]; Array[j] = Array[j + 1]; Array[j + 1] = temp;

}

}

}

//排序后

Console.WriteLine("排序后的数组:");

for (int n = 0; n < Array.Length; n++)

{

Console.Write(Array[n] + " ");

}

Console.WriteLine();

}

}

}

2. 编程程序实现委托,事件。

using System;

using System.Collections.Generic;

using System.Text;

namespace delegateDemo

{

class Program

{

static void Main(string[] args)

{

Cat cat = new Cat();

Mouse mouse = new Mouse();

Master master = new Master();

cat.Calling += new EventHandler(mouse.Escape);

cat.Calling += new EventHandler(master.Wakened); cat.Call();

}

}

public sealed class Cat //猫类

{

public event EventHandler Calling;

public void Call()

{

Console.WriteLine("猫开始叫了……");

if(Calling!=null) //检查事件是否被注册 Calling(this,EventArgs.Empty);//调用事件注册的方法 }

}

public sealed class Mouse //老鼠类

{

public void Escape(object sender, EventArgs e)

{

Console.WriteLine("老鼠逃跑了...");

}

}

public sealed class Master //主人

{

public void Wakened(object sender, EventArgs e)

{

Console.WriteLine("主人惊醒了...");

}

}

}

3. 写一个程序,语言不限,打印出100的阶乘(即1*2*3*…*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120。

using System;

using System.Collections.Generic;

using System.Text;

//,打印出100的阶乘(即1*2*3*…*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120

namespace shuzu

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("请输入一个正数");

int n = int.Parse(Console.ReadLine());

Console.WriteLine("{0}的阶乘1*2*3*…*{1}={2}",

n,n,Fn(n));

}

public static double Fn(int n)

{

if (n==1)

{

return 1;

}

else

{

return n * Fn(n - 1);

}

}

}

}

4. 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("请输入数字:");

string s = Console.ReadLine();

Console.Write("转换后¥:");

for (int i = 0; i < s.Length; i++)

{

//switch(Convert.ToInt32(Console.ReadLine()))

switch (s[i] - 48)

{

case 0:

Console.Write("零");

break;

case 1:

Console.Write("壹");

break;

case 2:

Console.Write("贰");

break;

case 3:

Console.Write("叁");

break;

case 4:

Console.Write("肆");

break;

case 5:

Console.Write("伍");

break;

case 6:

Console.Write("陆");

break;

case 7:

Console.Write("柒");

break;

case 8:

Console.Write("捌");

break;

case 9:

Console.Write("玖");

break;

case 10:

Console.Write("拾");

break;

default:

Console.Write("输入其他字符");

break;

}

}

Console.WriteLine();

Console.Read();

}

}

}

六.附加题(12分)

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。(C#语言)

using System;

using System.Collections.Generic;

using System.Text;

// 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现

namespace rabbit

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("请输入个正数:");

int I= int.Parse(Console.ReadLine());

Console.WriteLine("第{0}个数字是{1}", I, Fn(I)); }

static int Fn(int n)

{

if ( n == 1 || n == 2 )

{

return 1;

}

else

{

return Fn(n - 1) + Fn(n - 2);

}

}

}

}

范文5:.net试题大全(有答案)【以文搜文】

    在网上找来的,希望对大家有所帮助。

    1 (1)面向对象的语言具有__继承性_性、_封装性_性、_多态性 性。

    (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__

    2.当整数a赋值给一个object对象时,整数a将会被__装箱___?

    3.类成员有__3__种可访问形式?

    4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static

    5.float f=-123.567F;

    int i=(int)f;

    i的值现在是_-123____?

    6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了== 就必须重载 !=

    7.委托声明的关键字是___ delegate ___?

    8.用sealed修饰的类有什么特点?不可被继承

    9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?

    10.在.Net中所有可序列化的类都被标记为__[serializable]___?

    11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __?

    12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______

    using System;

    class A

    {

    public virtual void F(){

    Console.WriteLine(A.F);

    }

    }

    abstract class B:A

    {

    public abstract override void F();

    }

    13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。

    14.下面这段代码有错误么?case():不行 default;

    switch (i){

    case():

    CaseZero();

    break;

    case 1:

    CaseOne();

    break;

    case 2:

    dufault;

    CaseTwo();

    break;

    }

    15.在.Net中,类System.Web.UI.Page 可以被继承么?可以

    2. 不定项选择:

    (1) 以下叙述正确的是: B C

    A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

    (2) 从数据库读取记录,你可能用到的方法有:B C D

    A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

    2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

    A.Close B.Dispose C.Finalize

    D.using E.Quit

    3.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

    A.使用ref参数,传递到ref参数的参数必须最先初始化。

    B.使用out参数,传递到out参数的参数必须最先初始化。

    C.使用ref参数,必须将参数作为ref参数显式传递到方法。

    D.使用out参数,必须将参数作为out参数显式传递到方法。

    1.在对SQL Server 数据库操作时应选用(A)。

    a)SQL Server .NET Framework 数据提供程序;

    b)OLE DB .NET Framework 数据提供程序;

    c)ODBC .NET Framework 数据提供程序;

    d)Oracle .NET Framework数据提供程序;

    2.下列选项中,(C)是引用类型。

    a)enum类型 b)struct类型 c)string类型 d)int类型

    3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)

    a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为代码隐藏文件,如果用C#创建,该文件将具有.ascx.cs扩展名。

    b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

    c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

    d)以上都不正确。

    4.以下描述错误的是(A)

    a)在C++中支持抽象类而在C#中不支持抽象类。

    b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

    c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。

    d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

    5.C#的数据类型有(B)[原文为D,有误]

    a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;

    6.下列描述错误的是(D)

    a)类不可以多重继承而接口可以;

    b)抽象类自身可以定义成员而接口不可以;

    c)抽象类和接口都不能被实例化;

    d)一个类可以有多个基类和多个基接口;

    7.在DOM中,装载一个XML文档的方法(B)[原文为D,有误]

    a)save方法 b)load方法 c)loadXML方法 d)send方法

    8.下列关于构造函数的描述正确的是(C)

    a)构造函数可以声明返回类型。

    b)构造函数不可以用private修饰

    c)构造函数必须与类名相同

    d)构造函数不能带参数

    9.以下是一些C#中的枚举型的定义,其中错误的用法有()

    a)public enum var1{ Mike = 100, Nike = 102, Jike }

    b)public enum var1{ Mike = 100, Nike, Jike }

    c)public enum var1{ Mike=-1 , Nike, Jike }

    d)public enum var1{ Mike , Nike , Jike }

    10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(D)。

    a)9 b)2 c)6 d)越界

    11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。

    a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段; d)事件和字段;

    12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A )

    a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件 d)HTML控件和IIS控件

    13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为Mike,正确的注册指令为( D)

    a)

    b)

    c)

    d)以上皆非

    14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。

    a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

    b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

    c)Select操作的Sql语句只能由ExecuteReader()方法来执行;

    d)ExecuteReader()方法返回一个DataReder对象;

    15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。

    a)SqlConnection con1 = new Connection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

    b)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

    c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

    d)SqlConnection con1 = new OleDbConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

    16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。

    a)Buttons属性表示ToolBar控件的所有工具栏按钮

    b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度

    c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键

    d)ButtonClick事件在用户单击工具栏任何地方时都会触发

    17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。

    a)大小; b)上限; c)初始值; d)类型;

    18.如果将窗体的FormBoderStyle设置为None,则( B)。

    a)窗体没有边框并不能调整大小; b)窗体没有边框但能调整大小;

    c)窗体有边框但不能调整大小; d)窗体是透明的;

    19.如果要将窗体设置为透明的,则( B)

    a)要将FormBoderStyle属性设置为None; b)要将Opacity属性设置为小于100%得值;

    c)要将locked 属性设置为True; d)要将 Enabled属性设置为True;

    20.下列关于C#中索引器理解正确的是(B/C )

    a)索引器的参数必须是两个或两个以上 b)索引器的参数类型必须是整数型

    c)索引器没有名字 d)以上皆非

    21.下面描述错误的是( C/D)。

    a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类;

    22.要对注册表进行操作则必须包含( D)。

    a)System.ComponentModel命名空间; b)System.Collections命名空间;

    c)System.Threading命名空间; d)Microsoft.Win32命名空间;

    23.要创建多文档应用程序,需要将窗体的(D )属性设为true。

    a)DrawGrid; b)ShowInTaskbar; c)Enabled; d)IsMdiContainer;

    24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add(根节点)返回的是一个 ()类型的值。

    a)TreeNode;

    b)int;

    c)string;

    d)TreeView;

    25.下面关于XML的描述错误的是(D)。

    a)XML提供一种描述结构化数据的方法;

    b)XML 是一种简单、与平台无关并被广泛采用的标准;

    c)XML文档可承载各种信息;

    d)XML只是为了生成结构化文档;

    1.装箱、拆箱操作发生在: ( C )

    A.类与对象之间 B.对象与对象之间

    C.引用类型与值类型之间 D.引用类型与引用类型之间

    2.用户类若想支持Foreach语句需要实现的接口是: ( A )

    A.IEnumerableB.IEnumerator

    C.ICollectionD.ICollectData

    3..Net Framework通过什么与COM组件进行交互操作?( C )

    A.Side By SideB.Web Service

    C.InteropD.PInvoke

    4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?( A )

    A.Side By SideB.Interop

    C.PInvokeD.COM+

    5.装箱与拆箱操作是否是互逆的操作?( B )

    A.是B.否

    6.以下哪个是可以变长的数组?( D )

    A.Array B.string[]

    C.string[N] D.ArrayList

    7.用户自定义异常类需要从以下哪个类继承:( A )

    A.Exception B.CustomException

    C.ApplicationException D.BaseException

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

    try

    {

    }

    catch(FileNotFoundException e1)

    {

    }

    catch(Exception e2)

    {

    }

    catch(IOException e3)

    {

    }

    catch

    {

    }

    9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

    A.Close B.DisposeC.Finalize

    D.using E.Quit

    10.Net依赖以下哪项技术实现跨语言互用性?( C )

    A.CLR B.CTS C.CLS D.CTT

    11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)

    如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。

    12.以下哪个类是int的基类?( )

    A.Int32 B.Object C.ValueType D.Int16

    二、C# 部分*

    13.以下哪些可以作为接口成员?(多选) ( ABDE )

    A.方法B.属性C.字段D.事件E.索引器

    F.构造函数G.析构函数

    14.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

    A.使用ref参数,传递到ref参数的参数必须最先初始化。

    B.使用out参数,传递到out参数的参数必须最先初始化。

    C.使用ref参数,必须将参数作为ref参数显式传递到方法。

    D.使用out参数,必须将参数作为out参数显式传递到方法。

    15.访问范围限定于此程序或那些由它所属的类派生的类型是对以下哪个成员可访问性含义的正确描述?( B )

    A.public B.protected C.internal D.protected internal

    16.class Class1

    {

    private static int count = 0;

    static Class1()

    {

    count++;

    }

    public Class1()

    {

    count++;

    }

    }

    Class1 o1 = new Class1();

    Class1 o2 = new Class1();

    请问,o1.Count的值是多少?( C )

    A.1 B.2 C.3 D.4

    17.abstract class BaseClass

    {

    public virtual void MethodA()

    {

    }

    public virtual void MethodB()

    {

    }

    }

    class Class1: BaseClass

    {

    public void MethodA(string arg)

    {

    }

    public override void MethodB()

    {

    }

    }

    class Class2: Class1

    {

    new public void MethodB()

    {

    }

    }

    class MainClass

    {

    public static void Main(string[] args)

    {

    Class2 o = new Class2();

    Console.WriteLine(o.MethodA());

    }

    }

    请问,o.MethodA调用的是: ( A )

    A.BaseClass.MethodAB.Class2.MethodA

    C.Class1.MethodAD.都不是

    18.请叙述属性与索引器的区别。

    属性 索引器

    通过名称标识。 通过签名标识。

    通过简单名称或成员访问来访问。 通过元素访问来访问。

    可以为静态成员或实例成员。 必须为实例成员。

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

    属性的 set 访问器包含隐式 value 参数。 除了 value 参数外,索引器的 set 访问器还具有与索引器相同的形参表。

    19.请叙述const与readonly的区别。

    每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。

    为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。

    const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

    const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

    const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

    readonly在运行期评估赋值,使我们得以在确保只读访问的前提下,把object的初始化动作推迟到运行期进行。

    readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

    readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

    21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。

    所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:

    a、 匿名用户不允许访问这个应用程序。

    b、 所有雇员除了Tess和King都允许访问这个应用程序。

    请问您应该使用以下哪一个代码段来配置这个应用程序?( A )

    A.

    B.

    C.

    D.

    E.

    22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?( C? )

    A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。

    B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。

    C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。

    D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。

    23.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)( CD )

    A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。

    B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。

    C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。

    D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。

    E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。

    F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。

    24.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?( B )

    A. Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI

    B. Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI

    C. Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI

    D. Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI

    25.您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员列表的DataSet对象。请问您该如何在这个程序中使用这个 Xml Web Service?( ? )

    A.在引用对话框的.Net标签中选择 System.Web.Services.dll。

    B.在Web引用对话框中输入这个 XML Web service 的地址。

    C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。

    D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。

    26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? ( B )

    A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为SELECT * FROM procProductList ORDER BY ProductName DESC。然后将这个DataTable对象绑定到DataGrid控件。

    B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为ProductName DESC。然后将这个DataView对象绑定到DataGrid控件。

    C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 ProductName DESC.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。

    D. 将DataTable对象的DisplayExpression属性设置为 ORDER BY ProductName DESC.。然后将这个DataTable对象绑定到DataGrid控件。

    76.C#代码实现,确保windows程序只有一个实例(instance)

    ///

    ///应用程序的主入口点。

    ///

    [STAThread]

    staticvoid Main()

    {

    //防止程序多次运行

    if(!OneInstance.IsFirst(GetPayInfo))

    {

    MessageBox.Show (警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!,程序错误提示:,MessageBoxButtons.OK,MessageBoxIcon.Stop);

    return;

    }

    Application.Run(new Form1());

    }

    // ******************* 防止程序多次执行 **************************

    publicabstractclass OneInstance

    {

    ///

    ///判断程序是否正在运行

    ///

    ///程序名称

    ///如果程序是第一次运行返回True,否则返回False

    publicstaticbool IsFirst(string appId)

    {

    bool ret=false;

    if(OpenMutex(01F0001,0,appId)==IntPtr.Zero)

    {

    CreateMutex(IntPtr.Zero,0,appId);

    ret=true;

    }

    return ret;

    }

    [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]

    privatestaticextern IntPtr OpenMutex(

    uint dwDesiredAccess, // access

    int bInheritHandle, // inheritance option

    string lpName // object name

    );

    [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]

    privatestaticextern IntPtr CreateMutex(

    IntPtr lpMutexAttributes, // SD

    int bInitialOwner, // initial owner

    string lpName // object name

    );

    }

    3. 简述 private、 protected、 public、 internal 修饰符的访问权限。

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

    4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)

    select top 10 * from A where id not in (select top 30 id from A)

    解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

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

    1. 使用QueryString, 如.?id=1; response. Redirect().

    2.使用Session变量

    3.使用Server.Transfer

    2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

    session(viewstate) 简单,但易丢失

    application 全局

    cookie 简单,但可能不支持,可能被伪造

    input ttype=hidden 简单,可能被伪造

    url参数简单,显示于地址栏,长度有限

    数据库稳定,安全,但性能相对弱

    2.override与重载的区别

    Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

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

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

    4、C#中接口和类的异同

    接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。

    4、DataReader和DataSet的异同

    DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..

    DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作

    1. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?

    Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法

    2.在下面的例子里

    using System;

    class A

    {

    public A(){

    PrintFields();

    }

    public virtual void PrintFields(){}

    }

    class B:A

    {

    int x=1;

    int y;

    public B(){

    y=-1;

    }

    public override void PrintFields(){

    Console.WriteLine(x={0},y={1},x,y);

    }

    当使用new B()创建B的实例时,产生什么输出?X=1,Y=0

    3.下面的例子中

    using System;

    class A

    {

    public static int X;

    static A(){

    X=B.Y+1;

    }

    }

    class B

    {

    public static int Y=A.X+1;

    static B(){}

    static void Main(){

    Console.WriteLine(X={0},Y={1},A.X,B.Y);

    }

    }

    产生的输出结果是什么?x=1,y=2

    4.谈谈类和结构的区别?

    最大区别一个是引用类型,一个是值类型 默认成员访问为public是另外一个区别

    1. 在.net(C# or vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。

    this(C#) Me(vb.net).

    2在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。

    在form中重载DefWndProc函数来处理消息:

    protected override void DefWndProc ( ref System.WinForms.Message m )

    {

    switch(m.msg)

    {

    case WM_Lbutton :

    ///string与MFC中的CString的Format函数的使用方法有所不同

    string message = string.Format(收到消息!参数为:{0},{1},m.wParam,m.lParam);

    MessageBox.Show(message);///显示一个消息框

    break;

    case USER:

    处理的代码

    default:

    base.DefWndProc(ref m);///调用基类函数处理非自定义消息。

    break;

    }

    }

    3. 在.net(C# or vb.net)如何启动另一个程序。process

    4. 在.net(C# or vb.net)中如何取消一个窗体的关闭

    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

    {

    e.Cancel=true;

    }

    5. 在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?

    答案:一个是退出整个应用程序,一个是关闭其中一个form

    6. 在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22

    答案:

    System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(en-US);

    //System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(en-GB);为英国货币类型

    decimal y = 9999999999999999999999999999m;

    string str = String.Format(MyCulture,My amount = {0:c},y);

    7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

    (1) 密码单词的最小长度是两个字母,可以相同,也可以不同

    (2) K不可能是单词的第一个字母

    (3) 如果L出现,则出现次数不止一次

    (4) M不能使最后一个也不能是倒数第二个字母

    (5) K出现,则N就一定出现

    (6) O如果是最后一个字母,则L一定出现

    问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?

    A) K B)L C) M D) N

    答案:B

    问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?

    A)1个 B)3个 C)6个 D)9个

    答案:A

    问题三:下列哪一个是单词密码?

    A) KLLN B) LOML C) MLLO D)NMKO

    答案:C

    8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?

    答案:62移动成2的6次方

    new有几种用法

    第一种:new Class();

    第二种:覆盖方法

    public new XXXX(){}

    第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。

    2.如何把一个array复制到arrayList里

    foreach( object o in array )arrayList.Add(o);

    3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]

    dataset,datatable,dataview , IList

    4.概述反射和序列化

    反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

    序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

    5.概述o/r mapping 的原理

    利用反射,配置 将类于数据库表映射

    7.用sealed修饰的类有什么特点

    sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。

    密封类不能同时为抽象类。

    sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

    11.详述.NET里class和struct的异同!

    class:放在 ? struct放在?

    struct值传递

    类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在在堆栈上或内联。细心的程序员有时可以通过聪明地使用结构来增强性能。

    12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。

    远程逻辑调用,remoing接口只能用在.net中

    13.什么是code-behind技术 aspx and cs

    14.概述三层结构体系 web/business/dataaccess

    15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess

    2.什么是ASP.net中的用户控件

    答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

    3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

    答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.

    4.列举一下你所了解的XML技术及其应用

    答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.

    5.值类型和引用类型的区别?写出C#的样例代码。

    答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.

    6.ADO.net中常用的对象有哪些?分别描述一下。

    答:connection command sqladapter dataset datatable dataview等等.写不完了.

    7.如何理解委托?

    答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.

    msdn2005中是这样解释的:

    委托具有以下特点:

    委托类似于 C++ 函数指针,但它是类型安全的。

    委托允许将方法作为参数进行传递。

    委托可用于定义回调方法。

    委托可以链接在一起;例如,可以对一个事件调用多个方法。

    方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

    C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

    8.C#中的接口和类有什么异同。

    答:接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!

    而类是负责功能的具体实现!

    在类中也有抽象类的定义,抽象类与接口的区别在于:

    抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

    但接口是一个行为的规范,里面的所有东西都是抽象的!

    一个类只可以继承一个基类也就是父类,但可以实现多个接口

    9.。net中读写数据库需要用到哪些类?他们的作用

    答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.

    10.UDP连接和TCP连接的异同。

    答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.

    11.ASP.net的身份验证方式有哪些?分别是什么原理?

    答:form认证,windows集成认证等,原理不清楚.

    13.什么是code-Behind技术。

    答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

    15..net中读写XML的类都归属于哪些命名空间?

    答:System.Xml

    16.解释一下UDDI、WSDL的意义及其作用。

    答:

    17.什么是SOAP,有哪些应用。

    答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html

    20.常用的调用webservice方法有哪些?

    答:

    可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP 使用WEB服务代理

    6. 私有程序集与共享程序集有什么区别?

    一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

    7. 请解释进程与线程的区别?进程与程序的区别?

    一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。

    8. CLR与IL分别是什么含义?

    CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

    IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。

    10 .请解释ASP。NET中以什么方式进行数据验证

    Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件

    11. WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

    在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端

    只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

    12. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

    可以调用

    例如:

    13. 请解释web.config文件中的重要节点

    appSettings包含自定义应用程序设置。

    system.web 系统配置

    compilation动态调试编译设置

    customErrors自定义错误信息设置

    authentication身份验证,此节设置应用程序的身份验证策略。

    authorization授权, 此节设置应用程序的授权策略.

    14. 请解释ASP。NET中的web页面与其隐藏类之间的关系?

    一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

    Codebehind=Tst1.aspx.cs 表明经编译此页面时使用哪一个代码文件

    Inherits=T1.Tst1 表用运行时使用哪一个隐藏类

    15. 什么是viewstate,能否禁用?是否所用控件都可以禁用?

    Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

    16. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

    很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断

    17. 请解释什么是上下文对象,在什么情况下要使用上下文对象

    上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象

    18. 请解释转发与跳转的区别?

    转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面

    跳转就是指客户端的跳转

    1.请简述一下用Socket进行同步通讯编程的详细步骤

    1、在应用程序和远程设备中使用协议和网络地址初始化套接字

    2、在应用程序中通过指定端口和地址建立监听

    3、远程设备发出连接请求

    4、应用程序接受连接产生通信scoket

    5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

    6、通讯结束,关闭应用程序和远程设备的Socket回收资源

    1、在C#中,string str = null 与 string str = 请尽量使用文字或图象说明其中的区别。

    string str = null 是不给他分配内存空间,而string str = 给它分配长度为空字符窜的内存空间.

    2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)

    Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.

    3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10)

    namespace test

    {

    public delegate void OnDBOperate();

    public class UserControlBase : System.Windows.Forms.UserControl

    {

    public event OnDBOperate OnNew;

    privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)

    {

    if(e.Button.Equals(BtnNew))

    {

    //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

    }

    }

    }

    }

    ____________________________________________________________________

    if( OnNew != null )

    OnNew( this, e );

    4、分析以下代码,完成填空(10分)

    string strTmp = abcdefg某某某;

    int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;

    int j= strTmp.Length;

    以上代码执行完后,i= j= i还真的不知道, j=10

    5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)

    select top ID from table1 order by LastUpdateData desc

    8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)

    remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型

    9.什么叫做SQL注入,如何防止?请举例说明。

    利用sql关键字对网站进行攻击。过滤关键字等

    所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。

    http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

    错误类型:

    Microsoft OLE DB Provider for ODBC Drivers (080040E07)

    [Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 sonybb 转换为数据类型为 int 的列时发生语法错误。

    a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

    int[] intArr=new int[100];

    ArrayList myList=new ArrayList();

    Random rnd=new Random();

    while(myList.Count 0 && i 10时是否会引起死锁?并简要说明理由。

    public void test(int i)

    {

    lock(this)

    {

    if (i>10)

    {

    i;

    test(i);

    }

    }

    }

    答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

    50:简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。

    答:WS主要是可利用HTTP穿透防火墙。Remoting可以利用TCP/IP,二进制传送提高效率

    51:用C#实现以下功能

    a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

    答 :List L=new List();

    Random random = new Random();

    for (int i = 1; i

    64: 请解释ASP。NET中的web页面与其隐藏类之间的关系?

    答 继承的关系

    65: 什么是viewstate,能否禁用?是否所用控件都可以禁用?

    答 可以全部禁用,viewstate就是hidden input,只不过加上了微软的编码方式记录控件的状态

    66: 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

    答 可能就是事件没有关联,或者根本就没有写读取代码。

    解决 检查代码, 设断点调试

    67:请解释一个WEB页面中代码执行次序。

    答 参看.cs 知道最先执行OnInit(); 然后到Page_Load,最后到具体的执行事件。

    68:请解释什么是上下文对象,在什么情况下要使用上下文对象

    答 HttpContext, 在类中调用的时候需要用到HttpContext

    69:请解释转发与跳转的区别?

    答 Transfer 是转发 包括HttpHandler对象

    Redirect 就是跳转

    70: 请解释ASP。NET中button linkbutton imagebutton 及hyperlink这四个控件之间的功别

    答 button imagebutton 将数据传递回服务器

    hyperlinK 页面之间的导航

    linkbutton主要用于将数据保存到服务器或访问服务器上的数据

    71:请解释一下。NET多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那种方式进行。

    答 这个传递方式不定,很多都是传递DataSet, XML也可以

    72:如果出现ASP。NET中的事件不能触发可能由于什么原因造成?

    答 事件丢失,特别是使用vss的时候最容易造成这种情况,原因不明

    73:如果需要在datagride控件中的某一列中添加下拉列表框并绑定数据怎么解决?

    答 使用模板列来添加dropdownlist,绑定数据使用代码前置的方式

    74:请解释asp.net中的数据绑定与传统数据绑定有什么区别?

    答 更灵活 更方便

    75:请解释.net采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别,

    答 以图示方式解释。

    76:请解释接口的显式实现有什么意义?

    答 规定强制执行,保持一致

    77: 什么情况用HTML控件,什么情况用WEB控件,并比较两者差别

    答 客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用web controls

    78: C#中的接口和类有什么异同。

    答 接口只能包含抽象方法,不能包含任何方法实现,不能创建接口实例,接口成员没有访问修饰符,接口成员必须是方法属性事件或者索引器不能包含常数字段运算符也不能有静态成员

    0 0 收藏 分享

范文6:.net【以文搜文】

    sql企业信息管理系统的设计—.net(源代码+论文+文献综述+开题报告+答辩ppt)

    摘 要

    信息管理系统就是我们常说的mis(management informationsystem),它是一个计算机软硬件资源以及数据库的人-机系统。经过对题目和内容的分析,选用了microsoft公司的asp.net开发工具,由于它提供了用于从数据库中访问数据的强大工具集,使用它可以建立开发比较完善的数据库操作应用程序,并利用sqlserver2000提供数据库。根据实际情况,使用快速原型法(rapidprototyping)即以少量代价快速地构造一个可执行的软件系统模型。以此为基础,搭建了系统框架,对其下的功能模块进行了划分。初步实现了诸如添加、删除、查询、修改等功能,并通过权限控制,为不同的登录用户提供不同的功能。其间不断对系统进行改进和完善,解决了一些在数据更新时遇到的问题,并针对系统的不足之处,提出了新的解决方案。

    关键词:信息管理系统;asp.net;面向对象;原型法

    design and implementation of a management information system for anenterprise

    abstract

    mis, which is the short name for management information system, isthe interface between human and computer connecting human with thehardware and database. after analyzing the title and content, wedecided to utilize the asp.net from microsoft because it providesus a helpful toolkit for the database access. better databaseapplications based on sql server2000 can be designed by utilizingthe software. according to the actual situation, the rapidprototyping with less cost and efficiency is used to form theframework. the system framework is constructed and the functionalmodules are separated based on precious work. the basic functionssuch as insertion, deletion, search, modification are realized. anddifferent functions can be provided to different clients by rightcontrol in the system. several improvements have been made to dealwith the problems which emerge from the data upgrade during theperiod of development. a new solution is presented in thisthesis.

    key words: management information system; asp.net; object-oriented;prototyping

    目 录

    论文总页数:28页

    1 引言 1

    1.1 信息管理系统 1

    1.2 课题研究的意义 1

    1.3 技术选定 1

    2 企业信息管理系统简介以及系统概要设计 2

    2.1 企业信息管理系统总体功能需求 2

    2.2 企业信息管理系统功能模块设计 2

    2.3 系统具体功能描述 3

    2.3.1 管理员模块功能 3

    2.3.2 高级用户模块功能 3

    2.3.3 普通用户模块功能 4

    2.4 企业信息管理系统性能需求 4

    2.5 企业信息管理系统的分析和概要设计 5

    2.5.1 企业信息管理系统分析 5

    2.5.2 企业信息管理系统数据库设计 7

    3 企业信息管理系统的具体实现 9

    3.1 实现技术简介 9

    3.2 页面的具体实现 10

    3.2.1 用户登录页面 10

    3.2.2 用户管理页面 11

    3.2.3 员工信息管理页面 14

    3.2.4 人事变动页面 14

    3.2.5 奖惩信息页面 15

    3.2.6 个人信息页面 15

    3.2.7 高级用户界面 15

    3.2.8 招聘相关页面 15

    3.2.9 留言板相关页面 17

    3.3 功能测试 18

    3.3.1 测试方式 18

    3.3.2 测试内容 18

    3.3.3 测试总结 22

    3.4 总结 22

    结 论 22

    参考文献 22

    致 谢 23

    声 明 23

范文7:.net面试题目【以文搜文】

经典.net面试

这些是C#和ASP.NET数据库面试题,全部从网上收集而来,经整理而发表,希望给大家带来帮助,有错误的地方还请各位高手指出,在下倾听指教。

1. 简述private、protected、public、internal 修饰符的访问权限。

答. private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同一命名空间内可以访问。

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

答.

1.使用QueryString, 如....?id=1; response. Redirect()....

2.使用Session变量

3.使用Server.Transfer

4.使用Application

5.使用Cache

6使用HttpContext的Item属性

7.使用文件

8.使用数据库

9.使用Cookie

3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,

法实现。

答:public class MainClass

{

public static void Main()

{

Console.WriteLine(Foo(30));

}

public static int Foo(int i)

{

if (i <= 0)

return 0;

else if(i > 0 && i <= 2)

return 1;

else return Foo(i -1) + Foo(i - 2);

}

}

4.C#中的委托是什么?事件是不是一种委托?

答 : 用递归算

委托可以把一个方法作为参数代入另一个方法。

委托可以理解为指向一个函数的引用。

是,是一种特殊的委托

5.override与重载的区别

答 :

重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要

Override 是进行基类中函数的重写。实现多态。

6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?

答 :

1.使用QueryString, 如....?id=1; response. Redirect()....

2.使用Server.Transfer

3.使用Cache

4使用HttpContext的Item属性

5.使用文件

6.使用数据库

7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?

答:

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 ;

}

}

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

答:

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 ;

}

}

}

9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?(索引器是对属性的封装,具体查看msdn)

答:不是。可以用任意类型。

10.求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m

答:

int Num = this.TextBox1.Text.ToString() ;

int Sum = 0 ;

for (int i = 0 ; i < Num + 1 ; i++)

{

if((i%2) == 1)

{

Sum += i ;

}

else

{

Sum = Sum - I ;

}

}

System.Console.WriteLine(Sum.ToString());

System.Console.ReadLine() ;

11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

答:使用MVC模式分层

一般为3层

数据访问层,业务层,表示层。

数据访问层对数据库进行增删查改。

业务层一般分为二层,业务表视层实现与表示层的沟通,业务规则层实现用户密码的安全等。 表示层为了与用户交互例如用户添加表单。

优点:分工明确,条理清晰,易于调试,而且具有可扩展性。

缺点:增加成本。

12.在下面的例子里

using System;

class A

{

public A()

{

PrintFields();

}

public virtual void PrintFields(){}

}

class B:A

{

int x=1;

int y;

public B()

{

y=-1;

}

public override void PrintFields()

{

Console.WriteLine(

}

}

当使用new B()创建B的实例时,产生什么输出?

答:X=1,Y=0;x= 1 y = -1

注:B类中的PrintFields()未用override关键字实现重写的时候,创建B的实例时:

X=1,Y = -1

13.什么叫应用程序域?

答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。

14.CTS、CLS、CLR分别作何解释?

答:CTS:通用类型系统。CLS:公共语言规范。CLR:公共语言运行库。

15.什么是装箱和拆箱?

答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

16.什么是受管制(托管)的代码?

答:

托管代码是运行.NET 公共语言运行时CLR的代码

unsafe:非托管代码。不经过CLR运行。程序员自行分配和释放内存空间

17.什么是强命名程序集?

答:程序集需要经过加密签名,强命名程序集可以部署到全局程序集缓存中,成为公共程序集

18..net中读写数据库需要用到那些类?他们的作用?

答:

DataSet:数据集。

DataCommand:执行语句命令。

DataAdapter:数据的集合,用语填充。

DataReader:数据只读器

19.ASP.net的身份验证方式有哪些?分别是什么原理?

答:

Windows(默认)用IIS控制

From(窗体)用帐户

Passport(密钥)

20.什么是Code-Behind技术?

答:代码后置。

21.在.net中,配件的意思是?

答:程序集。(中间语言,源数据,资源,装配清单)

22.常用的调用WebService的方法有哪些?

答:1.使用WSDL.exe命令行工具。

2.使用VS.NET中的Add Web Reference菜单选项

23..net Remoting 的工作原理是什么?

答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

24.在C#中,string str = null 与string str = “” 请尽量使用文字或图象说明其中的区别。 答:string str = null 是不给他分配内存空间,而string str =

25.请详述在dotnet中类(class)与结构(struct)的异同?

答:class可以被实例化,属于引用类型,class可以实现接口和单继承其他类,还可以作为基类型,是分配在内存的堆上的

struct属于值类型,不能作为基类型,但是可以实现接口,是分配在内存的栈上的.

26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:

namespace test

{

public delegate void OnDBOperate();

public class UserControlBase : System.Windows.Forms.UserControl

{

public event OnDBOperate OnNew;

private void toolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e) {

if(e.Button.Equals(BtnNew))

{

//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

}

}

}

答:if( OnNew != null )

OnNew( this, e );

27.分析以下代码,完成填空

string strTmp =

int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;

int j= strTmp.Length;

以上代码执行完后,i= j=

答:i=13,j=10

28.Sql Server服务器中,给定表table1 中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号

答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)

29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。

public void test(int i)

{

lock(this)

{

if (i>10)

{

i--;

test(i);

}

}

}

答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。

答:webservice主要是可利用HTTP,穿透防火墙。

Remoting可以利用TCP/IP,二进制传送提高效率。

31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路

答:根据点击的列头,把该列的ID取出,按照该ID排序后,在给绑定到ListView中。

32.给定以下XML文件,完成算法流程图。

请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。

答:

void FindFile( Directory d )

{

FileOrFolders = d.GetFileOrFolders();

foreach( FileOrFolder fof in FileOrFolders )

{

if( fof is File )

You Found a file;

else if ( fof is Directory )

FindFile( fof );

}

}

33.写出一条Sql语句:取出表A中第31到第40记录(SQL Server以自动增长的ID作为主键,注意:ID可能不是连续的。

答:

解1: select top 10 * from A where id not in (select top 30 id from A)

解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

34.面向对象的语言具有________性、_________性、________性

答:封装、继承、多态。

35.能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。

答:IEnumerable 、GetEnumerator。

36.GC是什么? 为什么要有GC?

答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

37.String s = new String(

答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

38.abstract class和interface有什么区别?

答:

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

39.启动一个线程是用run()还是start()?

答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。

run()方法可以产生必须退出的标志来停止一个线程。

40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

答:接口可以继承接口。

抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

41.构造器(构造函数)Constructor是否可被override?

答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

42.是否可以继承String类?

答:String类是密封类故不可以继承。

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

答:会执行,在return前执行。

44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的hash code。

45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

答:switch(expr1)中,expr1是一个整数表达式。因此传递给switch 和case 语句的参数应该是int、short、char 或者byte。long,string 都不能作用于swtich。

46.什么是SOAP,有哪些应用?

答:SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议,使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上以任何语言相互通信,这种相互通信采用的是XML格式的消息。

SOAP也被称作XMLP,为两个程序交换信息提供了一种标准的工作机制。在各类机构之间通过电子方式相互协作的情况下完全有必要为此制定相应的标准。

SOAP描述了把消息捆绑为XML的工作方式。它还说明了发送消息的发送方、消息的内容和地址以及发送消息的时间。SOAP是Web Service的基本通信协议。SOAP规范还定义了怎样用XML来描述程序数据(Program Data),怎样执行RPC(Remote Procedure Call)。大多数SOAP解决方案都支持RPC-style应用程序。SOAP还支持 Document-style应用程序(SOAP消息只包含XML文本信息)。

最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。MSMQ、SMTP、TCP/IP都可以做SOAP的传输协议。

SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。

SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。 为此,它提供了一种基于 XML 且具有以下特性的消息处理框架: 1) 可扩展, 2) 可通过多种底层网络协议使用, 3) 独立于编程模型

47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

不能,一个对象的一个synchronized方法只能由一个线程访问。

48.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

答:都不能。

49.List, Set, Map是否继承自Collection接口?

答:List、Set是,Map不是

50.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

51.数组有没有length()这个方法? String有没有length()这个方法?

答:数组没有length()这个方法,有length的属性。String没有length()这个方法,有length属性。

52.sleep() 和wait() 有什么区别?

答:是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

53.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型,需要强制转换类型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

54.谈谈final, finally, finalize的区别。

答:

—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

—在异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。

—方法名。Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

55.如何处理几十万条并发数据?

答:用或。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.

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

答:是IIS中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

57.进程和线程的区别?

答:

1.线程(Thread)与进程(Process)二者都定义了某种边界,不同的是定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而定义的是代码执行堆栈和执行上下文的边界。

2.一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

或者:

是系统进行资源分配和调度的单位;

是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

58.堆(Heap)和栈(stack)的区别?

答:

栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

59.成员变量和成员函数前加static的作用?

答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

60.ASP.NET与ASP相比,主要有哪些进步?

答:asp解释形,aspx编译型,性能提高,有利于保护源码。

61.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

int[] intArr=new int[100];

ArrayList myList=new ArrayList();

Random rnd=new Random();

while(myList.Count<100)

{

int num=rnd.Next(1,101);

if(!myList.Contains(num))

myList.Add(num);

}

for(int i=0;i<100;i++)

intArr[i]=(int)myList[i];

62.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

答:

session(viewstate) 简单,但易丢失

application 全局

cookie 简单,但可能不支持,可能被伪造

input ttype=

url参数简单,显示于地址栏,长度有限

数据库稳定,安全,但性能相对弱

63.请指出GAC的含义?

答:全局程序集缓存。

64.向服务器发送请求有几种方式?

答:get,post。

get一般为链接方式,post一般为按钮方式。

65.DataReader与Dataset有什么区别?

答:一个是只能向前的只读游标,一个是内存中的表。

66.软件开发过程一般有几个阶段?每个阶段的作用?

答:可行性分析(风险控制),需求分析,架构设计,代码编写,测试,部署,维护

67.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?

答:using 引入名称空间或者使用非托管资源,使用完对象后自动执行实现了IDisposable接口的类的Dispose方法

new 新建实例或者隐藏父类方法

68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个. 答:string inputStr=

inputStr=Regex.Replace(inputStr.Trim(),

69.下面这段代码输出什么?为什么?

int i=5;

int j=5;

if (Object.ReferenceEquals(i,j))

Console.WriteLine(

else

Console.WriteLine(

答:不相等,因为比较的是对象

70.什么叫做SQL注入,如何防止?请举例说明。

答:利用SQL关键字对网站进行攻击。

预防SQL注入:过滤关键字、使用存储过程、参数化等

71.什么是反射?

答:动态获取程序集信息

或者:

程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例

72.用Singleton如何写设计模式

答:static属性里面new ,构造函数private

73.什么是Application Pool?

答:Web应用,类似Thread Pool,提高并发性能。

74.什么是虚函数?什么是抽象函数?

答:虚函数:没有实现的,可由子类继承并重写的函数。

抽象函数:规定其非虚子类必须实现的函数,必须被重写。

75.什么是XML?

答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

76列举一下你所了解的XML技术及其应用

答:xml用于配置,用于保存静态数据类型。接触XML最多的是web Services.和config,存储经常使用但是不经常修改的数据

77.什么是Web Service?UDDI?

答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

78.什么是ASP.net中的用户控件?

答:用户控件一般用在内容多为静态,或者少许会改变的情况下。.用的比较多,类似ASP中的include。但是功能要强大的多。

79.什么是code-Behind(代码后置)技术。

答:ASPX、RESX和CS三个后缀的文件,这个就是代码分离。实现了HTML代码和服务器代码分离,方便代码编写和整理。

80.ADO.net中常用的对象有哪些?

答:

SqlConnection 数据库连接对象??

SqlCommand 数据库命令对象??

SqlDataAdapter 数据适配器??

SqlDataReader 数据库读取器,“只读、向前”,不能后退地读取数据??

DataSet 数据集,相当于内存中的数据库

81. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如

何移动?

答:62移动成2的6次方

82.C#中property 与attribute的区别,他们各有什么用处,这种机制的好处在哪里? 答:一个是特性,用来标识类,方法等的附加性质;

一个是属性,用于存取类的字段,

83.XML 与HTML 的主要区别

答:

1. XML是区分大小写字母的,HTML不区分。

2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略

或者之类的结束标记。在XML中,绝对不能省略掉结束标记。

3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/ 字符作为结尾。这样分析器就知道不用查找结束标记了。

4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

84.C#中的三元运算符是?

答:?:。

85.当整数a赋值给一个object对象时,整数a将会被?

答:装箱。

86.类成员有_____种可访问形式?

答:this.;

new Class().Method;

87.public static const int A=1;这段代码有错误么?是什么?

答:const不能用static修饰。

88.float f=-123.567F; int i=(int)f;i的值现在是_____?

答:-123。

89.委托声明的关键字是______?

答:delegate.

90.用sealed修饰的类有什么特点?

答:密封,不能继承。

91.在Asp.net中所有的自定义用户控件都必须继承自________?

答:Control。

92.在.Net中所有可序列化的类都被标记为_____?

答:[serializable]

93.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?

答:GC(垃圾收集器)。

94.下面的代码中有什么错误吗?_______

using System;

class A

{

public virtual void F()

{

Console.WriteLine(

}

}

abstract class B:A

{

public abstract override void F();

} // new public abstract void F();

答:abstract override 是不可以一起修饰.

95.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以or 不可以)从T派生出新的类,不可以____(可以or 不可以)直接创建T的任何实例。 答:不可以,不可以。

96.下面这段代码有错误么?

switch (i)

{

case(): 答://case()条件不能为空

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault; 答://wrong,格式不正确

CaseTwo();

break;

}

97.在.Net中,类System.Web.UI.Page 可以被继承么?

答:可以。

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

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

99.利用operator声明且仅声明了==,有什么错误么?

答:要同时修改Equale和GetHash() ? 重载了

100.在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。

答:在form中重载DefWndProc函数来处理消息:

protected override void DefWndProc ( ref System.WinForms.Message m ) operator

{

switch(m.msg)

{

case WM_Lbutton :

///string与MFC中的CString的Format函数的使用方法有所不同

string message = string.Format(

break;

case USER:

处理的代码

default:

base.DefWndProc(ref m);///调用基类函数处理非自定义消息。

break;

}

}

101.在.net(C# or vb.net)中如何取消一个窗体的关闭。

答:

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) {

e.Cancel=true;

}

102.在.net(C# or vb.net)中,Appplication.Exit 还是Form.Close有什么不同?(winform题目非asp.net题目)

答:一个是退出整个应用程序,一个是关闭其中一个form。

103.在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22

答:System.Globalization.CultureInfo MyCulture = new

System.Globalization.CultureInfo(

//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(

decimal y = 9999999999999999999999999999m;

string str = String.Format(MyCulture,

104.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

(1)密码单词的最小长度是两个字母,可以相同,也可以不同

(2)K不可能是单词的第一个字母

(3)如果L出现,则出现次数不止一次

(4)M不能使最后一个也不能是倒数第二个字母

(5)K出现,则N就一定出现

(6)O如果是最后一个字母,则L一定出现

问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?

A) K B)L C) M D) N

答案:B

问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?

A)1个B)3个C)6个D)9个

答案:A

问题三:下列哪一个是单词密码?

A) KLLN B) LOML C) MLLO D)NMKO

答案:C

105.对于这样的一个枚举类型:

enum Color:byte

{

Red,Green,Blue,Orange

}

答:string[] ss=Enum.GetNames(typeof(Color));

byte[] bb=Enum.GetValues(typeof(Color));

106. C#中 property 与attribute的区别,他们各有什么用处,这种机制的好处在哪里? 答:attribute:自定义属性的基类;property :类中的属性

107.C#可否对内存进行直接的操作?

答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员。但在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法

108.ADO.NET相对于ADO等主要有什么改进?

答:

1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,

2:不使用com

3:不在支持动态游标和服务器端游标

4:,可以断开connection而保留当前数据集可用

5:强类型转换

6:xml支持

109.写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”,并在2分钟后自动关闭页面。

答:

110.大概描述一下ASP.NET服务器控件的生命周期

答:初始化,加载视图状态,处理回发数据,加载,发送回发更改通知,处理回发事件,预呈现保存状态,呈现,处置,卸载。

111.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

答:不能,可以实现接口

112.Static Nested Class 和Inner Class的不同(说得越多越好)

答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

113.&和&&的区别。

答:&是位运算符,表示按位与运算;

&&是逻辑运算符,表示逻辑与(and).

114.HashMap和HashTable的区别。

答:HashMap是HashTable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

115.概述反射和序列化(serializable)

:反射提供了封装程序集,模块和类型对象,可以用反射动态的创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调用类型的方法或访问字段的属性。

:将对象转换为另一种媒介传输的格式过程,如,序列化一个对象,用HTTP通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。

116.Overloaded的方法是否可以改变返回值的类型?

答:Overloaded的方法是可以改变返回值的类型。

117.Error和Exception有什么区别?

答:

Error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

Exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

118.<% # %> 和<% %> 有什么区别?

答:<% # %>表示绑定的数据源

<% %>是服务器端代码块

119.你觉得ASP.NET 2.0(VS2005)和你以前使用的开发工具(.Net 1.0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern / architecture)可以移植到ASP.NET 2.0上(或者已经内嵌在ASP.NET 2.0中)

答:

1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.

2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无法 在页面嵌入服务器端代码获得帮助提示,

3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢

4 在绑定数据,做表的分页.UPDATE,DELETE,等操作都可以可视化操作,方便了初学者 5 在ASP.NET中增加了40多个新的控件,减少了工作量

120.重载与覆盖的区别?

答:

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

121.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

答:C#中索引器的实现过程,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类,显然,这一功能在创建集合类的场合特别适用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为

给类定义的索引器:

this [argument list]

{

get

{

// Get codes goes here

}

set

{

// Set codes goes here

}

}

如:

class Sample

{

public string this [int index]

{

get {return

}

}

类似数组的行为常受到程序言的喜爱,所以还可以为接口定义索引器,IList和IDictionary集合接口都声明了索引器,在为接口声明索引器的时候,记住声明只是表示索引器的存在,如:

interface IImplementMe {

string this[int index]

{

get;

set;

}

不是。可以用任意类型。

122.列举ADO.NET中的共享类和数据库特定类

共享类:DataSet、DataTable、DataRow、DataColumn、DataRelation、Constraint、 DataColumnMapping、DataTableMapping

特定类:(x)Connection、(x)Command、(x)CommandBuilder、(x)DataAdapter、

(x)DataReader、(x)Parameter、(x)Transaction

123.死锁的必要条件?

答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未完成前,不能强行剥夺。

124.Collection与Collections的区别?

答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全操作。

125.分析以下代码。

public static void test(string ConnectString)

{

System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = ConnectString;

try

{

conn.Open();

…….

}

catch(Exception Ex)

{

MessageBox.Show(Ex.ToString());

}

finally

{

if (!conn.State.Equals(ConnectionState.Closed))

conn.Close();

}

}

请问

1)以上代码可以正确使用连接池吗?

答:回答:如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。

2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?

答:只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。)

126.const和ReadOnly的区别?

const是编程时申明常量,ReadOnly用来申明运行时常量

127.什么是WSE?目前最新的版本是多少?

答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。

128.在下面的例子里

using System;

class A

{

public A()

{

PrintFields();

}

public virtual void PrintFields(){}

}

class B:A

{

int x=1;

int y;

public B()

{

y=-1;

}

public override void PrintFields()

{

Console.WriteLine(

}

当使用new B()创建B的实例时,产生什么输出?

答:X=1,Y=0

129.下面的例子中

using System;

class A

{

public static int X;

static A()

{

X=B.Y+1;

}

}

class B

{

public static int Y=A.X+1;

static B(){}

static void Main()

{

Console.WriteLine(

}

}

产生的输出结果是什么?

答:x=1,y=2

130.String和StringBuilder的区别。

答案:因为StringBuffer内部实现是char数组,默认初始化长度为16,每当字符串长度大于 char数组长度的时候,JVM会构造更大的新数组,并将原先的数组内容复制到新数组。String

是不可变对象,每次

关键点

1). 简单的认为 .append() 效率好于

2). 不要使用 new 创建 String

3). 注意 .intern() 的使用

4). 在编译期能够确定字符串值的情况下,使用

5). 避免使用

6). 在声明StringBuffer对象的时候,指定合适的capacity,不要使用默认值(16)

在.Net中是StringBuilder,而在JAVA中是StringBuffer

String s=new String (

131.简述asp.net缓存技术。

1.整页缓存:适用于不需要频繁更新数据的页面,占用大量时间和资源才能编译生成的页面

2.页面部分缓存:适用于页面内某些部分可能每次请求时都需要最新数据的情况,用缓存后替换的方法:就是将整个页面缓存,然后替换页面中不需要缓存的部分,主要通过使用Substitution控件实现的。

注意:Substitution控件MethodName属性所调用的方法必须满足:

必须是静态的方法

返回类型必须是String型

参数类型必须是HttpContext类型

3.应用程序缓存:是用来存储与应用程序相关的对象,主要由Cache类,实现缓存依赖的添加,检索,删除,它给我们提供了一种机制,使得我们可以通过编码方式灵活的控制缓存的操作,与前两种缓存方式相比,应用程序缓存的优点是灵活性

注意添加缓存的方法:

1.指定键值

2.使用Add()方法

3.使用Insert()方法

132.Asp.net中常用的几种页面传递参数的方法,优缺点?

答:session(viewstate)简单,但易丢失

application 全局的

cookie简单,但可能不支持,长度有限

数据库,稳定,安全,但性能相对弱

133.ASP.NET和ASP相比的进步?

asp解释型,aspx编译型,性能高,可以跟美工的工作分开进行,更有利于团队开发

134.sleep() 和 wait() 有什么区别?

sleep()方法是将当前线程挂起指定的时间。

wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁。

135.new 关键字用法

new 运算符 用于创建对象和调用构造函数。

new 修饰符 用于向基类成员隐藏继承成员。

new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。

new实现多态

136.如何把一个Array复制到ArrayList里

实现1 string[] s ={

137.DataGrid的DataSouse可以连接什么数据源

DataTable

DataView

DataSet

DataViewManager

任何实现IListSource接口的组件

任何实现IList接口的组件

138.什么是强类型,什么是弱类型?哪种更好些?为什么?

强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。

没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。

一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等。

139.DateTime是否可以为null?

不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null

140.using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的

有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。不明白什么是确定性终结

141.Assembly.Load(

错误,正确的应该是Assembly.Load(

142.如何理解死锁的概念?死锁是如何形成的?在应用中应注意什么事项避免死锁?

死锁是一种条件,不仅仅是在关系数据库管理系统 (RDBMS) 中发生,在任何多用户系统中都可以发生的。当两个用户(或会话)具有不同对象的锁,并且每个用户需要另一个对象的锁时,就会出现死锁。每个用户都等待另一个用户释放他的锁。当两个连接陷入死锁时,Microsoft? SQL Server? 会进行检测。其中一个连接被选作死锁牺牲品。该连接的事务回滚,同时应用程序收到错误。

阻塞

任何基于锁的并发系统都不可避免地具有可能在某些情况下发生阻塞的特征。当一个连接控制了一个锁,而另一个连接需要冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,或在第一个连接上阻塞。

其实所有的死锁最深层的原因就是一个——资源竞争。

表现一:

一个用户A 访问表A(锁住了表A),然后又访问表B,另一个用户B 访问表B(锁住了表B),然后企图访问表A。这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了。

同样用户B要等用户A释放表A才能继续这就死锁了。

解决方法:

这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法。

仔细分析你程序的逻辑:

1:尽量避免同时锁定两个资源;

2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源。 表现二:

用户A读一条纪录,然后修改该条纪录,这是用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。

这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。

解决方法:

让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock

143.什么是事务? 使用事务的语句有哪些?

答:事务是一种机制,是一个操作序列,它包括了一组数据库操作命令,并且所有的命令作为一个整体向

系统提交或者撤消操作请求,要么全部,要么全部不执行.

begin transaction

commit transaction

rollback transaction

145.请谈谈你对OOP的理解。

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:

组件 -数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。

抽象性 -程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。

封装 -也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。

多态性 -组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。

继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。

146.UDP连接和TCP连接的异同。

答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结. 或者

TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行 TCP连接之后才能传输数据。TCP提供超时重拨,检验数据功能。

UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。

147.常用的调用web service方法有哪些?

答:

可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP 使用WEB服务代理

148.私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

149.CLR与IL分别是什么含义?

CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。

150.请解释ASP.NET中以什么方式进行数据验证

答:Asp.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件

150.请解释web.config文件中的重要节点

appSettings包含自定义应用程序设置。

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

authentication身份验证,此节设置应用程序的身份验证策略。

authorization授权, 此节设置应用程序的授权策略.

151.请解释ASP.NET中的web页面与其隐藏类之间的关系?

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language=

Codebehind=

Inherits=

152.什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用。

153.发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决? 很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断

154.请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Application等)时就要以使用此对象

155.请简述一下用Socket进行同步通讯编程的详细步骤

1、在应用程序和远程设备中使用协议和网络地址初始化套接字

2、在应用程序中通过指定端口和地址建立监听

3、远程设备发出连接请求

4、应用程序接受连接产生通信scoket

5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

6、通讯结束,关闭应用程序和远程设备的Socket回收资源

156.能用foreach遍历访问的对象需要实现?

答:需要实现IEnumerable接口和GetEnumerator ()方法。

157.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么

答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策

158.ASP.NET与ASP相比,主要有哪些进步?

答 asp.net 可以使用强类型语言

页面是编译,执行速度快, 增加安全性和可靠性

,通过继承机制来支持代码的重用,提供声明性服务器控件减少代码行数

Asp需要解释,执行速度慢,重用代码不方便,没有调试机制

159.用最有效的方法算出等已8对于几?

答:2<<3.

160.请解释转发与跳转的区别?

答:Transfer是转发包括HttpHandler对象,Redirect是跳转。

Server.Transfer(ASP 3.0 以上)和Response.Redirect 在以前的ASP中就存在了,Page.Navigate是ASP.NET Beta 1 提供的新功能,它们之间的区别在于:

1、 Server.Transfer - 用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件(如:request, session 等)的保存的信息不变,因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程中,浏览器的 URL 栏不变。

2、Response.Redirect - 发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面 B,页面 B 将无法访问页面 A 中 Form 提交的数据。

3、Page.Navigate - Page.Navigate 实现的功能和 Response.Redirect 差不多,它实际上包括三个步骤:首先调用 Response.Redirect,其次依次卸载所有的控件,最后调用 Response.End。

161.请解释ASP.NET中button、linkbutton、imagebutton及hyperlink这四个控件之间的区别。

答: button和imagebutton 将数据传递回服务器

hyperlinK 页面之间的导航

linkbutton主要用于将数据保存到服务器或访问服务器上的数据

162.如果出现ASP.NET中的事件不能触发可能由于什么原因造成?

如果在web窗体中使用了验证控件,那么当验证控件中的验证逻辑没有通过时一般会使事件不能触发执行。

如果使用了诸如Textchange、Checkchange、Selectedindexchanged这类事件并在

服务器端进行了事件处理,但是没有设置AutoPostBack属性时会使事件不能触发执行。

163.什么情况用HTML控件,什么情况用WEB控件,并比较两者差别

答:客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用webcontrols。

164.你在写复杂web界面的时候遇到的最大困难是哪些方面

其实,复杂页面最大的困难并非如何画出此界面,而是如何让此界面清晰有条理.我们做页

面,并非仅显示数据,而是要准确/清晰地显示数据,想想看,如果用户要在此页面中查找一个数据,却杂乱无章,难以查看,你说用户会满意吗?

166.NET里面的datagrid翻页大多是先把数据读全部取到dataset里面,但是遇到10W条数据以上,这样的翻页事件开销会很大,页面执行起来反映很慢,你有什么好方法解决? 在数据量大的时候,有两个解决办法

1.使用存储过程.并且,并非因为存储过程比较快的原因.由于在数据库内部的存储过程,能够实现一些特殊的功能,比如说,可以直接根据当前的排序结果,仅仅取需要的几条数据,如此,无论数据是多少,它仅仅取需要的几条.

2.在实际的操作中,取出的数据,并非你有10万条,它就会把10万条全部取出来,而是受限于服务器的缓存,其实一次一般仅取1000条左右的记录,无论你数据多少,它仅会一次取这么多出来.所以,配合分页控件,再配合.NET提供的加载N条数据的方法,数据量大的情况下,不见得就会慢.

据我测试,真正慢的,是在取数据总共多少条这个步骤上.此操作在数据少时,没有影响,但在百万条记录以上时,求取数据总数,耗时就会大量增加.所以,大数据量条件下,即不应再显示

167.权限控制方面问题:

从面向对象的角度讲,如果一个程序中,没有应用角色及角色组的话,那么这个程序是不合格的.一般来说,权限是由权限及流程角色组合而来的,如果仅有权限而没有角色,那么这个控制不灵活;如果仅有角色没有权限,那么这个控制不细致.

当然,用SESSION肯定是要的,但这个SESSION,应当只记录当前用户的个人信息,比如他的用户名.在需要判断的时候,根据他的用户名(唯一),至数据库中去取他的权限,或在类中编写权限/角色,根据此用户的用户号及当前模块号,计算当前用户是否对当前页面有操作权限.不过,如果把用户的权限也取出来放在SESSION中的话,这种做法一般仅在很小的网站中使用,稍大一点的系统,基本不允许这么做,而且也做不到。

168.如何理解.net中的垃圾回收机制?

答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不用的内存的。已释放内存,重新使用。

169.解释一下UDDI、WSDL的意义及其作用?

答:UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,同时为也是为企业本身提供的 Web服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。

WSDL这是一个基于XML的描述WEB服务的接口。

170.在.NET中所有类的基类是?

答:object。

171.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务端

只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

172.值类型和引用类型的区别?

答:值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型。

173.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。 托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。

装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。

CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。

强类型系统:每个变量和对象都必须具有申明类型。

174.构造器Constructor是否可以被继承?是否可以被Override?

答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading)。

175.当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法

答:不可以,一个对象的方法只能由一个线程访问。

176.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?

答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。

177.谈谈final,finally,finallize的区别?

答:final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。

Finally是异常处理语句结构中,表示总是执行的部分。

Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。

以下是08年3月新增面试题

1. asp.net中web应用程序获取数据的流程:

A.Web Page

B.Fill

C.Sql05

D.Data Sourse

E.DataGrid

F.DataSet

G.Select and Connect

Commands H.Sql Data Adapter

答案:a,e,d,f,h,g,b,c

2. Asp.net执行模式中各组件填入到对应位置:

A.Output Cache

B.Parser

C.Assembly Cache

D.IE

E.Memory

F.Compiler

WebPage被第一次请求时:

D->__->__->__->__->D

WebPage被第二次请求时:

D->__->__->D

WebPage的页面输出缓存被打开时:

D->__->D

答案:

WebPage被第一次请求时:

D->_b_->_f_->_a_->_e_->D

WebPage被第二次请求时:

D->_b_->_e_->D

WebPage的页面输出缓存被打开时:

D->_a_->D

3.两个数组[n] [m] n>m 第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。

int[] a = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };

int[] b = new int[10];

int intTmp = a[0], intMaxNum;

for (int i = 0; i < a.Length; i++)

{

intTmp = a[i] > intTmp ? a[i] : intTmp;

}

intMaxNum = intTmp;

for (int j = 0; j < b.Length; j++)

{

for (int i = 0; i < a.Length; i++)

{

if (j == 0)

intTmp = a[i] < intTmp ? a[i] : intTmp;

else

{

if (a[i] > b[j - 1])

intTmp = a[i] < intTmp ? a[i] : intTmp;

}

}

b[j] = intTmp;

intTmp = intMaxNum;

}

foreach (int bb in b)

{

Console.WriteLine(bb);

}

Console.ReadLine();

4.请将字符串

string S =

char[] C = new char[] { ' '};

string[] n =S.Split(C);

int length = S.Length;

for (int i =length-1 ; i >=0; i--)

{

Console.Write(n[i]);

if (i != 0)

{

Console.Write(

}

}

在网上找来的,希望对大家有所帮助。

1 (1)面向对象的语言具有__继承性_性、_封装性_性、_多态性 性。

(2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__

2.当整数a赋值给一个object对象时,整数a将会被__装箱___?

3.类成员有__3__种可访问形式?

4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static

5.float f=-123.567F;

int i=(int)f; i的值现在是_-123____?

6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了

7.委托声明的关键字是___ delegate ___?

8.用sealed修饰的类有什么特点?不可被继承

9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?

10.在.Net中所有可序列化的类都被标记为__[serializable]___?

11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __?

12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______

using System;

class A

{

public virtual void F(){

Console.WriteLine(

}

}

abstract class B:A

{

public abstract override void F();

}

13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。

14.下面这段代码有错误么?case():不行 default;

switch (i){

case():

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault;

CaseTwo();

break;

}

15.在.Net中,类System.Web.UI.Page 可以被继承么?可以

2. 不定项选择:

(1) 以下叙述正确的是: B C

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

(2) 从数据库读取记录,你可能用到的方法有:B C D

A. ExecuteNonQuery B. ExecuteScalar C. Fill D.

ExecuteReader

2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

A.Close B.Dispose C.Finalize

D.using E.Quit

3.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

1.在对SQL Server 数据库操作时应选用(A)。

a)SQL Server .NET Framework 数据提供程序;

b)OLE DB .NET Framework 数据提供程序;

c)ODBC .NET Framework 数据提供程序;

d)Oracle .NET Framework数据提供程序;

2.下列选项中,(C)是引用类型。

a)enum类型 b)struct类型 c)string类型 d)int类型

3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。 b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

d)以上都不正确。

4.以下描述错误的是(A)

a)在C++中支持抽象类而在C#中不支持抽象类。

b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。

d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

5.C#的数据类型有(A)

a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;

6.下列描述错误的是(D)

a)类不可以多重继承而接口可以;

b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;

d)一个类可以有多个基类和多个基接口;

7.在DOM中,装载一个XML文档的方法(D)

a)save方法 b)load方法 c)loadXML方法 d)send方法

8.下列关于构造函数的描述正确的是(C)

a)构造函数可以声明返回类型。

b)构造函数不可以用private修饰

c)构造函数必须与类名相同

d)构造函数不能带参数

9.以下是一些C#中的枚举型的定义,其中错误的用法有()

a)public enum var1{ Mike = 100, Nike = 102, Jike }

b)public enum var1{ Mike = 100, Nike, Jike }

c)public enum var1{ Mike=-1 , Nike, Jike }

d)public enum var1{ Mike , Nike , Jike }

10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new

int[2]{3,2}}; myArray3[2][2]的值是(D)。

a)9 b)2 c)6 d)越界

11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。 a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段; d)事件和字段;

12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A )

a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件 d)HTML控件和IIS控件

13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( D)

a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>

b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>

c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>

d)以上皆非

14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。

a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

c)Select操作的Sql语句只能由ExecuteReader()方法来执行;

d)ExecuteReader()方法返回一个DataReder对象;

15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。

a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。

a)Buttons属性表示ToolBar控件的所有工具栏按钮

b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度

c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键

d)ButtonClick事件在用户单击工具栏任何地方时都会触发

17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。

a)大小; b)上限; c)初始值; d)类型;

18.如果将窗体的FormBoderStyle设置为None,则( B)。

a)窗体没有边框并不能调整大小; b)窗体没有边框但能调整大小;

c)窗体有边框但不能调整大小; d)窗体是透明的;

19.如果要将窗体设置为透明的,则( B)

a)要将FormBoderStyle属性设置为None; b)要将Opacity属性设置为小于100%得值; c)要将locked 属性设置为True; d)要将 Enabled属性设置为True;

20.下列关于C#中索引器理解正确的是(B/C )

a)索引器的参数必须是两个或两个以上 b)索引器的参数类型必须是整数型

c)索引器没有名字 d)以上皆非

21.下面描述错误的是( C/D)。

a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类;

22.要对注册表进行操作则必须包含( D)。

a)System.ComponentModel命名空间; b)System.Collections命名空间;

c)System.Threading命名空间; d)Microsoft.Win32命名空间;

23.要创建多文档应用程序,需要将窗体的(D )属性设为true。

a)DrawGrid; b)ShowInTaskbar; c)Enabled; d)IsMdiContainer;

24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add(

a)TreeNode;

b)int;

c)string;

d)TreeView;

25.下面关于XML的描述错误的是(D)。

a)XML提供一种描述结构化数据的方法;

b)XML 是一种简单、与平台无关并被广泛采用的标准;

c)XML文档可承载各种信息;

d)XML只是为了生成结构化文档;

1.装箱、拆箱操作发生在: ( C )

A.类与对象之间 B.对象与对象之间

C.引用类型与值类型之间 D.引用类型与引用类型之间

2.用户类若想支持Foreach语句需要实现的接口是: ( A )

A.IEnumerableB.IEnumerator

C.ICollectionD.ICollectData

3..Net Framework通过什么与COM组件进行交互操作?( C )

A.Side By SideB.Web Service

C.InteropD.PInvoke

4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?( A )

A.Side By SideB.Interop

C.PInvokeD.COM+

5.装箱与拆箱操作是否是互逆的操作?( B )

A.是B.否

6.以下哪个是可以变长的数组?( D )

A.Array B.string[]

C.string[N] D.ArrayList

7.用户自定义异常类需要从以下哪个类继承:( A )

A.Exception B.CustomException

C.ApplicationException D.BaseException

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

try

{

}

catch(FileNotFoundException e1)

{

}

catch(Exception e2)

{

}

catch(IOException e3)

{

}

catch

{

}

9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

A.Close B.DisposeC.Finalize

D.using E.Quit

10.Net依赖以下哪项技术实现跨语言互用性?( C )

A.CLR B.CTS C.CLS D.CTT

11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答) 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。

12.以下哪个类是int的基类?( )

A.Int32 B.Object C.ValueType D.Int16

二、C# 部分*

13.以下哪些可以作为接口成员?(多选) ( ABDE )

A.方法B.属性C.字段D.事件E.索引器

F.构造函数G.析构函数

14.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?( B )

A.public B.protected C.internal D.protected internal

16.class Class1

{

private static int count = 0;

static Class1()

{

count++;

}

public Class1()

{

count++;

}

}

Class1 o1 = new Class1();

Class1 o2 = new Class1();

请问,o1.Count的值是多少?( C )

A.1 B.2 C.3 D.4

17.abstract class BaseClass

{

public virtual void MethodA()

{

}

public virtual void MethodB()

{

}

}

class Class1: BaseClass

{

public void MethodA(string arg)

{

}

public override void MethodB()

{

}

}

class Class2: Class1

{

new public void MethodB()

{

}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

Console.WriteLine(o.MethodA());

}

}

请问,o.MethodA调用的是: ( A )

A.BaseClass.MethodAB.Class2.MethodA

C.Class1.MethodAD.都不是

18.请叙述属性与索引器的区别。

属性 索引器

通过名称标识。 通过签名标识。

通过简单名称或成员访问来访问。 通过元素访问来访问。

可以为静态成员或实例成员。 必须为实例成员。

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

属性的 set 访问器包含隐式 value 参数。 除了 value 参数外,索引器的 set 访问器还具有与索引器相同的形参表。

19.请叙述const与readonly的区别。

每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。 为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。

const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。

readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。

所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:

a、 匿名用户不允许访问这个应用程序。

b、 所有雇员除了Tess和King都允许访问这个应用程序。

请问您应该使用以下哪一个代码段来配置这个应用程序?( A )

A.

B.

C.

D.

E.

22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?( C? )

A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。

B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。

C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。

D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。

23.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)( CD )

A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。

B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。

C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。

D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。 E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。

F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。

24.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?( B )

A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated

Security=SSPI”

B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”

C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI”

D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI”

25.您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员列表的DataSet对象。请问您该如何在这个程序中使用这

个 Xml Web Service?( ? )

A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。

B.在“Web引用”对话框中输入这个 XML Web service 的地址。

C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。

D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。

26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的

CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? ( B )

A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将

CommandText属性修改为”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。

B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid控件。

C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。

D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。

76.C#代码实现,确保windows程序只有一个实例(instance)

///

///应用程序的主入口点。

///

[STAThread]

staticvoid Main()

{

//防止程序多次运行

if(!OneInstance.IsFirst(

{

MessageBox.Show (

return;

}

Application.Run(new Form1());

}

// ******************* 防止程序多次执行 **************************

publicabstractclass OneInstance

{

///

///判断程序是否正在运行

///

///

///如果程序是第一次运行返回True,否则返回False

publicstaticbool IsFirst(string appId)

{

bool ret=false;

if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)

{

CreateMutex(IntPtr.Zero,0,appId);

ret=true;

}

return ret;

}

[DllImport(

privatestaticextern IntPtr OpenMutex(

uint dwDesiredAccess, // access

int bInheritHandle, // inheritance option

string lpName // object name

);

[DllImport(

privatestaticextern IntPtr CreateMutex(

IntPtr lpMutexAttributes, // SD

int bInitialOwner, // initial owner

string lpName // object name

);

}

3. 简述 private、 protected、 public、 internal 修饰符的访问权限。

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

4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)

select top 10 * from A where id not in (select top 30 id from A)

解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 5 .列举ASP.NET 页面之间传递值的几种方式。

1. 使用QueryString, 如....?id=1; response. Redirect()....

2.使用Session变量

3.使用Server.Transfer

2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

session(viewstate) 简单,但易丢失

application 全局

cookie 简单,但可能不支持,可能被伪造

input ttype=

url参数简单,显示于地址栏,长度有限

数据库稳定,安全,但性能相对弱

2.override与重载的区别

Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

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

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

4、C#中接口和类的异同

接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。

4、DataReader和DataSet的异同

DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..

DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...

1. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?

Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法

2.在下面的例子里

using System;

class A

{

public A(){

PrintFields();

}

public virtual void PrintFields(){}

}

class B:A

{

int x=1;

int y;

public B(){

y=-1;

}

public override void PrintFields(){

Console.WriteLine(

}

当使用new B()创建B的实例时,产生什么输出?X=1,Y=0

3.下面的例子中

using System;

class A

{

public static int X;

static A(){

X=B.Y+1;

}

}

class B

{

public static int Y=A.X+1;

static B(){}

static void Main(){

Console.WriteLine(

}

}

产生的输出结果是什么?x=1,y=2

4.谈谈类和结构的区别?

最大区别一个是引用类型,一个是值类型 默认成员访问为public是另外一个区别

1. 在.net(C# or vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。 this(C#) Me(vb.net).

2在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。

在form中重载DefWndProc函数来处理消息:

protected override void DefWndProc ( ref System.WinForms.Message m )

{

switch(m.msg)

{

case WM_Lbutton :

///string与MFC中的CString的Format函数的使用方法有所不同

string message = string.Format(

break;

case USER:

处理的代码

default:

base.DefWndProc(ref m);///调用基类函数处理非自定义消息。

break;

}

}

3. 在.net(C# or vb.net)如何启动另一个程序。process

4. 在.net(C# or vb.net)中如何取消一个窗体的关闭

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) {

e.Cancel=true;

}

5. 在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?

答案:一个是退出整个应用程序,一个是关闭其中一个form

6. 在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22

答案:

System.Globalization.CultureInfo MyCulture = new

System.Globalization.CultureInfo(

//System.Globalization.CultureInfo MyCulture = new

System.Globalization.CultureInfo(

decimal y = 9999999999999999999999999999m;

string str = String.Format(MyCulture,

7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

(1) 密码单词的最小长度是两个字母,可以相同,也可以不同

(2) K不可能是单词的第一个字母

(3) 如果L出现,则出现次数不止一次

(4) M不能使最后一个也不能是倒数第二个字母

(5) K出现,则N就一定出现

(6) O如果是最后一个字母,则L一定出现

问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?

A) K B)L C) M D) N

答案:B

问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?

A)1个 B)3个 C)6个 D)9个

答案:A

问题三:下列哪一个是单词密码?

A) KLLN B) LOML C) MLLO D)NMKO

答案:C

8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动? 答案:62移动成2的6次方

new有几种用法

第一种:new Class();

第二种:覆盖方法

public new XXXX(){}

第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。

2.如何把一个array复制到arrayList里

foreach( object o in array )arrayList.Add(o);

3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]

dataset,datatable,dataview , IList

4.概述反射和序列化

反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。

您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

5.概述o/r mapping 的原理

利用反射,配置 将类于数据库表映射

7.用sealed修饰的类有什么特点

sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。

密封类不能同时为抽象类。

sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

11.详述.NET里class和struct的异同!

class:放在 ? struct放在?

struct值传递

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。

12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。

远程逻辑调用,remoing接口只能用在.net中

13.什么是code-behind技术 aspx and cs

14.概述三层结构体系 web/business/dataaccess

15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess

2.什么是ASP.net中的用户控件

答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.

4.列举一下你所了解的XML技术及其应用

答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.

5.值类型和引用类型的区别?写出C#的样例代码。

答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.

6.ADO.net中常用的对象有哪些?分别描述一下。

答:connection command sqladapter dataset datatable dataview等等.写不完了.

7.如何理解委托?

答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.

msdn2005中是这样解释的:

委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

8.C#中的接口和类有什么异同。

答:接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!

而类是负责功能的具体实现!

在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的!

一个类只可以继承一个基类也就是父类,但可以实现多个接口

9.。net中读写数据库需要用到哪些类?他们的作用

答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.

10.UDP连接和TCP连接的异同。

答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.

11.ASP.net的身份验证方式有哪些?分别是什么原理?

答:form认证,windows集成认证等,原理不清楚.

13.什么是code-Behind技术。

答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

15..net中读写XML的类都归属于哪些命名空间?

答:System.Xml

16.解释一下UDDI、WSDL的意义及其作用。

答:

17.什么是SOAP,有哪些应用。

答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html

20.常用的调用webservice方法有哪些?

答:

可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP 使用WEB服务代理

6. 私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

7. 请解释进程与线程的区别?进程与程序的区别?

一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。

8. CLR与IL分别是什么含义?

CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。

10 .请解释ASP。NET中以什么方式进行数据验证

Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件

11. WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端

只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

12. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

可以调用

例如:

runat=

13. 请解释web.config文件中的重要节点

appSettings包含自定义应用程序设置。

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

authentication身份验证,此节设置应用程序的身份验证策略。

authorization授权, 此节设置应用程序的授权策略.

14. 请解释ASP。NET中的web页面与其隐藏类之间的关系?

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language=

Inherits=

Codebehind=

Inherits=

15. 什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

16. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断

17. 请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象

(Response,Request,Session,Server,Appliction等)时就要以使用此对象

18. 请解释转发与跳转的区别?

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面

跳转就是指客户端的跳转

1.请简述一下用Socket进行同步通讯编程的详细步骤

1、在应用程序和远程设备中使用协议和网络地址初始化套接字

2、在应用程序中通过指定端口和地址建立监听

3、远程设备发出连接请求

4、应用程序接受连接产生通信scoket

5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

6、通讯结束,关闭应用程序和远程设备的Socket回收资源

1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。

string str = null 是不给他分配内存空间,而string str = “”给它分配长度为空字符窜的内存空间.

2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)

Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.

3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10)

namespace test

{

public delegate void OnDBOperate();

public class UserControlBase : System.Windows.Forms.UserControl

{

public event OnDBOperate OnNew;

privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)

{

if(e.Button.Equals(BtnNew))

{

//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事

件。 }

}

}

}

____________________________________________________________________ if( OnNew != null )

OnNew( this, e );

4、分析以下代码,完成填空(10分)

string strTmp =

int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;

int j= strTmp.Length;

以上代码执行完后,i= j= i还真的不知道, j=10

5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)

select top ID from table1 order by LastUpdateData desc

8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)

remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的

DCOM Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型

9.什么叫做SQL注入,如何防止?请举例说明。

利用sql关键字对网站进行攻击。过滤关键字'等

所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。

http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 'sonybb' 转换为数据类型为 int 的列时发生语法错误。

a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

int[] intArr=new int[100];

ArrayList myList=new ArrayList();

Random rnd=new Random();

while(myList.Count<100)

{

int num=rnd.Next(1,101);

if(!myList.Contains(num))

myList.Add(num);

}

for(int i=0;i<100;i++)

intArr[i]=(int)myList[i];

20.请叙述类与结构的区别。

1)、结构是值类型;

2)、结构不支持继承;

3)、结构不能定义默认的构造函数;

4)、结构不能定义析构函数;

5)、结构不能使用初始值设置域值。

范文8:.NET试题大全,包括微软、华为、中兴等大企业的面试真题【以文搜文】

简要地写出一个.NET Remoting的示例

【考点】

.NET Remoting程序的原理,.NET Remoting的基本编写方法。

【出现频率】

★★☆☆☆

【解答】

在VS 2008中添加新的类库项目,并命名为NetRmClass,将所属解决方案命名为NetRm,勾选“创建解决方案的目录”。这样,NetRmClass类库项目目录即属于NetRm解决方案,并可以继续向该解决方案添加更多的其他相关项目。类库项目在这里仅用于创建一个远程对象的类,将项目中的cs文件命名为RmObj,其包含的类型同样为RmObj,编写RmObj.cs如代码13.4所示。

代码13.4 远程对象类定义 :RmObj.cs

using System;

using System.Windows.Forms;

namespace NetRmClass

{

public class RmObj : MarshalByRefObject

{

//在构造函数中,用提示窗口提示双方用户远程对象创建成功

public RmObj()

{

MessageBox.Show(

}

//调用Diss方法,会在服务器端的控制台程序中输出方法参数

public void Diss(string msg)

{

Console.WriteLine(

}

//该方法可返回字符串

public string Disc()

{

return

}

}

}

将NetRm解决方案中的NetRmClass项目进行编译(VS 2008中选择菜单栏的“项目|生成”命令,快捷键为Crtl+F6),即可在该项目目录中的“bin\Debug”路径下生成编译后的NetRmClass.dll程序集。

在VS 2008中的NetRm解决方案再次添加新的控制台应用程序项目,并命名为NetRmServer。

该项目所生成的程序集作为Remoting的服务器端,首先需要添加“NetRmClass.dll”程序集引用,并导入NetRmClass命名空间,编写该项目的Program.cs如代码13.5所示。

代码13.5 Remoting服务器端程序:Program.cs

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;

using NetRmClass;

namespace NetRmServer

{

class Program

{

//声明TcpServerChannel类型的静态字段channels

static TcpServerChannel channels;

static void Main(string[] args)

{

//创建新的TcpServerChannel对象,端口号为3000,引用为channels

channels = new TcpServerChannel(3000);

//将channels注册到信道服务

ChannelServices.RegisterChannel(channels, false);

//创建知名服务类型的对象,传递远程对象的类型、对象URI和激活对象的枚举成员

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RmObj),

//信息提示,当用户输入字符,则结束程序

Console.WriteLine(

Console.Read();

}

}

}

添加“NetRmClass.dll”程序集引用后,该程序集的副本即被复制到NetRmServer项目目录中的“bin\Debug”路径下,以供NetRmServer项目生成的程序集使用。将NetRm解决方案中的NetRmServer项目进行编译,即可在该项目目录中的“bin\Debug”路径下生成编译后的NetRmServer.exe程序集。

在VS 2008中的NetRm解决方案再次添加新的Windows窗体应用程序项目,并命名为NetRmClient。该项目所生成的程序集作为Remoting的客户端,首先仍然需要添加“NetRmClass.dll”程序集引用,并导入NetRmClass命名空间。在“Form1”窗体的设计视图中添加一个Button控件和TextBox控件,分别命名为“button1”和“textBox1”,编写Form1.cs如代码13.6所示。

代码13.6 Remoting客户端程序:Form1.cs

using System;

using System.Windows.Forms;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;

using NetRmClass;

namespace NetRmClient

{

public partial class Form1 : Form { //声明TcpClientChannel类型的字段channelc TcpClientChannel channelc; //声明RmObj类型的字段obj

RmObj obj;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

//创建TcpClientChannel对象,引用为channelc

channelc = new TcpClientChannel();

//将channels注册到信道服务

ChannelServices.RegisterChannel(channelc, false);

//创建远程对象

obj = (RmObj)Activator.GetObject(typeof(RmObj),

private void button1_Click(object sender, EventArgs e)

{

string MyName = textBox1.Text;

//调用远程对象的Diss方法,并传递用户输入值

obj.Diss(MyName);

//调用远程对象的Disc方法,返回值赋值给textBox1控件的“Text”属性

this.textBox1.Text = obj.Disc();

}

}

};

添加“NetRmClass.dll”程序集引用后,该程序集的副本同样被复制到NetRmClient项目目录中的“bin\Debug”路径下,以供NetRmClient项目生成的程序集使用。将NetRm解决方案中

的NetRmClient项目进行编译,即可在该项目目录中的“bin\Debug”路径下生成编译后的NetRmClient.exe程序集。

至此,一个简单的.NET Remoting应用解决方案已完成,其中服务器端为控制台程序,客户端为Windows窗体程序。服务器端所指定的位置是“localhost”,也可以根据程序需要更改为IP地址。

【分析】

本题主要考查面试者对Remoting应用原理的认识,该解答并不适宜于直接应用于实际开发。当服务器端程序运行后(即运行NetRmServer.exe),用户在客户端程序中输入一些文本,并单击“button1”按钮,服务器端程序和客户端程序运行效果如图13.4所示。

图13.4 .NET Remoting应用示例

解答所编写的.NET Remoting应用用于在本机上测试,不过已经展示了.NET Remoting技术的基本编写方法。通过示例,可以清楚理解该技术的强大功能以及灵活性,但是需要编程者编写大量的代码,并且需要一致的运行环境支撑。

WCF技术有什么优势

【考点】

对WCF技术的了解,WCF技术的基本内容。

【出现频率】

★★☆☆☆

【解答】

常用的分布式技术有COM+、.NET远程技术(Remoting)、Web Service和微软消息队列服务,WCF技术将这些分布式技术整合为一个高效的API。常用的那些分布式技术只能解决项目开发中某个方面的问题,并且不同技术对平台要求不同。在项目中有时要使用到多种技术从而导致这些技术所提供的服务有重叠之处,并且整个项目的维护复杂性大大增加。WCF技术提供了一个完整统一的方案解决这些问题,它提供了一个用于访问各种分布式技术的通用API,并且增加了很多必要的服务。

【分析】

本题主要考查面试者对.NET Framework新版本中WCF技术的基本认知。公司招聘.NET程序员不一定非要熟练掌握WCF这样的新技术,但是一定会要求所招聘的人才具备对新技术的了解,对新技术探索的好奇心。本题即为这样的目的而设,难度不大,只要面试者对新技术有一定程度的了解,经过短时间的培训即可掌握,其考查重点在于面试者的知识广度。

.NET Remoting和Web Service有什么异同

【考点】

.NET Remoting技术相对于Web Service的优势和劣势。

【出现频率】

★★★☆☆

【解答】

q Remoting技术可以灵活地定义其所基于的协议,比如HTTP协议和TCP协议。在实际开发中,Remoting一般使用TCP协议,这样可保证在保持状态的情况下,获取比Web Service更好的性能,而Web Service默认情况下是没有状态的。

q Remoting技术不是行业标准,而Web Service是行业标准,并可能成为下一代网络数据交换的核心组成部分。

q Remoting技术可用.NET的Windows窗体程序或Windows服务进行启动,也可以使用IIS部署,而Web Service则必须通过IIS之类的服务启动。

q 在VS 2008等.NET开发环境中,专门对Web Service的调用进行了封装,可以直接通过添加Web引用或服务引用调用Web Service,节约大量代码。而Remoting需要编写更多代码,开发效率较低。

q .NET Remoting的通信要求双方运行相同的平台框架,如.NET Remoting需要客户端和服务器端安装.NET Framework。而WebService是平台独立的,可跨语言(支持XML的语言)互动。

【分析】

本题考查面试者的数据库相关的ASP.NET开发经验,.NET Remoting与WebService有所不同,Remoting技术支持HTTP以及TCP信道,而且不仅能传输XML格式的SOAP包,也可以传输传统意义上的二进制流,这使得Remoting效率更高也更加灵活。Remoting不依赖于IIS,服务器端和客户端可以非常灵活地部署。从某些方面上来讲WebService其实上是.NET Remoting的一种特例。

【考点】

创建Web Service的基本代码。

【出现频率】

★★★☆☆

【解答】

在VS 2008中添加新的WEB服务代码模板到WebSvRm项目,并命名为MyWebSv.asmx。这个代码文件实际已经具备了Web Service的基本代码结构,这里编写一个能将小写字母转换为大写字母的Web Service应用。首先编写MyWebSv.asmx.cs如代码13.1所示。

代码13.1 转换大写字母的Web Service:MyWebSv.asmx.cs

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

namespace WebSvRm

{

//默认命名空间的指定

[WebService(Namespace =

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class MyWebSv : System.Web.Services.WebService

{

//声明WebMethod特性,该方法才可以被访问

[WebMethod]

public string ConvertWord(string word)

{

return word.ToUpperInvariant();

}

}

}

然后在WebSvRm项目中添加WEB引用,地址为“http://localhost/MyWebSv.asmx”,这时项目目录下将生成Web References目录,这个目录包含有localhost子目录。然后在WebSvRm项目的默认首页,即Default.aspx中调用Web Service以输出结果,首先编写Default.aspx如代码13.2所示。

代码13.2 调用Web Service的页面:Default.aspx

<%@ Page Language=

调用Web Service

请输入需要转换大写字母的初始字母或单词:


调用Web Service所返回的结果:

最后编写Default.aspx.cs如代码13.3所示。

代码13.3 调用Web Service的逻辑代码:Default.aspx.cs

using System;

using System.Collections;

using System.Configuration; abel runat=

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

namespace WebSvRm

{

public partial class _Default : System.Web.UI.Page

{

protected void btn_Click(object sender, EventArgs e)

{

//获取用户输入值

string txt1 = this.input.Text;

//创建MyWebSv对象,引用为WebSv1

localhost.MyWebSv WebSv1 = new localhost.MyWebSv();

//调用WebSv1方法,并传递txt1变量,返回值赋值给txt2

string txt2 = WebSv1.ConvertWord(txt1);

//将txt2赋值给output控件的“Text”属性值

this.output.Text = txt2;

}

}

}

打开IE浏览器,在浏览器地址栏输入“http://localhost/SendHtml.aspx”,并输入“microsoft .net framework”到TextBox控件中,然后单击“开始转换”按钮,页面运行效果如图13.2所示。

图13.2 Web Service调用实例

【分析】

本题考查面试者利用VS 2008等开发环境创建Web Service应用的基本方法,因为是基本方法,所以不涉及太多概念。实际上,用该方法创建Web Service应用最为简便,其中很多工作已经被VS 2008等开发环境封装,对于很多编程者,这些细节部分是透明的。解答中所创建的Web Service方法非常简单,在调用Web Service方法时,直接添加WEB引用即可。打开添加WEB引用时自动创建的localhost目录,如图13.3所示。

图13.3 添加WEB引用后生成的文件

可见,VS 2008的确做了很多工作,自动创建了4个文件,其中MyWebSv.disco文件用于Web Service的静态发现服务,即使用DISCO定位。不过最常用的Web Service发现服务是使用UDDI发现,即向UDDI服务器注册所创建的Web Service,这样整个Internet上的其他用户可以调用该Web Service的功能了。其中的MyWebSv.wsdl是该Web Service的

服务描述,以方便调用方了解Web Service的功能等信息。Reference.cs是客户端的代理类,可用于客户端程序以所属平台的方式直接调用Web Service提供的方法等。Reference.map是一个XML文件,映射了所序列化的文件,即*.disco文件和*.wsdl文件。在实际的项目开发中,Web Service的这些细节工作一般由编程者手动编写,这样更适用于不同项目的需求。

范文9:NET试题大全,包括微软、华为、中兴等大企业的面试真题【以文搜文】

简要地写出一个.NET Remoting的示例

【考点】

.NET Remoting程序的原理,.NET Remoting的基本编写方法。

【出现频率】

★★☆☆☆

【解答】

在VS 2008中添加新的类库项目,并命名为NetRmClass,将所属解决方案命名为NetRm,勾选“创建解决方案的目录”。这样,NetRmClass类库项目目录即属于NetRm解决方案,并可以继续向该解决方案添加更多的其他相关项目。类库项目在这里仅用于创建一个远程对象的类,将项目中的cs文件命名为RmObj,其包含的类型同样为RmObj,编写RmObj.cs如代码13.4所示。

代码13.4 远程对象类定义 :RmObj.cs

using System;

using System.Windows.Forms;

namespace NetRmClass

{

public class RmObj : MarshalByRefObject

{

//在构造函数中,用提示窗口提示双方用户远程对象创建成功

public RmObj()

{

MessageBox.Show(

}

//调用Diss方法,会在服务器端的控制台程序中输出方法参数

public void Diss(string msg)

{

Console.WriteLine(

}

//该方法可返回字符串

public string Disc()

{

return

}

}

}

将NetRm解决方案中的NetRmClass项目进行编译(VS 2008中选择菜单栏的“项目|生成”命令,快捷键为Crtl+F6),即可在该项目目录中的“bin\Debug”路径下生成编译后的NetRmClass.dll程序集。

在VS 2008中的NetRm解决方案再次添加新的控制台应用程序项目,并命名为NetRmServer。

该项目所生成的程序集作为Remoting的服务器端,首先需要添加“NetRmClass.dll”程序集引用,并导入NetRmClass命名空间,编写该项目的Program.cs如代码13.5所示。

代码13.5 Remoting服务器端程序:Program.cs

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;

using NetRmClass;

namespace NetRmServer

{

class Program

{

//声明TcpServerChannel类型的静态字段channels

static TcpServerChannel channels;

static void Main(string[] args)

{

//创建新的TcpServerChannel对象,端口号为3000,引用为channels

channels = new TcpServerChannel(3000);

//将channels注册到信道服务

ChannelServices.RegisterChannel(channels, false);

//创建知名服务类型的对象,传递远程对象的类型、对象URI和激活对象的枚举成员

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RmObj),

//信息提示,当用户输入字符,则结束程序

Console.WriteLine(

Console.Read();

}

}

}

添加“NetRmClass.dll”程序集引用后,该程序集的副本即被复制到NetRmServer项目目录中的“bin\Debug”路径下,以供NetRmServer项目生成的程序集使用。将NetRm解决方案中的NetRmServer项目进行编译,即可在该项目目录中的“bin\Debug”路径下生成编译后的NetRmServer.exe程序集。

在VS 2008中的NetRm解决方案再次添加新的Windows窗体应用程序项目,并命名为NetRmClient。该项目所生成的程序集作为Remoting的客户端,首先仍然需要添加“NetRmClass.dll”程序集引用,并导入NetRmClass命名空间。在“Form1”窗体的设计视图中添加一个Button控件和TextBox控件,分别命名为“button1”和“textBox1”,编写Form1.cs如代码13.6所示。

代码13.6 Remoting客户端程序:Form1.cs

using System;

using System.Windows.Forms;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;

using NetRmClass;

namespace NetRmClient

{

public partial class Form1 : Form { //声明TcpClientChannel类型的字段channelc TcpClientChannel channelc; //声明RmObj类型的字段obj

RmObj obj;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

//创建TcpClientChannel对象,引用为channelc

channelc = new TcpClientChannel();

//将channels注册到信道服务

ChannelServices.RegisterChannel(channelc, false);

//创建远程对象

obj = (RmObj)Activator.GetObject(typeof(RmObj),

private void button1_Click(object sender, EventArgs e)

{

string MyName = textBox1.Text;

//调用远程对象的Diss方法,并传递用户输入值

obj.Diss(MyName);

//调用远程对象的Disc方法,返回值赋值给textBox1控件的“Text”属性

this.textBox1.Text = obj.Disc();

}

}

};

添加“NetRmClass.dll”程序集引用后,该程序集的副本同样被复制到NetRmClient项目目录中的“bin\Debug”路径下,以供NetRmClient项目生成的程序集使用。将NetRm解决方案中

的NetRmClient项目进行编译,即可在该项目目录中的“bin\Debug”路径下生成编译后的NetRmClient.exe程序集。

至此,一个简单的.NET Remoting应用解决方案已完成,其中服务器端为控制台程序,客户端为Windows窗体程序。服务器端所指定的位置是“localhost”,也可以根据程序需要更改为IP地址。

【分析】

本题主要考查面试者对Remoting应用原理的认识,该解答并不适宜于直接应用于实际开发。当服务器端程序运行后(即运行NetRmServer.exe),用户在客户端程序中输入一些文本,并单击“button1”按钮,服务器端程序和客户端程序运行效果如图13.4所示。

图13.4 .NET Remoting应用示例

解答所编写的.NET Remoting应用用于在本机上测试,不过已经展示了.NET Remoting技术的基本编写方法。通过示例,可以清楚理解该技术的强大功能以及灵活性,但是需要编程者编写大量的代码,并且需要一致的运行环境支撑。

WCF技术有什么优势

【考点】

对WCF技术的了解,WCF技术的基本内容。

【出现频率】

★★☆☆☆

【解答】

常用的分布式技术有COM+、.NET远程技术(Remoting)、Web Service和微软消息队列服务,WCF技术将这些分布式技术整合为一个高效的API。常用的那些分布式技术只能解决项目开发中某个方面的问题,并且不同技术对平台要求不同。在项目中有时要使用到多种技术从而导致这些技术所提供的服务有重叠之处,并且整个项目的维护复杂性大大增加。WCF技术提供了一个完整统一的方案解决这些问题,它提供了一个用于访问各种分布式技术的通用API,并且增加了很多必要的服务。

【分析】

本题主要考查面试者对.NET Framework新版本中WCF技术的基本认知。公司招聘.NET程序员不一定非要熟练掌握WCF这样的新技术,但是一定会要求所招聘的人才具备对新技术的了解,对新技术探索的好奇心。本题即为这样的目的而设,难度不大,只要面试者对新技术有一定程度的了解,经过短时间的培训即可掌握,其考查重点在于面试者的知识广度。

.NET Remoting和Web Service有什么异同

【考点】

.NET Remoting技术相对于Web Service的优势和劣势。

【出现频率】

★★★☆☆

【解答】

q Remoting技术可以灵活地定义其所基于的协议,比如HTTP协议和TCP协议。在实际开发中,Remoting一般使用TCP协议,这样可保证在保持状态的情况下,获取比Web Service更好的性能,而Web Service默认情况下是没有状态的。

q Remoting技术不是行业标准,而Web Service是行业标准,并可能成为下一代网络数据交换的核心组成部分。

q Remoting技术可用.NET的Windows窗体程序或Windows服务进行启动,也可以使用IIS部署,而Web Service则必须通过IIS之类的服务启动。

q 在VS 2008等.NET开发环境中,专门对Web Service的调用进行了封装,可以直接通过添加Web引用或服务引用调用Web Service,节约大量代码。而Remoting需要编写更多代码,开发效率较低。

q .NET Remoting的通信要求双方运行相同的平台框架,如.NET Remoting需要客户端和服务器端安装.NET Framework。而WebService是平台独立的,可跨语言(支持XML的语言)互动。

【分析】

本题考查面试者的数据库相关的ASP.NET开发经验,.NET Remoting与WebService有所不同,Remoting技术支持HTTP以及TCP信道,而且不仅能传输XML格式的SOAP包,也可以传输传统意义上的二进制流,这使得Remoting效率更高也更加灵活。Remoting不依赖于IIS,服务器端和客户端可以非常灵活地部署。从某些方面上来讲WebService其实上是.NET Remoting的一种特例。

【考点】

创建Web Service的基本代码。

【出现频率】

★★★☆☆

【解答】

在VS 2008中添加新的WEB服务代码模板到WebSvRm项目,并命名为MyWebSv.asmx。这个代码文件实际已经具备了Web Service的基本代码结构,这里编写一个能将小写字母转换为大写字母的Web Service应用。首先编写MyWebSv.asmx.cs如代码13.1所示。

代码13.1 转换大写字母的Web Service:MyWebSv.asmx.cs

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

namespace WebSvRm

{

//默认命名空间的指定

[WebService(Namespace =

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class MyWebSv : System.Web.Services.WebService

{

//声明WebMethod特性,该方法才可以被访问

[WebMethod]

public string ConvertWord(string word)

{

return word.ToUpperInvariant();

}

}

}

然后在WebSvRm项目中添加WEB引用,地址为“http://localhost/MyWebSv.asmx”,这时项目目录下将生成Web References目录,这个目录包含有localhost子目录。然后在WebSvRm项目的默认首页,即Default.aspx中调用Web Service以输出结果,首先编写Default.aspx如代码13.2所示。

代码13.2 调用Web Service的页面:Default.aspx

<%@ Page Language=

调用Web Service

请输入需要转换大写字母的初始字母或单词:


调用Web Service所返回的结果:

最后编写Default.aspx.cs如代码13.3所示。

代码13.3 调用Web Service的逻辑代码:Default.aspx.cs

using System;

using System.Collections;

using System.Configuration;

1.0 Transitional//EN

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

namespace WebSvRm

{

public partial class _Default : System.Web.UI.Page

{

protected void btn_Click(object sender, EventArgs e)

{

//获取用户输入值

string txt1 = this.input.Text;

//创建MyWebSv对象,引用为WebSv1

localhost.MyWebSv WebSv1 = new localhost.MyWebSv();

//调用WebSv1方法,并传递txt1变量,返回值赋值给txt2

string txt2 = WebSv1.ConvertWord(txt1);

//将txt2赋值给output控件的“Text”属性值

this.output.Text = txt2;

}

}

}

打开IE浏览器,在浏览器地址栏输入“http://localhost/SendHtml.aspx”,并输入“microsoft .net framework”到TextBox控件中,然后单击“开始转换”按钮,页面运行效果如图13.2所示。

图13.2 Web Service调用实例

【分析】

本题考查面试者利用VS 2008等开发环境创建Web Service应用的基本方法,因为是基本方法,所以不涉及太多概念。实际上,用该方法创建Web Service应用最为简便,其中很多工作已经被VS 2008等开发环境封装,对于很多编程者,这些细节部分是透明的。解答中所创建的Web Service方法非常简单,在调用Web Service方法时,直接添加WEB引用即可。打开添加WEB引用时自动创建的localhost目录,如图13.3所示。

图13.3 添加WEB引用后生成的文件

可见,VS 2008的确做了很多工作,自动创建了4个文件,其中MyWebSv.disco文件用于Web Service的静态发现服务,即使用DISCO定位。不过最常用的Web Service发现服务是使用UDDI发现,即向UDDI服务器注册所创建的Web Service,这样整个Internet上的其他用户可以调用该Web Service的功能了。其中的MyWebSv.wsdl是该Web Service的

服务描述,以方便调用方了解Web Service的功能等信息。Reference.cs是客户端的代理类,可用于客户端程序以所属平台的方式直接调用Web Service提供的方法等。Reference.map是一个XML文件,映射了所序列化的文件,即*.disco文件和*.wsdl文件。在实际的项目开发中,Web Service的这些细节工作一般由编程者手动编写,这样更适用于不同项目的需求。

范文10:.NET试题大全,包括微软、华为、中兴等大企业的面试真题【以文搜文】

本文由leostudy贡献

doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

简要地写出一个.NET Remoting 的示例 简要地写出一个 【考点】 .NET Remoting 程序的原理,.NET Remoting 的基本编写方法。 【出现频率】 ★★☆☆☆ 【解答】 在 VS 2008 中添加新的类库项目,并命名为 NetRmClass,将所属解决方案命名为 NetRm, 勾选“创建解决方案的目录”。这样,NetRmClass 类库项目目录即属于 NetRm 解决方案,并 可以继续向该解决方案添加更多的其他相关项目。 类库项目在这里仅用于创建一个远程对象 的类,将项目中的 cs 文件命名为 RmObj,其包含的类型同样为 RmObj,编写 RmObj.cs 如 代码 13.4 所示。 代码 13.4 远程对象类定义 :RmObj.cs using System; using System.Windows.Forms; namespace NetRmClass { public class RmObj : MarshalByRefObject { //在构造函数中,用提示窗口提示双方用户远程对象创建成功 public RmObj() { MessageBox.Show("远程对象已经创建", "提示信息"); } //调用 Diss 方法,会在服务器端的控制台程序中输出方法参数 public void Diss(string msg) { Console.WriteLine("客户端信息:"+msg); } //该方法可返回字符串 public string Disc() { return "与服务器端完成通信"; } } } 将 NetRm 解决方案中的 NetRmClass 项目进行编译(VS 2008 中选择菜单栏的“项目|生成” 命 令 , 快 捷 键 为 Crtl+F6 ) 即 可 在 该 项 目 目 录 中 的 “bin\Debug” 路 径 下 生 成 编 译 后 的 , NetRmClass.dll 程序集。 在 VS 2008 中的 NetRm 解决方案再次添加新的控制台应用程序项目, 并命名为 NetRmServer。

该项目所生成的程序集作为 Remoting 的服务器端,首先需要添加“NetRmClass.dll”程序集引 用,并导入 NetRmClass 命名空间,编写该项目的 Program.cs 如代码 13.5 所示。 代码 13.5 Remoting 服务器端程序:Program.cs using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using NetRmClass; namespace NetRmServer { class Program { //声明 TcpServerChannel 类型的静态字段 channels static TcpServerChannel channels; static void Main(string[] args) { //创建新的 TcpServerChannel 对象,端口号为 3000,引用为 channels channels = new TcpServerChannel(3000); //将 channels 注册到信道服务 ChannelServices.RegisterChannel(channels, false); //创建知名服务类型的对象,传递远程对象的类型、对象 URI 和激活对象的枚举成 员 RemotingConfiguration.RegisterWellKnownServiceType(typeof(RmObj), "MyUri", WellKnownObjectMode.Singleton); //信息提示,当用户输入字符,则结束程序 Console.WriteLine("======服务器端已启动======"); Console.Read(); } } } 添加“NetRmClass.dll”程序集引用后,该程序集的副本即被复制

到 NetRmServer 项目目录中 的“bin\Debug”路径下,以供 NetRmServer 项目生成的程序集使用。将 NetRm 解决方案中的 NetRmServer 项目进行编译,即可在该项目目录中的“bin\Debug”路径下生成编译后的 NetRmServer.exe 程序集。 在 VS 2008 中的 NetRm 解决方案再次添加新的 Windows 窗体应用程序项目,并命名为 NetRmClient 。 该 项 目 所 生 成 的 程 序 集 作 为 Remoting 的 客 户 端 , 首 先 仍 然 需 要 添 加 “NetRmClass.dll”程序集引用,并导入 NetRmClass 命名空间。在“Form1”窗体的设计视图中 添加一个 Button 控件和 TextBox 控件,分别命名为“button1”和“textBox1”,编写 Form1.cs 如代码 13.6 所示。

代码 13.6 Remoting 客户端程序:Form1.cs using System; using System.Windows.Forms; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using NetRmClass; namespace NetRmClient { public partial class Form1 : Form { //声明 TcpClientChannel 类型的字段 channelc TcpClientChannel channelc; //声明 RmObj 类型的字段 obj RmObj obj; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //创建 TcpClientChannel 对象,引用为 channelc channelc = new TcpClientChannel(); //将 channels 注册到信道服务 ChannelServices.RegisterChannel(channelc, false); //创建远程对象 obj = (RmObj)Activator.GetObject(typeof(RmObj), "tcp://localhost:3000/MyUri"); } private void button1_Click(object sender, EventArgs e) { string MyName = textBox1.Text; //调用远程对象的 Diss 方法,并传递用户输入值 obj.Diss(MyName); //调用远程对象的 Disc 方法,返回值赋值给 textBox1 控件的“Text”属性 this.textBox1.Text = obj.Disc(); } } }; 添加“NetRmClass.dll”程序集引用后,该程序集的副本同样被复制到 NetRmClient 项目目录 中的“bin\Debug”路径下,以供 NetRmClient 项目生成的程序集使用。将 NetRm 解决方案中

的 NetRmClient 项目进行编译,即可在该项目目录中的“bin\Debug”路径下生成编译后的 NetRmClient.exe 程序集。 至此,一个简单的.NET Remoting 应用解决方案已完成,其中服务器端为控制台程序,客户 端为 Windows 窗体程序。服务器端所指定的位置是“localhost”,也可以根据程序需要更改为 IP 地址。 【分析】 本题主要考查面试者对 Remoting 应用原理的认识, 该解答并不适宜于直接应用于实际开发。 当服务器端程序运行后(即运行 NetRmServer.exe) ,用户在客户端程序中输入一些文本,并 单击“button1”按钮,服务器端程序和客户端程序运行效果如图 13.4 所示。 图 13.4 .NET Remoting 应用示例 解答所编写的.NET Remoting 应用用于在本机上测试,不过已经展示了.NET Remoting 技术 的基本编写方法。通过示例,可以清楚理解该技术的强大功能以

及灵活性,但是需要编程者 编写大量的代码,并且需要一致的运行环境支撑。 WCF 技术有什么优势 【考点】 对 WCF 技术的了解,WCF 技术的基本内容。 【出现频率】 ★★☆☆☆ 【解答】 常用的分布式技术有 COM+、.NET 远程技术(Remoting)、Web Service 和微软消息队 列服务,WCF 技术将这些分布式技术整合为一个高效的 API。常用的那些分布式技术只能 解决项目开发中某个方面的问题, 并且不同技术对平台要求不同。 在项目中有时要使用到多 种技术从而导致这些技术所提供的服务有重叠之处,并且整个项目的维护复杂性大大增加。 WCF 技术提供了一个完整统一的方案解决这些问题,它提供了一个用于访问各种分布式技 术的通用 API,并且增加了很多必要的服务。 【分析】 本题主要考查面试者对.NET Framework 新版本中 WCF 技术的基本认知。公司招聘.NET 程序员不一定非要熟练掌握 WCF 这样的新技术, 但是一定会要求所招聘的人才具备对新技 术的了解,对新技术探索的好奇心。本题即为这样的目的而设,难度不大,只要面试者对新 技术有一定程度的了解,经过短时间的培训即可掌握,其考查重点在于面试者的知识广度。 .NET Remoting 和 Web Service 有什么异同 【考点】 .NET Remoting 技术相对于 Web Service 的优势和劣势。 【出现频率】 ★★★☆☆ 【解答】 q Remoting 技术可以灵活地定义其所基于的协议, 比如 HTTP 协议和 TCP 协议。 在实 际开发中,Remoting 一般使用 TCP 协议,这样可保证在保持状态的情况下,获取比 Web Service 更好的性能,而 Web Service 默认情况下是没有状态的。 q Remoting 技术不是行业标准,而 Web Service 是行业标准,并可能成为下一代网络 数据交换的核心组成部分。

q Remoting 技术可用.NET 的 Windows 窗体程序或 Windows 服务进行启动,也可以 使用 IIS 部署,而 Web Service 则必须通过 IIS 之类的服务启动。 q 在 VS 2008 等.NET 开发环境中,专门对 Web Service 的调用进行了封装,可以直 接通过添加 Web 引用或服务引用调用 Web Service,节约大量代码。而 Remoting 需要编 写更多代码,开发效率较低。 q .NET Remoting 的通信要求双方运行相同的平台框架,如.NET Remoting 需要客户 端和服务器端安装.NET Framework。而 WebService 是平台独立的,可跨语言(支持 XM L 的语言)互动。 【分析】 本题考查面试者的数据库相关的 ASP.NET 开发经验, .NET Remoting 与 WebService 有所 不同,Remoting 技术支持 HTTP 以及 TCP 信道,而且不仅能传输 XML 格式的 SOAP 包, 也可以传输传统意义上的二进制流,这使得 Remoting 效率更高也更加灵活。Remoting 不 依赖于 IIS,服务器端和客户端可以非常灵活地

部署。从某些方面上来讲 WebService 其实 上是.NET Remoting 的一种特例。 【考点】 创建 Web Service 的基本代码。 【出现频率】 ★★★☆☆ 【解答】 在 VS 2008 中添加新的 WEB 服务代码模板到 WebSvRm 项目, 并命名为 MyWebSv.asmx。 这个代码文件实际已经具备了 Web Service 的基本代码结构,这里编写一个能将小写字母 转换为大写字母的 Web Service 应用。首先编写 MyWebSv.asmx.cs 如代码 13.1 所示。 代码 13.1 转换大写字母的 Web Service:MyWebSv.asmx.cs using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Linq; namespace WebSvRm { //默认命名空间的指定 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class MyWebSv : System.Web.Services.WebService { //声明 WebMethod 特性,该方法才可以被访问 [WebMethod]

public string ConvertWord(string word) { return word.ToUpperInvariant(); } } } 然后在 WebSvRm 项目中添加 WEB 引用,地址为“http://localhost/MyWebSv.asmx”,这时 项目目录下将生成 Web References 目录,这个目录包含有 localhost 子目录。然后在 WebSvRm 项目的默认首页,即 Default.aspx 中调用 Web Service 以输出结果,首先编写 Default.aspx 如代码 13.2 所示。 代码 13.2 调用 Web Service 的页面:Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebSvRm._Default" %> 1.0 Transitional//EN"

请 输 入 需 要 转 换 大 写 字 母 的 初 始 字 母 或 单 词 :

调用 Web Service 所返回的结果: 最后编写 Default.aspx.cs 如代码 13.3 所示。 代码 13.3 调用 Web Service 的逻辑代码:Default.aspx.cs using System; using System.Collections; using System.Configuration; abel runat="server" ID="output">

using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace WebSvRm { public partial class _Default : System.Web.UI.Page { protected void btn_Click(object sender, EventArgs e) { //获取用户输入值 string txt1 = this.input.Text; //创建 MyWebSv 对象,引用为 WebSv1 localhost.MyWebSv WebSv1 = new localhost.MyWebSv(); //调用 WebSv1 方法,并传递 txt1 变量,返回值赋值给 txt2 string txt2 = WebSv1.ConvertWord(txt1); //将 txt2 赋值给 output 控件的“Text”属性值 this.output.Text = txt2; } } } 打 开 IE 浏 览 器 , 在 浏 览 器 地 址 栏 输 入 “http://localhost/SendHtml.aspx” , 并 输 入 “microsoft .net framewor

k”到 TextBox 控件中,然后单击“开始转换”按钮,页面运行效果如 图 13.2 所示。 图 13.2 Web Service 调用实例 【分析】 本题考查面试者利用 VS 2008 等开发环境创建 Web Service 应用的基本方法,因为是基本 方法,所以不涉及太多概念。实际上,用该方法创建 Web Service 应用最为简便,其中很 多工作已经被 VS 2008 等开发环境封装,对于很多编程者,这些细节部分是透明的。解答 中所创建的 Web Service 方法非常简单,在调用 Web Service 方法时,直接添加 WEB 引 用即可。打开添加 WEB 引用时自动创建的 localhost 目录,如图 13.3 所示。 图 13.3 添加 WEB 引用后生成的文件 可见,VS 2008 的确做了很多工作,自动创建了 4 个文件,其中 MyWebSv.disco 文件用于 Web Service 的静态发现服务,即使用 DISCO 定位。不过最常用的 Web Service 发现服务 是使用 UDDI 发现,即向 UDDI 服务器注册所创建的 Web Service,这样整个 Internet 上的 其他用户可以调用该 Web Service 的功能了。其中的 MyWebSv.wsdl 是该 Web Service 的

服务描述,以方便调用方了解 Web Service 的功能等信息。Reference.cs 是客户端的代理 类 , 可 用 于 客 户 端 程 序 以 所 属 平 台 的 方 式 直 接 调 用 Web Servi

ce 提 供 的 方 法 等 。 Reference.map 是一个 XML 文件,映射了所序列化的文件,即*.disco 文件和*.wsdl 文件。 在实际的项目开发中,Web Service 的这些细节工作一般由编程者手动编写,这样更适用于 不同项目的需求。