C#笔试题目总结(一)

 

 1面向对象的思想主要包括什么?

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
继承:子类拥有父类的所有数据和操作。

多态:一个程序中同名的不同方法共存的情况。 有两种形式的多态重载与重写。

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

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

3new 关键字用法

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

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

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

4如何把一个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);

5DataGridDatasouse可以连接什么数据源

l         DataTable

l         DataView

l         DataSet

l         DataViewManager

l         任何实现IListSource接口的组件

l         任何实现IList接口的组件

6概述反射和序列化

反射:公共语言运行库(CLR)加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

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

序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

7概述O/R Mapping 的原理

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

8可访问性级别有哪几种

l         public 访问不受限制。

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

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

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

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

9sealed 修饰符有什么特点

sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override一起使用。

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

共享类:DataSetDataTableDataRowDataColumnDataRelationConstraint

DataColumnMappingDataTableMapping

特定类:(x)Connection(x)Command(x)CommandBuilder(x)DataAdapter

(x)DataReader(x)Parameter(x)Transaction

11、执行下面代码后:

String strTemp ="abcdefg 某某某"

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

Int j=strTemp.Length;

问:i=? j=? 

i=(14 ) j=(11 ) (中文两个字节,包括空格)

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

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

13、详述.NETclassstruct的异同

结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。

结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

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

结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型实例是无法区分的。C# 中的所有值类型本质上都继承自 ValueType,后者继承自 Object

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

结构具有以下特点:

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

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

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

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

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

l         结构可以实现接口。

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

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

应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

受管制的代码:在.Net环境中运行的任何代码都是受管制的代码(managed code),.Net外部的代码也运行在windows上,这些代码称为未受管制的代码(unmanaged code)。

使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。

强类型语言是能够禁止任何违反类型系统的代码的语言,或者说是能够捕获所有违反类型系统的错误的语言。我们说C++相对于C是强类型的,是因为C++禁止了一些C中的隐式转换,比如将void*转换为任意的指针类型。

装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。

每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。

CTS通用类型系统 (common type system)

一种确定公共语言运行库如何定义、使用和管理类型的规范。

CLR公共语言运行库

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

CLS公共语言规范

要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。

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

XML 代表Extensible Markup LanguageeXtensible Markup Language的缩写,意为可扩展的标记语言)。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。

通过XML,你可以在HTML文件之外存储数据;可以在不兼容的系统之间交换数据;可以在网络中交换金融信息;纯文本文件可以用来共享数据;纯文本文件可以用来存储数据;你的数据可以被更多的用户使用;可以用于创建新的语言。

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

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

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

与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。

与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。

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

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

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

引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:classinterfacedelegate、内置引用类型: objectstring

     例: StringBuilder a=new StringBuilder();//StringBuilder的一个首地址传给a
                                     StringBuilder b=a;//
StringBuilder的一个首地址传给
b
                                      b.Append("mxh");
                                      Console.WriteLine(a);
                                       a=null;
                                       Console.WriteLine(b);
              
输出结果:
mxh
                                   mxh
       "a=null"
的意思是:a的引用置为空但此时StringBuilder的堆空间并没有被释放,因此在此之后,输出b时,仍然可以输出mxh

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

ADO.NET对象模型中有5个主要的数据库访问和操作对象,分别是ConnectionCommandDataReaderDataAdapterDataSet对象。

其中,Connection对象主要负责连接数据库,Command对象主要负责生成并执行SQL语句,DataReader对象主要负责读取数据库中的数据,DataAdapter对象主要负责在Command对象执行完SQL语句后生成并填充DataSetDataTable,而DataSet对象主要负责存取和更新数据。

18、如何理解委托?

委托具有以下特点:委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。

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

异:

不能直接实例化接口。

接口不包含方法的实现。

接口、类和结构可从多个接口继承。但是C# 只支持单继承:类只能从一个基类继承实现。

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

同:

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

