c# 试题(二)

来源:互联网 发布:服装零售进销存软件 编辑:程序博客网 时间:2024/04/28 09:02
简要说一下.Net的编译过程. 

ASP.NET 必须首先将代码编译成一个或多个程序集。 程序集即文件扩展名为 .dll 的文件。 您可以采用多种不同的语言来编写 ASP.NET 代码,如 Visual Basic、C#、J# 和其他语言。 当在编译代码时,会将代码翻译成一种名为 Microsoft 中间语言 (MSIL) 的与语言和 CPU 无关的表示形式。 运行时,MSIL 将运行在 .NET Framework 的上下文中,.NET Framework 会将 MSIL 翻译成 CPU 特定的指令,以便计算机上的处理器运行应用程序。

ASP.NET与ASP的区别 
1.开发语言不同 
ASP仅局限于使用non-type脚本语言来开发,用户给WEB页中添加ASP代码的方法与客户端脚本中添加代码的方法相同,导致代码杂乱。 
ASP.NET允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜加巨大的.NET Framework。 2.运行机制不同 
ASP是解释运行的编程框架,所以执行效率加较低。 
ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。 3.开发方式 
ASP把界面设计和程序设计混在一起,维护和重用困难。 
ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。 

谈一下ASP.NET页面生命周期 

ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。此外,如果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行任何控件行为代码。(控件的生命周期基于页的生命周期,但是页引发的控件事件比单独的 ASP.NET 页中可用的事件多。)

ASP.NET程序的运行机制。可以从一个页面的请求到返回的角度谈 
ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。 这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。 了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。

Javascript中类库的制作和调用方法 
创建外部JS文件,在JS文件中可以创建多个对象或类。一个JS文件可以看成是一个类库!首先引用该JS类库,再实例化类库中的对象即可实现调用!

AJAX原理及你所知道和使用过的版本 
简单的讲就是客户端通过javascript脚本获取服务器端的文本,通过解析返回值,更新部分的网页内容。

WebService使用的协议及简述工作流程 
封装必须是SOAP(Simple Object Access Protocol简单对象存取)协议 封装后的消息你可以通过各种已有的协议来传输,比如http,https,tcp/ip,smtp等 
step 1: 加入web 应用,将刚才发布的web服务加入,这时生成了上述web服务在本地的一个代理,我们假设为WebProxy。 
step 2: 客户端调用之前首先实例化一个该代理的对象,然后调用发布的方法 
step 3: 客户端将调用信息包括方法名和参数加入到soap消息中通过http传送给web service服务端 
step 4: 服务端从soap消息中获得调用信息,然后执行方法,将返回结果加入到soap消息中然后通过http传回 
step 5: 客户端代理得到这个soap消息后解析处结果返回给调用客户端方法

谈一下WebService的安全性及相关技术

 接收到来自网络的 SOAP 请求。它是否包含身份验证凭证取决于所使用的身份验证类
型。  
2. IIS 可以有选择地使用基本、摘要、集成(NTLM 或 Kerberos)或证书身份验证对调用
者进行身份验证。在不能使用 IIS (Windows) 身份验证的异类环境中,可以将 IIS 配置为使用匿名身份验证。在这个方案中,可以使用消息级属性(例如,在 SOAP 标头中传递的票证)对客户端进行身份验证。  
3. IIS 也可以配置为只接受来自特定 IP 地址的客户端计算机的请求。  
4. IIS 将已验证的调用者的 Windows 访问令牌传递给ASP.NET (如果将 Web 服务配置
为使用匿名身份验证,则它可能是匿名 Internet 用户的访问令牌)。  
5. ASP.NET 对该调用者进行身份验证。如果将 ASP.NET 配置为使用 Windows 身份验证,
则此时不会进行任何其他的身份验证;IIS 对调用者进行身份验证。  
如果使用的是非 Windows 身份验证方法,则将 ASP.NET 身份验证模式设置为“无”以使用自定义身份验证。  
注Web 服务目前不支持表单和 Passport 身份验证

 谈一下你对SaaS的理解 
SaaS是Software-as-a-service(软件即服务)的简称,是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。   
在这种模式下,客户不再象传统模式那样花费大量投资用于硬件、软件、人员,而只需要支出一定的租赁服务费用,通过互联网便可以享受到相应的硬件、软件和维护服务,享有软件使用权和不断升级,这是网络应用最具效益的营运模式。

