C#NET面试宝典

zengxianbing 2011-03-24 12:01:10
c#笔试题总结(二)
1. new 关键字用法
答:
(1)new 运算符
用于创建对象和调用构造函数。
(2)new 修饰符
用于向基类成员隐藏继承成员。
(3)new 约束
用于在泛型声明中约束可能用作类型参数的参数的类型。
2.如何把一个Array复制到ArrayList里
答:
foreach( object o in array )arrayList.Add(o);

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 运算符。

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

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

结构可以实现接口。

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

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

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

托管代码

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

装箱和拆箱

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

重载

每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。
CTS通用类型系统
CLR公共语言运行库
CLS公共语言规范

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 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。
...全文
501 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cool_xiaocao 2011-04-12
  • 打赏
  • 举报
回复
算是一些常识吧
子夜__ 2011-03-24
  • 打赏
  • 举报
回复
老题儿。
zerodegrees 2011-03-24
  • 打赏
  • 举报
回复
2.如何把一个Array复制到ArrayList里
答:
foreach( object o in array )arrayList.Add(o);

不用循环,酱紫就行:
ArrayList = array.ToList<object>();
shine_fly 2011-03-24
  • 打赏
  • 举报
回复
yuweijia 2011-03-24
  • 打赏
  • 举报
回复
谁还会问这些啊
nishierzhizhu 2011-03-24
  • 打赏
  • 举报
回复
多谢楼主!
pam 2011-03-24
  • 打赏
  • 举报
回复
都是基础的老题目,但是很多也不清楚的
hejun19860620 2011-03-24
  • 打赏
  • 举报
回复
刚开始工作的人可以看看,不错的,工作几年的面试就要深奥的多了!
q107770540 2011-03-24
  • 打赏
  • 举报
回复
对将要面试的人还是有些帮助 的
amandag 2011-03-24
  • 打赏
  • 举报
回复
题目比较老,偏基础
hecker728 2011-03-24
  • 打赏
  • 举报
回复
都是基础,多看看,看一次记一次也不错
cjh200102 2011-03-24
  • 打赏
  • 举报
回复
确实是老题目了。

重新复习下。
linuxjava01 2011-03-24
  • 打赏
  • 举报
回复
复习复习也不错
qq83705563 2011-03-24
  • 打赏
  • 举报
回复
很多不懂
ding544935 2011-03-24
  • 打赏
  • 举报
回复
谢谢楼主提供资料
jingjingluwei 2011-03-24
  • 打赏
  • 举报
回复
难……很多不会,记记吧
C#面试前必看书籍,取材于各大IT公司的历年面试题252个(包括研发类笔试及口试题目、情商及智商类题目),详细分析了应聘C#与.NET程序员职位的常见考点。主要内容包括:面试流程、基础语法和技术框架、数据访问及XML应用、高级特性及应用进阶、测试及质量保证、跨国公司经典面试题等。 目前许多程序员对C#语言的基础知识掌握不牢,很难通过求职面试。在激烈的求职竞争中,想在几、轮笔试、面试的激烈竞争中拔得头筹,漂亮地完成试卷,躲过面试官布下的种种“陷阱”,是一件非常不容易的事情。要知道研发类考题过关仅仅是基础,情商、智商更为关键,面试是考验人的综合应变能力和逻辑能力的过程。本书记就是为了让读者对企业招聘程序员时需要掌握的知识有一个系统、全面的认识,并进行充分的准备,以期能够成功通过面试。 部分目录: 第1篇 赢在面试 第1章 成功应聘开发职位的秘籍 第2篇 基础语法及技术框架 第2章NET概述 第3章 程序设计基础 第4章 面向对象程序设计 第5章 ASPNET应用开发 第3篇 数据访问及XML应用 第6章 数据访问 第7章 Web Service的开发与应用 第8章 WPF应用开发 第4篇 高级特性及应用进阶 第9章 高级特性 第10章 高级编程 第11章 ASPNET高级进阶 第12章 算法设计与分析 第5篇 测试及质量保证 第13章 测试 第6篇 跨国公司经典面试题 第14章 情商类面试题 第15章 智商类面试题

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