接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

接口可以包含事件、索引器、方法和属性。

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

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

sqlconnection 连接数据库
sqlcommand
执行T-SQL语句,或存储过程

21UDP连接和TCP连接的异同。

TCP 提供的是一个连线导向(Connection Oriented)的可靠传输﹐前面所介绍的传送层检测手续﹐都会在 TCP 中得到实现。相对而言﹐UDP 则是一个非连线型(Connectionless)的非可靠传输协定﹐它并不会运用确认机制来保证资料是否正确的被接收、不需要重传遗失的资料、资料的接收可不必按顺序进行、也不提供回传机制来控制资料流的速度。

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

Forms身份验证:要发出登录请求,需要在网页上填写一个表单并将该表单提交到服务器。服务器在接受该请求之后,将向用户的本地机器写一个cookie,在后续的浏览中,浏览器每次发送请求时都会将该cooike送回服务器,这个用户就可以根据自己的希望保持身份验证状态。

Windows身份验证:登录页面将用户证书发送到Web服务器(只能是IIS,而不是VWD内建的Web服务器)。然后WEB服务器应用程序所运行的虚拟目录配置的方法处理身份验证。IIS连接到Windows操作系统和Active Directory(活动目录)域结构上,这意味着它依赖于存储在站点外部的用户配置文件,并使用标准WINDOWS证书登录到站点。根据站点的配置情况以及登录计算机所使用的账户,甚至可以不用直接登录站点,因为当前所使用的WINDOWS证书会自动传递到WEB服务器进行身份验证。这种方式在开发局域网应用程序时特别有用。

Passport身份验证:登录证书被传递到某个Microsoft Passport服务器,这个服务器集中保存了用户的配置文件。登录HOTMAIL帐户使用的就是这种方式。由于可以配置WINDOWS在启动时登录一个Passport帐户,因此在访问HOTMAIL收件箱时甚至都不需要输入口令。

23、进程和线程分别怎么理解?

应用程序被加载到内存中后叫进程。进程被CPU处理时叫线程。通常来说,一个进程可以定义程序的一个实例(Instance)。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中的代码。

24、什么是code-Behind技术。

就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创建。比如分工,美工和编程的可以个干各的,不用再像以前asp那样都代码和html代码混在一起,难以维护。

25、活动目录的作用。

Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。其作用:

信息的安全性大大增强;引入基于策略的管理,使系统的管理更加明朗;具有很强的可扩展性;具有很强的可伸缩性;智能的信息复制能力;与 DNS 集成紧密;与其他目录服务具有互通性;具有灵活的查询。

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

System.Xml

27、解释一下UDDIWSDL的意义及其作用。

UDDI

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

WSDL

WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;

l         服务 URL 和命名空间

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

l         有效函数列表

l         每个函数的参数

l         每个参数的类型

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

28、什么是SOAP,有哪些应用。

SOAPSimple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。

SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。

SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。 为此,它提供了一种基于 XML 且具有以下特性的消息处理框架:1) 可扩展,2) 可通过多种底层网络协议使用,3) 独立于编程模型。

29、如何部署一个ASP.net页面。

VS 2005VS 2003都有发布机制。2003可以发布然后再复制部署。

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

30、如何理解.net中的垃圾回收机制。

.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。

31、常用的调用webservice方法有哪些?

1、在同一台物理主机上也有两种调用方法:
直接引用 直接引用含有webservice解决方案的dll

web引用 事实上,vs.net提供了无比强大的功能,使得我们没有必要直接去引用一个webservice解决方案的dll。我们只需在"引用"上右击,选择"添加web引用……"

2、在Internet上调用WebService方法 事实上,在第2种情形的"web引用"方式是当前情况的一个特例。因为,当我们将web引用地址栏的地址改为指向Internet上某台主机上的一个webservice时便是在Internet上调用WebService方法。

3、利用webservice.htc调用WebService方法。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值