托管程序与非托管程序的区别 
一般一个可执行文件的内部都包含一个PE头,系统根据PE的信息找到入口函数,在通过执行入口函数中的代码来执行可执行程序。托管程序的文件中相对于非托管程序还包含了一个CLR表头文件以及其他CLR需要的信息。 (1)非托管程序的执行过程 
在非托管程序中,可执行里面保存的是机器代码,CPU可以直接加载并执行,当系统加载了可执行程序后,系统就将可执行文件的段基址加上偏移地址形成实际的物理地址,并直接加载到内存中运行。 (2)托管程序的执行过程 
托管程序的可执行文件中,包含的是中间语言以及元数据,当然不能直接运行,必须启动CLR,由CLR对中间语言进行即时编译成机器代码,并加载到内存里面执行(具体过程: 
程序在进入入口函数前会提前跳转到MSCoree.dll中,调用它的代码来启动CLR并完成一些初始化工作)。当然,IL中的方法并不是每次被调用都会被编译一次,而是它只有在第一次调用时才进行编译,即时编译器会将方法名称以及对应的入口地址存放在映射表中,当下次调用该方法时,会直接从映射表里去而不是再编译一次。

 readonly 关键字与 const 关键字  
1. const 字段只能在该字段的声明中初始化。 
   readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。 
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。 
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。 4.const 对于引用类型的常数,可能的值只能是 string 和 null。    readonly可以是任何类型 

简单介绍下ADO.NET和ADO主要有什么改进?

答:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据库服务器资源的消耗。

ASP.NET与ASP相比,主要有哪些进步?

答:ASP.NET实现了面向对象编程,预编译的服务器端代码而不像ASP那样解释执行提高了性能,代码分离易于管理,可订制和扩展性,功能强大的开发工作,更好的安全机制。

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

答:委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托

如何把一个array复制到arrayist里      答:foreach( object arr in array)arrayist.Add(arr);

列举ADO.NET中的五个主要对象,并简单描述      答:Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当与内存里的一张或多张表。

概述三层结构体系            答:表示层(UI),业务逻辑层(BLL),数据访问层(DAL)

简述WebService    答:WebService服务可以描述为可以在web上部署并可以被任何应用程序或其他服务调用的功能。所谓服务就是系统提供一组接口,并通过接口使用系统提供的功能,WebService服务可以提供任何企业到客户,企业到企业,点对点或部门对部门通讯所需的服务,

.面向对象的思想主要包括什么?     答:继承、封装、多态

列举一下你所了解的XM技术及其应用    答:xml可以用来做网页(xslt)、可以当作数据库、可以用来保存对象的系列化(web服务好象是基于这个的)。

C#中的接口和类有什么异同。   答:接口,是可以多继承,类只有单继承.接口强调了你必须实现,而没有具本实现的方法和虚类有点相似。

.new 关键字用法   (1)new 运算符 用于创建对象和调用构造函数。(2)new 修饰符 用于向基类成员隐藏继承成员。  (3)new 约束   用于在泛型声明中约束可能用作类型参数的参数的类型。

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

答:DataTabe,DataView,DataSet,DataViewManager,任何实现IListSource接口的组件,任何实现IList接口的组件

反射:公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

概述O/R Mapping 的原理  答:利用反射,配置将对象和数据库表映射。

可访问性级别有哪几种   答:pubic 访问不受限制。protected 访问仅限于包含类或从包含类派生的类型。internal 访问仅限于当前程序集。protected internal 访问仅限于从包含类派生的当前程序集或类型。 private 访问仅限于包含类型。

sealed修饰符有什么特点   答:sealed 修饰符可以应用于类、实例方法和属性。 密封类不能被继承;

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

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

答:共享类:DataSet,DataTable,DataRow,DataColumn,DataRealtion,Constraint,DataColumnMapping,DataTableMapping

  特定类:(x)Connection,(x)Command,(x)CommandBuilder,(x)DataAdapter,(x)DataReader,(x)Parameter,(x)Transaction

详述.NET里class和struct的异同

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

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

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

  结构不能从类或其他结构继承。

  结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。

  由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型实例是无法区分的。C# 中的所有值类型本质上都继承自ValueType,后者继承自 Object。编译器可以在一个称为装箱的过程中将值类型转换为引用类型。

 结构具有以下特点:结构是值类型,而类是引用类型。向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。与类不同,结构的实例化可以不使用 new 运算符。结构可以声明构造函数,但它们必须带参数。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。结构可以实现接口。在结构中初始化实例字段是错误的。


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

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

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

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

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

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

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

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

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

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

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

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

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

活动目录的作用

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

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

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

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

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

  作用: 服务 URL 和命名空间 :网络服务的类型(可能还包括SOAP 的函数调用,正像我所说过的,WSDL足够自如地去描述网络服务的广泛内容)。有效函数列表,每个函数的参数,每个参数的类型 ,每个函数的返回值及其数据类型。


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

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

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

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

答:VS 2005和VS 2003都有发布机制。2003可以发布然后再复制部署。VS2005基本上可以直接部署到对应位置。

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

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

 .概述.NET中的GC机制。

答:GC的全称是garbage collection,中文名称垃圾回收,是.NET中对内存管理的一种功能。垃圾回收器跟踪并回收托管内存中分配的对象,定期执行垃圾回收以回收分配给没有有效引用的对象的内存。当使用可用内存不能满足内存请求时,GC会自动进行。

  在进行垃圾回收时,垃圾回收器会首先搜索内存中的托管对象,然后从托管代码中搜索被引用的对象并标记为有效,接着释放没有被标记为有效的对象并收回内存,最后整理内存将有效对象挪动到一起

ASP.NET中常见内置对象?答:Response、Request、Server、Session、Application、Cookie

死锁的必要条件?怎么克服?答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。

 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?

答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。

 构造器Constructor是否可以被继承?是否可以被Override?  Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

 是否可以继承String类?因为String类是final类所以不可以继承string类。


当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?   答:不可以,一个对象的方法只能由一个线程访问。

 用最有效的方法算出2乘以8等于几?  2<<3.

C#是否可以对内存直接进行操作? 答:C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。

 数组有没有Length()这和方法?string有没有这个方法?数组中没有这个方法,但有这个属性,string中有这个方法。

 Error和Exception有是区别? error表示恢复不是不可能,但是很困难,exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。

HashMap和Hashtable区别?  HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。


Collection和Collections的区别?Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。

 Override, Overload,的区别?Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同。

  Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。

 在一个BS结构中需要传递变量值时,不能使用session,cookie,application,你有几中方法?

答:this.server.Transfer,Querystring.

 C#种索引器实现过程,是否只能根据数字索引?  ack 不是的,可以是任意类型。

在.NET中所有类的基类是?ack :object。

 能用foreach遍历访问的对象需要实现?答:需要实现IEnumerable接口和GetEnumerator()方法。


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

答:foreach(System.Windows.Forms.Control control in this.Controls)

  {

    if (control isSystem.Windows.Forms.TextBox)

    {

      System.Windows.Forms.TextBox tb =(System.Windows.Forms.TextBox)control ;

       tb.Text = String.Empty ;

    }

  }

 

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

答: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 ;

      }

    }

  }

 

56.求以下表达式的值,写出您想到的一种或几种实现方法: 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 ;

    }

  }

  Console.WriteLine(Sum.ToString());

  Console.ReadLine() ;


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

 什么是受管制的代码?答:unsafe:非托管代码。不经过CLR运行。

 在.net中,配件的意思是?答:程序集。(中间语言,源数据,资源,装配清单)

 常用的调用WebService的方法有哪些?答:1.使用WSDL.exe命令行工具。2.使用VS.NET中的Add Web Reference菜单选项

 net Remoting 的工作原理是什么?答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

 

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

public void test(int i)

{

  lock(this)

  {

    if (i>10)

    {

      i--;

      test(i);

    }

  }

}

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

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

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

  remoting是.net中用来跨越machine,process, appdomain进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM。

  Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型。

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

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

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

<FileSystem>

  < DriverC >

    <Dir DirName=”MSDOS622”>

      <File FileName =” Command.com”></File>

    </Dir>

    <File FileName =”MSDOS.SYS” ></File>

    <File FileName =” IO.SYS”></File>

  </DriverC>

</FileSystem>

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

答:voidFindFile( 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 );

    }

  }

 

.String s = new String("xyz");创建了几个String Object?  答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对像s。

启动一个线程是用run()还是start()?答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

 两个对像值相同(x.equals(y)== true),但却可有不同的hashcode,这句话对不对?  答:不对,有相同的hashcode。

swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

答:switch(expr1)中,expr1是一个整型,字符或字符串,因此可以作用在byte和long上,也可以作用在string上。

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?答:不能,一个对象的一个synchronized方法只能由一个线程访问

 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?答:都不能。

.List, Set, Map是否继承自Collection接口?答:List,Set是Map不是

 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

 equals()和==方法决定引用值是否指向同一对像equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

 sleep() 和 wait() 有什么区别?答:sleep()方法是将当前线程挂起指定的时间。wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁。

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正确。

谈final,finally, finalize的区别。

答:final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final的方法也同样只能使用,不能重载

  finally-再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize-方法名。Java 技术允许使用finalize() 方法在垃圾收集器将对像从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对像之前对这个对象调用的。

 如何处理几十万条并发数据?   答:用存储过程或事务。取得最大标识的时候同时更新。注意主键不是自增量方式这种方法并发的时候是不会有重复主键的。取得最大标识要有一个存储过程来获取.

Session有什么重大BUG,微软提出了什么方法加以解决?    答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

成员变量和成员函数前加static的作用?  答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 答:session(viewstate)简单,但易丢失

  application 全局   cookie 简单,但可能不支持,可能被伪造   input type="hidden" 简单,可能被伪造

  url参数简单,显示于地址栏,长度有限   数据库稳定,安全,但性能相对弱

 请指出GAC的含义?答:全局程序集缓存。

 向服务器发送请求有几种方式? 答:get,post。get一般为链接方式,post一般为按钮方式。

 软件开发过程一般有几个阶段?每个阶段的作用?  答:需求分析,架构设计,代码编写,QA,部署


在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例 new 隐藏基类中方法。

答:using 引入名称空间或者使用非托管资源  new 新建实例或者隐藏父类方法

 需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.答:string inputStr=" xx xx ";  inputStr = Regex.Replace(inputStr.Trim(),"*"," ");

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

答:利用sql语言漏洞获得合法身份登陆系统。如身份验证的程序设计成:

  SqlCommand com=new SqlCommand("Select* from users where username='"+t_name.text+"' andpwd='"+t_pwd.text+"'");

  object obj=com.ExcuteScale();

  if(obj!=null)

    {

      //通过验证

    }

  这段代码容易被sql注入。如用户在t_name中随便输入,在t_pwd中输入1' and 1='1  就可以进入系统了。

 什么是反射?答:动态获取程序集信息

 用Singleton如何写设计模式答:static属性里面new ,构造函数private

 什么是ApplicationPool?答:Web应用,类似Thread Pool,提高并发性能。

 什么是虚函数?什么是抽像函数?答:虚函数:可由子类继承并重写的函数。抽像函数:规定其非虚子类必须实现的函数,必须被重写。

 92.什么是XML?

答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

什么是ASP.net中的用户控件?答:用户控件一般用在内容多为静态,或者少许会改变的情况下.用的比较大.类似ASP中的include.但是功能要强大的多。

 列举一下你所了解的XML技术及其应用 答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services和config

C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?

答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

 .XML 与 HTML 的主要区别 答:1. XML是区分大小写字母的,HTML不区分。

 2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。

 3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用查找结束标记了。

 4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

 5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

 类成员有_____种可访问形式? 答:this.; newClass().Method;

在Asp.net中所有的自定义用户控件都必须继承自________?答:Control。

 在.Net中所有可序列化的类都被标记为_____?答:[serializable]

 在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?答:GC。

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

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

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

下列哪一个是单词密码?A) KLLN B) LOML C) MLLO D)NMKO答案:C

 C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里? 答:attribute:自定义属性的基类;property :类中的属性

108.C#可否对内存进行直接的操作?

答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法

 ADO.NET相对于ADO等主要有什么改进?答:1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com

  3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换6:xml支持

 大概描述一下ASP.NET服务器控件的生命周期

答:初始化 加载视图状态处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载

 .Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?答:不能,可以实现接口

 Static Nested Class 和 Inner Class的不同,说得越多越好

答:StaticNested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

 &和&&的区别  答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

 <%# %> 和 <% %> 有什么区别?答:<%# %>表示绑定的数据源,<% %>是服务器端代码块

116.重载与覆盖的区别?

答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

  2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

  3、覆盖要求参数列表相同;重载要求参数列表不同。

  4、覆盖关系中,调用那个方法体,是根据对象的类型(对像对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

 什么是WSE?目前最新的版本是多少?答:WSE (WebService Extension)包来提供最新的WEB服务安全保证,最新版本2.0。

 a=10,b=15,在不用第三方变量的前提下,把a,b的值互换 答:a=a+b;b=a-b;a=a-b;

 还有变态要求,需要代码最短呢。有两个结果:1) a^=b^(b^=a^b); // 13个字节  2) a=b+(b=a)*0; // 11个字节

请简述面向对象的多态的特性及意义!

答:面向对象的编程使用了派生继承以及虚函数机制.一个本来指向基类的对象指针可以指向其派生类的.并访问从基类继承而来的成员变量和函数.而虚函数是专门为这个特性设计的,这个函数在每个基类的派生类中都是同一个名字,但函数体却并不一定相同,派生类往往为实现自己的功能而修改这个虚函数.这样用一个指针就能够实现对多种不同的派生类的访问, 并实现其派生类的特定功能(代码 )

 session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法答:用ViewState,stateserver

 对数据的并发采用什么办法进行处理较好。答:可以控制连接池的连接数量,条件好的话可以用负载平衡

 ADO.NET处理数据并发的方法和步骤?答:开放式并发,没有用到数据库的锁,而依靠SQL语句判断数据是否已经变化了。

    步骤:通常使用VS提供的工具生成SQL语句,工具生成的结果实在不符合要求,才手工写SQL语句。

 .动态创建的控件PostBack后是否可以保存下来,为什么?答:ASP.NET框架不会为你保存,但可以手工保存到ViewState

 T-SQL中is null和null 的区别?答:is null 和 null 区别相当于 "是空盒子" 和 "空盒子"的区别












0 0