最全的面试题

ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释 :

非空、比较、范围、正则表达式、汇总
Asp.net中有2种身份验证的方法:

一种是基于Windows验证,一种是基于Form验证。主要体现在Web.config文件中的设置。 如果采用
windows验证,可以不用登陆就可以直接访问站内网页,因为这种方式将用户身份验证的工作交给IIS服务器和Window操作系统去处理,网站开
发人员就不需要去考虑具体的验证过程。只要客户机加入了服务器域内。这种方式比较适合企业内部网中的应用。具体设置如下:
<authentication mode="Windows" /> <!-- 授权
此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
(未经身份验证的)用户。
--> <authorization>
<allow users="*" /> <!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization>

第二种方式是基于Form的验证方式,这时要用到登陆页面,凡是未经过验证的用户都会转向该页面。具体设置如下:
<authentication mode="Forms"> <!-- 授权
此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
(未经身份验证的)用户。
-->
<forms name

2.什么是WEB控件?使用WEB控件有那些优势?
使用web控件的好处就是,比较方便..灵活..缺点就是比较消耗资源..
大大减少代码编写量。
举个例子:连接数据库,你得在cs文件里自己写个语句吧,可是用sqldatasourse控件直接就是点击鼠标操作,代码自动生成。

3.请解释ASP.NET中以什么方式进行数据验证?
在ASP中进行表单数据验证时,通常开发者必须自己编写一套验证的规则,然后自己将这些代码拷贝到ASP代码中对表单进行验证。这样进行验
证的方式实在不太方便,幸运的是,ASP.NET解决了这个问题,这就是数据验证Web控件。
数据验证控件是ASP.NET中专门用来验证表单用户输入的控件。比如, RequiredFieldValidation就是一个专门用来验证用户是否已经输入的控
件,使用这个控件,可以保证用户一定输入了表单的某个表单项(比如数据输入框)。另外,ASP.NET还专门提供了以下数据验证控件:

1. RequiredFieldValidator:检查用户是否输入;
2. CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大、等于等;
3. RangeValidator:检查用户输入是否在某一指定范围;
4. RegularExpressionValidator:检查用户输入是否符合某一指定的正则表达式要求;
5. CustomValidator: 检查用户输入是否符合开发者指定的验证逻辑规则。
本文的目的不是在于讨论以上所有控件的用法,如果希望了解其他控件,可以参看:


4.请谈谈对正则表达式的看法?
主要用在字符串的匹配上面,与具体的语言环境无关

5.ASP.NET中共有几种类型的控件?各有什么区别?
Html 控件传统的html标记
Web 控件可以回传数据,事件驱动
自定义控件在原有控件的基础上增加功能
复合控件多个子控件复合成一个新的控件


6.WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
通过实现IsPostBack这个接口来执行事件。自动回传就是AutoPostBack,使用自动回传可以监视客户端变化情况并将这种改变返回到服务器端

7.WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
答 能,服务器端控件在html中表现形式还是html标记,所以可以执行客户端事件,有多种方式:
1、control.Attributes["onclick"]="...;";
2、<script for="controlName" event="onclick"></script>

8.ASP.NET与ASP相比有什么优势?
ASP.NET的优点:
1. ASP.NET中支持强类型语言.
2.ASP.NET页将被编译而不是解释,这样它们的执行速度就比ASP页快。
3. ASP.NET提供声明性服务器控件。
4. ASP.NET通过继承机制来支持代码的重用。
5. ASP.NET具有Trace的内置方法,可以帮助对页面进行调试。
在ASP.NET中,置于应用程序的BIN目录中的任何组件将自动对应用程序可用.

ASP的缺点:
1、ASP页面需要解释,使得它执行速度较慢。
3、 ASP页面非常凌乱。
4、 在使用ASP创建WEB应用程序时,程序员和设计人员必须在同一文件上一起工作。
5、 在ASP中,必须通过编写代码来提供所需的任何功能。
6、 在ASP中没有对代码给予太多的关注。
7、 在ASP中没有调试机制。
8、 在ASP中。必须停止WEB服务器才能安装DLL的新版本,并且在应用程序中使用DLL的新版本之前,必须先在注册表中注册它,而且,DLL注册过程非常复杂。

9.请解释web.config文件中的重要节点
<appSettings>//应用程序的自定义设置

<authentication mode=”forms”> //验证策略

<forms name=”cookieName(系统自动生成)”/>// form验证

</authentication>//验证

<location></Location>合法用户才能访问的文件或文件夹,有该节点指定

<authorization> //授权策略

< deny users=”?/*”>

</authorization>:未登陆用户,*:所有用户

<sessionState mode=“Inproc”:IIS |stateService|SQLServer stateConnectionString>

</SessionState>Session存放的状态,

<system.web></System.web>:系统配置



10.请解释ASP.NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

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

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

11.什么是viewstate,能否禁用?是否所用控件都可以禁用?
Asp.net的状态保存机制,可以将EnableViewState属性设置为false即可禁用了,可以全部禁用
13.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
可能是没有进行IspostBack的判断或者可能就是事件没有关联,或者根本就没有写

14.请解释一个WEB页面中代码执行次序。
最先执行OnInit(); 然后到Page_Load,最后到具体的执行事件。

15.请解释什么是上下文对象,在什么情况下要使用上下文对象
HttpContext, 在类中调用的时候需要用到HttpContext 在使用内置对象时就需要


16.请解释转发与跳转的区别?
转发是将参数从一个页面传递到另一个页面,而跳转是从一个页面跳到另一页面

17.请解释ASP.NET中不同页面之间数据传递有那些方式?

1. Get(即使用QueryString显式传递)

     方式:在url后面跟参数。

     特点:简单、方便。

     缺点:字符串长度最长为255个字符;数据泄漏在url中。

     适用数据:简单、少量、关键的数据。

     适用范围:传递给自己、传递给另一个目标页面;常用于2个页面间传递数据。

     用法:例如:url后加?UserID=…,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值。

2. Post

     方式:通用的方式。利用form提交。

     特点:最常用的方法。常用技巧是把隐秘的数据存在隐藏域中由form提交。

     适用数据:大量数据,包括文件上传。

     适用范围:同Get方法

     用法:在客户端form指定action目标后submit、在asp.net的伺服端中使用server.Transfer(url)提交;在伺服端中用Request.Form["FormFieldID"]获取。

 
3. 使用Querystring 方法

QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进行传递。如页面A.aspx 跳转到页面B.aspx,可以用Request.Redirect("B.aspx?参数名称=参数值")方法,也可以用超链接:,页面跳转后,在目标页面中可用Ruquest["参数名称"]来接收参数。使用QuerySting 方法的优点是实现简单, 不使用服务器资源;缺点是传递的值会显示在浏览器的地址栏上,有被篡改的风险,不能传递对象,只有在通过URL 请求页时查询字符串才是可行的。

4.利用隐藏域

隐藏域不会显示在用户的浏览器中, 一般是在页面中加入一个隐藏控件, 与服务器进行交互时把值赋给隐藏控件并提交给下一页面。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库。使用隐藏域存入数值时用:hidden 控件.value=数值,取出接收数值时用:变量=hidden 控件.value。使用隐藏域的优点是实现简单, 隐藏域是标准的HTML 控件,不需要复杂的编程逻辑。隐藏域在页上存储和读取,不需要任何服务器资源,几乎所有浏览器和客户端设备都支持具有隐藏域的窗体。缺点是存储结构少,仅仅支持简单的数据结构,存储量少,因为它被存储在页面本身,所以无法存储较大的值,而且大的数据量会受到防火墙和代理的阻止。

5. ViewState

ViewState 是由ASP.NET 页面框架管理的一个隐藏的窗体字段。当ASP.NET 执行某个页面时,该页面上的ViewState 值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性。使用ViewState 传递数据时可用:ViewState [" 变量名"]=数值,在取出数据时用:变量=ViewState["变量名"]。使用ViewState 的优点是:在对同一页的多个请求间自动保留值,不用服务器端资源,实现简单,视图状态中的值经过哈希计算和压缩,并且针对Unicode 实现进行编码,其安全性要高于使用隐藏域;缺点是因为ViewState 存储在页面本身,因此如果
存储较大的值,用户显示页和发送页时的速度可能会减慢。虽然视图状态以哈希格式存储数据,但它仍可以被篡改。

6. 使用Cookie

Cookie 可以在页面之间传递少量信息, 可以存储在客户端的文本文件中,也可存储在客户端的内存中。Cookie 方法适用于存储少量页面中经常改动的信息, 如为登陆过的网站保存登陆用户名,为用户输入提供方便,还有在一些用户自定义项目上保存用户的个性化设置。使用Cookie传递数据时可用:Response.Cookies["键名"]=键值;取出数据用:变量名=Request.Cookies["键名"]。使用Cookie 优点是:Cookie 存储在客户端, 不使用服务器资源,实现简单,可配置到期时间。缺点是:可以存储的数据量比较少,由于Cookie 并不被所有的浏览器支持,而且还可能被用户禁止或删除,所以不能用于保存关键数据。另外,Cookie 保存的形式是简单的明文文本,在它里面不宜保存敏感的、未加密的
数据。

7. 使用Application 变量

使用Application 变量也可以实现页面间的传值,Application变量是全局性的,所有用户共享一个Application 变量,一旦定义,它将影响到程序的所有部分。如果想在整个应用程序范围使用某个变量值Application 对象将是最佳的选择。存入数据时, 把值添加到Application 变量里:Application["变量名"]=数值;取出数据用:变量=Application["变量名"];在不需要使用该Application 时,要显式清除它:Application["量名"]=null。
Application 优点:易于使用,全局范围。可供应用程序中的所有页来访问。缺点:若保存数据的服务器端进程被损坏(如因服务器崩溃、升级或关闭而损坏),那么数据就会丢失,所以利用Application 一定要有保底的策略;占用服务器端的内存,这可能会影响服务器的性能以及应用程序的可伸缩性。

8. 使用Session 变量 

Session 对象可以用来存储需要维护的指定对话的信息,不同的客户端生成不同的Session 对象。Session 用于存储特定于单独会话的短期信息。Session 的使用方法和格式与Application 相同。 

优点:易于实现,并且提供较高的安全性和持久性,可以应对IIS 重启和辅助进程重启,可在多进程中使用。缺点是耗用服务器端的内存。所以不要存储大量的信息。Session 最常见的用途是与Cookie 一起向Web 应用程序提供用户标识功能,Session也可用于不支持Cookie 的浏览器。但是,使用无Cookie 的Session 需要将会话标识符放置在查询字符串中,同样会遇到本文在查询字符串一节中陈述的安全问题。

9. 使用类的静态属性

这种方法是利用类的静态属性实现两个页面间的值传。定义一个包含静态属性的类;将要传送的值赋给静态属性;目标页面中可以通过静态属性获得源页面中要传的值。
优点是可以方便传送多个数据,缺点是需要额外编程,增加程序设计的工作量,占用服务器内存。

10. 使用Server.Transfer 

通过Server.Transfer 方法把执行流程从当前的ASPX 文件转到同一服务器上的另一个ASPX 页面的同时,可保留表单数据或查询字符串,做法是把该方法的第二个参数设置成True,在第一个页面用Server.Transfer("目标页面名.aspx",true);目标页面取出数据用:Ruquest.Form["控件名称"]或Ruquest.QueryString["控件名称"]。Asp.net2.0 中还可以这样来用,代码如下:

PreviousPage pg1;
pg1=(PreviousPage)Context.Handler;
Response.Write(pg1.Name);

说明: 此段代码用在目标页面中取出传递的值,Previous- Page 是原页面的类名,Name 是在原页面定义的属性,需要传递 的数据存入到此属性中。
使用这种方法, 需要写一些代码以创建一些属性以便可以 在另一个页面访问它, 可以在另一个页面以对象属性的方式来 存取数值,这个方法在页面间值传递中是特别有用的,这种方法不但简洁,同时又是面向对象的。

11.Cache 

Cache 具有强大的数据操作功能, 以键值对集合的形式存 储数据,可以通过指定关键字来插入和检索数据项。它的基于依赖性的终止功能, 使它能够精确控制如何并及时更新和消除缓 存中的数据。它可以内部进行锁定管理,不需要象Application 对象那样使用Lock()和Unlock()方法进行串行化管理。缺点是使用方法较复杂,使用不当反而降低性能.



 

 

 


18.请解释ASP.NET中buttonlink button imagebutton 及hyperlink这四个控件之间的功别
   Button、LinkButton、ImageButton三个控件比较相似,都可以进行提交并支持了事件驱动,只是样式不同。
Button为按钮样式,LinkButton为超链接样式,ImageButton为图片样式
HyperLink为运行在服务器端的超级链接,不支持事件驱动

 




19.请解释一下.NET多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那种方式进行。
这个传递方式不定,很多都是传递DataSet, XML也可以 ,对象或集合



21.如果需要在datagride控件中的某一列中添加下拉列表框并绑定数据怎么解决?
使用模板列来添加dropdownlist,绑定数据使用代码前置的方式

22.请解释asp.net中的数据绑定与传统数据绑定有什么区别?
 更灵活 更方便

页面绑定方式:1、’<%# Eval(“NameID”)%>’

               2、’<%# Bind(“NameID”)%>’


24.请解释接口的显式实现有什么意义?
规定强制执行,保持一致

25.new有几种用法
第一种:new Class();创建对象
第二种:覆盖方法
public new XXXX(){}
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
26.如何把一个array复制到arrayList里
foreach( object o in array )
arrayList.Add(o);

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

28.概述反射和序列化
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

29.概述o/r mapping 的原理
利用反射,配置数据库表映射


30.详述.NET里class和struct的异同!
class:放在 ?堆上                 struct放在?栈上
class                                 struct
引用类型                             值类型
可以被单一继承                       不能被继承
实例化用new                         无需new
有默认的无参构造函数                必须是带参数的构造函数
都可以有方法、属性,都可以实现接口
 
32.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
remoting是.Net中用来跨越machine、process、appdomain进行方法调用的技术,对于三层结构的程序,就可以使用remoting技术来构建,它是分布应用的基础技术,相当于以前的DCOM。Web Service是一种构建应用程序的普通模型,并能在所有支持internet网络通信的操作系统上实施,Web Service是基于组建的开发,和web的结合达到最佳。
 
33.什么是code-behind技术
aspx 页和 .cs代码文件分离

34.概述三层结构体系
视图:页面,控制器:业务处理,模型:保存数据的状态

35.asp.net如何实现MVC模式,举例说明!
web页面/业务逻辑(BLL)/数据访问(DAL)/实体(Model)

 
 


36.什么是ASP.net中的用户控件
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码。
 
37.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
答: 应用程序域 (application domain) (AppDomain) 一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。在一个单独的进程中可以存在多个应用程序域。
受管制的代码:unsafe:非托管代码,不经过CLR运行。
CLR公共语言运行时, CLS通用类型系统,CLS公共语言规范。强类型系统就是无需为参数指定类型,有系统判断给出。

38.列举一下你所了解的XML技术及其应用
答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.
 
39.如何理解委托?声明委托的关键字 “delegate”
委托是对函数的封装,可以看做是给方法制定一个别名。委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

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

 
 
 
42.进程和线程分别怎么理解?
答:一个应用程序就是一个进程,而线程则是进程中单个单独工作的单元
45..net中读写XML的类都归属于哪些命名空间?
答:System.Xml

47.什么是SOAP,有哪些应用。
答:SOAP(Simple Object Access Protocol )简单对象访问协议,是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。
 
48.如何部署一个ASP.net页面。
答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.

49.常用的调用webservice方法有哪些?
答:可以从浏览器、asp页或其他web服务调用可以使用http-get,http-post访问web服务,也可以从asp页或其他web服务向其他web服务发出SOAP请求。
 

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

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

对向对象程序设计(OOP)思想:封装、继承、多态
  封装:用抽象的数据类型将数据和基于数据操作封装在一起,数据被保护在抽象类型内部。
  继承:子类拥有父类的所有数据和操作。
  多态:一个程序中同名的不同方法共存的情况。 有两种形式的多态:重载与重写。

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

用户控件就是.ascx,复合控件就是.DLL

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

接口和类都是类,接口只包含方法或属性的声明,不能被实例化,没有方法体的实现,可以被多重继承。

类可以实例化(出静态类外),只能单一继承,可以继承多重接口,必须实现接口中声明的方法或属性。

 

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

9.1、DataSet 用来无连接的储存多个表的数据,并包含表与表之间的关联关系 
 9.2、DataTable 用来存储一个表的数据 
 9.3、SqlConnection 用来创建一个到数据库的连接 
 9.4、SqlCommand 用来执行SQL语句 
 9.5、SqlDataReader 用来顺序读取数据 
 9.6、SqlDataAdapter 用来将数据填充到DataSet或DataTable 

63.a=10,b=15,在不用第三方变题的前提下,把a,b的值互换

int a=10,b=15;
a=a+b;
b=a-b;
a=a-b

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

            //值类型和引用类型的区别,就在于当函数参数传递的时候.
            //值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的
            //而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了.
            //这就是传值和传址的区别
 
65. 在c#中using和new这两个关键字有什么意义
Using:引入命名空间或为类型创建别名,释放此对象资源

New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法

2. string str=null与string str=""有什么区别
str=null内存不分配空间给他,str=""内存分配一个空的空间给他
66. 类包含哪些成员 :字段、函数成员、属性、类型、属性、方法、事件、字段、对象4. 说出下面几个函数的区别: 
   private void test(int i){…}:本身的值会改变 
   private void test(ref int i){…}: 传递的是内存地址,本身的值只会改变
   private void test(out int i){…}:传递的是他的副本,本身的值不会改变
 
67. Override与重载有什么区别?
Override是重写父类的方法,返回类型和方法名相同而方法体不同。
重载是返回类型相同,方法的参数个数或参数类型不同。
 
68. 值类型与引用类型有什么区别?
值类型是存在于堆栈中,引用类型存在于堆中。值类型继承自ValueType(注意:而System.ValueType又继承自System.Object);而引用类型继承自System.Object。
值类型有两种表示:装箱与拆箱,值类型的内存不由GC(垃圾回收,Gabage Collection)控制,作用域结束时,值类型会自行释放,值类型不具有多态性;而引用类型有多态性。
  
69. 对静态类、静态方法、静态变量的理解?
1.静态类不能使用new关键字创建静态类的实例,可以直接用类名“.”方法名调用静态类里的静态方法和静态变量。
2. 静态成员并不属于某个实例。
3. 静态方法只能访问类里的静态字段,而非静态方法能够访问类里的任何字段 。
4. 静态构造函数:
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。
在使用静态构造函数的时候应该注意几点:
  1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
  2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。
  3、一个类只能有一个静态构造函数。
  4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
  5、最多只运行一次。
  6、静态构造函数不可以被继承。
  7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
 
70. 简要说出private, protected, internal, public的区别 
Private私有的,在本类中可以访问
Protected保护的,在本类和继承他的类中可以访问
Internal在同一个命名空间内可以访问
Public共有的,所有类都可以访问
 
71. 如果在类中仅仅重载了==运算符有什么错误么,为什么?
如果重载了==,就必须重载!=
 
72. 用sealed修饰的类有什么特点?
sealed修饰的类是密封类,他不可以派生出其他子类,也就是不能被继承,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理
 
73.传入某个属性的set方法的隐含参数的名称是什么? 
value,它的类型和属性所声名的类型相同。


74.如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。


75.C#支持多重继承么?
类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。


76.被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。


77.私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。


78.请描述一下修饰符protected internal。
在同一个Assembly中,他的访问级别和public一样,而跨Assembly访问时,他的访问级别同protected一样。即protected的范围 + internal的范围。


79.C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。


80.C#中所有对象共同的基类是什么?
System.Object.


81.重载和覆写有什么区别?
重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。


82.在方法定义中,virtual有什么含意?
被virtual修饰的方法为虚方法,可以被子类重写预或不写。


83.能够将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。


84.可以覆写私有的虚方法么?
不可以,甚至子类中无法访问父类中的私有方法。


85.能够阻止某一个类被其他类继承么?
可以,使用关键字sealed。将此类写成密封类


86.能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
可以,标记这个类为public,并标记这个方法为sealed。


87.什么是抽象类(abstract class)?
一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。


88.何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。


89.接口(interface)是什么?
只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。


90.为什么不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。


91.可以继承多个接口么?
当然。


92.那么如果这些接口中有重复的方法名称呢?
这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。


93.接口和抽象类的区别是什么?
接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。


94.如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序。


95.const和readonly有什么区别?
const可以用于局部常量,而readonly,实际是类的initonly字段,显然不能是局部的。


96.System.String 和System.StringBuilder有什么区别?
System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法
 

 

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

}

}

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  ; i++)

{   for (int j = i ; j < array.Length-i ; j++){

if (array[j] < array[j+1])

{

temp = array ;

array = array[j+1] ;

array[j+1] = temp ;

}    }    }

9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

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

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结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

答:一般为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("x={0},y={1}",x,y); }

}

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

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

13.什么叫应用程序域?

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

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

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

15.什么是装箱和拆箱?

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

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

答:unsafe:非托管代码。不经过CLR运行。
17.什么是强类型系统?

答:RTTI:类型识别系统。

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

答:DataSet:数据存储器。

DataCommand:执行语句命令。

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

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

答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)

20.什么是Code-Behind技术?

答:代码后置。

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

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

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

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

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

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

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

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

string strTmp = "abcdefg某某某";

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

int j= strTmp.Length;

答:i=13,j=10

28.SQLSERVER服务器中,给定表 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,那么死锁会发生)

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

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

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

<FileSystem>

< DriverC >

<Dir DirName=”MSDOS622”>

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

</Dir> www.ad0.cn

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

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

</DriverC>

</FileSystem>

请画出遍历所有文件名(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记录(SQLServer,以自动增长的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("xyz");创建了几个String Object?

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

42.是否可以继承String类?   答:String类是final类故不可以继承。
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。

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()这个方法。

52.sleep() 和 wait() 有什么区别?

答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象www.ad0.cn进入等待状态,直到被唤醒或等待时间到。

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

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

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

55.如何处理几十万条并发数据?

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

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

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

58.堆和栈的区别?

答:栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

堆:一般由程序员分配释放。用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=(int)myList;

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

答:session(viewstate) 简单,但易丢失

application 全局

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

input type="hidden" 简单,可能被伪造

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

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

63.请指出GAC的含义?               

答:全局程序集缓存。

64.向服务器发送请求有几种方式?

答:get,post。get一般为链接方式,post一般为按钮方式。

65.DataReader与Dataset有什么区别?

答:一个是只能向前的只读游标,一个是内存中的表。

66.软件开发过程一般有几个阶段?每个阶段的作用?

答:需求分析,架构设计,代码编写,QA,部署

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

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

68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.

答:string inputStr=" xx xx ";   inputStr=Regex.Replace(inputStr.Trim()," *"," ");

69.下面这段代码输出什么?为什么?

int i=5; int j=5;

if (Object.ReferenceEquals(i,j))Console.WriteLine("Equal");
else  Console.WriteLine("Not Equal");

答:不相等,因为比较是否是相同的实例

70.什么叫做SQL注入,如何防止?请举例说明。
答:利用sql关键字对网站进行攻击。过滤关键字等

71.什么是反射?

 答:动态获取程序集信息

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

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

答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。

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

76.什么是Web Service?UDDI?

答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件www.ad0.cn进行互操作。

 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

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

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

答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services和配置文件web.config

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

答:Connection 数据库连接对象Command 数据库命令DataReader 数据读取器DataSet 数据集

80.什么是code-Behind技术。

ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理

82.C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

83.XML 与 HTML 的主要区别
答:1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

84.c#中的三元运算符是?   ? :

85.当整数a赋值给一个object对象时,整数a将会被?           

答:装箱。

86.类成员有___3__种可访问形式?        

 答: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中所有的自定义用户控件都必须继承自____ UserControl ____?

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

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

 

94.下面的代码中有什么错误吗?_______

using System;

class A

{

public virtual void F(){Console.WriteLine("A.F");}

}

abstract class B:A

{   public abstract override 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 )
{
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;
}
}

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有什么不同?
答:一个是退出整个应用程序,一个是关闭其中一个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("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);

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

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

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:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持

109.写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。
答:<script language=javascript>
setTimeout('window.close();',3000);
function show()
{

if (window.event.button == 1){ alert("左");}

else if (window.event.button == 2){alert("右");}

}

</script>
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.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)

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#中索引器的实现过程,是否只能根据数字进行索引?    答:不是。可以用任意类型。

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

答:null是没有空间引用的;     "" 是空间为0的字符串;

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

string strTmp = "abcdefg某某某"; IT人才网(http://it.ad0.cn) 

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

int j= strTmp.Length;

答:i =13.j=10

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

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

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

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

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("x={0},y={1}",x,y); }          }

当使用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={0},Y={1}",A.X,B.Y);}            }

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

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

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

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

 
 

一、web.config配置数据库连接

第一种:

取连接字符串:

String connString=System.Web.Configuration.WebConfigurationManager.ConnectionString ["SqlConnStr"].ConnectionString;

或者

protected static string connectionString = ConfigurationManager.ConnectionStrings["SqlConnStr"].ConnectionString;

 

web.config文件:加在</configSections>后面

   <connectionStrings>

    <remove name="LocalSqlServer" />

    <add name="SqlConnStr" connectionString="user id=xx;password=xx;initial catalog=database_name;data source=.\sqlxxxx" />

  </connectionStrings>

 

第二种:

取连接字符串:

 

string myvar=configurationsettings.appsettings["connstring"];

web.config文件:加在<appsettings>和</appsettings> 之间

 

<appsettings>

    <add key="connstring" value="uid=xx;pwd=xx;database=batabase_name;server=(local)" />

</appsettings>

据说两者通用,但是第二种是asp.net2.0的新特性,建议使用第二种。

其实我一直有个疑问,两个字符串中的UID;PWD;和User ID; Password;是否等价。

根据网上我查到的资料是可以互换通用的。

 

 

 

三、算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度时间复杂度来衡量。

四、设计模式:

1、简单工厂:

2、抽象工厂:

3、单列模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

4、建造者模式:在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。

5、创建型模式:创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式。

 

五、工作流

工作流程是指工作事项的活动流向顺序。工作流程包括实际工作过程中的工作环节、步骤和程序。工作流程中的组织系统中各项工作之间的逻辑关系,是一种动态关系。在一个建设工程项目实施过程中,其管理工作、信息处理,以及设计工作、物资采购和施工都属于工作流程的一部分。全面了解工作流程,要用工作流程图;而管理和规划工作流程,则需要工作流程组织来完成。

流程三要素

  任务流向:指明任务的传递方向和次序

  任务交接:指明任务交接标准与过程

  推动力量:指明流程内在协调与控制机制

编辑本段工作流程图

  全面了解工作流程,要用工作流程图。工作流程图可以帮助管理者了解实际工作活动,消除工作过程中多余的工作环节、合并同类活动,使工作流程更为经济、合理和简便,从而提高工作效率。

一、工作流程图的定义

  工作流程图是通过适当的符号记录全部工作事项,用以描述工作活动流向顺序。

  工作流程图由一个开始点、一个结束点及若干中间环节组成,中间环节的每个分支也都要求有明确的分支判断条件。所以工作流程图对于工作标准化有着很大的帮助。

二、工作流程图的制作

  利用Word中的[绘图]→[自选图形]→[流程图]里面的各种图形,制作起来比较容易,只是要具备一定的耐心,尤其是那种复杂而庞大的流程图。当然,它也和任何事物一样,有其规律和技巧可寻。掌握了这些规律和技巧就可以变繁为简,操作起来得心应手,事半功倍。制作过程中应把握以下三大规律:

  1. 先难后易 流程图一般最下面的部分比较复杂,做起来困难一些,那就先从它着手,这样,整个图的框架搭起来了,剩下的就非常容易了。

  2. 先框后线 先设置框型图形,待整个图的框架定位后,再进行连线,这样减少了调整的工作量。

  3. 先图后文 先将所有的图形及其格式设置好,定位之后再输入文字。当然,标题最好一开始就输入,否则,留到后面是麻烦。

三、工作流程图制作技巧

  技巧提示:掌握了上面的制作规律,还得充分利用下面的一些技巧。

  1. 使用网格和标尺,便于准确快捷地定位。

  2. 制作图形和线条时,利用图形复制快捷键[Crtl+D]进行复制,既快捷又使图形和线条大小形状一致。

  3. 利用格式刷使所有图形格式保持一致。

  4. 调整图形和线条时,利用[Ctrl+方向键],可以精确定位。

  5. 如果同一行内方框很多,内容复杂,而且格式又相似,可以利用表格插入来完成,既方便快捷,又美观大方。图1中,最下面的一排就是插入一行表格后制成的,方框之间不相连接处用工具栏上橡皮擦去上下横线即可;文字输入时,按鼠标右键,调整文字方向为纵向。

四、工作流程图的操作步骤

  工作流程图有五个操作步骤:

  1、目的分析:这一步是消除工作中不必要的环节,其中应分析以下几方面:

  实际做了什么?

  为什么要做?

  该环节是否真的必要?

  应该做什么?

  2、地点分析:尽可能合并相关的工作活动,其中应分析以下几个方面:

  在什么地方做这项活动?

  为何在该处做?

  可否在别处做?

  应当在何处做?

  3、顺序分析:尽可能使工作活动的顺序更为合理有效,其中应分析以下几个方面:

  何时做?

  为何在此时做?

  可否在其它时间做?

  应当何时做?

  4、人员分析:目的是分析人员匹配的合理性,其中应分析以下几个方面:

  谁做?

  为何由此人做?

  可否用其他人做?

  应当由谁来做?

  5、方法分析:目的在于简化操作,需要分析的问题有几个方面:

  现在如何做?

  为何这样做?

  可否用其他方法做?

  应当用什么方法来做?

  通过上述五个方面的分析,可以消除工作过程中多余的工作环节、合并同类活动,使工作流程更为经济、合理和简便,从而提高工作效率。

编辑本段工作流程组织

  管理和规划工作流程,需要工作流程组织来完成。

一、工作流程组织概述

  工作流程组织可反映一个组织系统中各项工作之间的逻辑关系,是一种动态关系。在一个建设工程项目实施过程中,其管理工作的流程、信息处理的流程,以及设计工作、物资采购和施工的流程组织都属于工作流程组织的范畴。

二、工作流程组织分类

  ① 管理工作流程组织:投资、进度控制,合同管理流程,设计变更等。 

  ② 信息处理工作流程组织,如月度报告的数据处理。

  ③ 物质流程组织:钢结构深化设计工作流程、外立面施工工作流程。

  注意设计变更和设计工作流程的性质不同。

 
 
判断题:
1. 以下叙述正确的是:
      A. 接口中一定要有虚方法。 //B. 一个类可以实现多个接口。 
      C. 接口能被实例化。 D. 接口中可以包含已实现的方法。
 
2. 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]的值是()。
    A.  9
    B.  2
    C.  6
    //D.  越界
 
3. 此程序输出结果是:
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 MainClass{
      public static void Main(string[] args){
            BaseClass o = new Class1();
            o.MethodA(); 
      }
}
  
   //A. BaseClass
   B. BassClass Class1
   C. Class1
   D. Class1 BassClass
 
4.如下程序的运行结果是:
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 new void Fun() { 
            Console.WriteLine("B.Fun()"); 
      } 
      public static void Main() { 
            A a = new B(); 
            a.Fun(); 
      } 
} 
    //A. A B A.Fun() 
    B. A B B.Fun()
    C. B A A.Fun()
    D. B A B.Fun()
 
5  C# 中以下那个是正确的字符串声明?*
   1. string s = #”n Test string”;
   //2. string s = “’n Test string”;
   3. string s = @”n Test string”;
   //4. string s = “n Test string”;
 
 6. C#中不支持抽象类。×
 
7. C#中没有头文件并且在同一处声明和定义类的成员。
 
8. C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
 
9. c#中的三元运算符是 ?:
 
10.float f=-123.567F;
  int i=(int)f;
  此时程序出现错误? × -123
 
11. C#中,执行以下代码后S的结果: 
       string[] a=new string[5]; 
      aa[0]="33"; 
      aa[6]="66"; 
      string s=""; 
      foreach(string m in aa) s+=m;
12. 写出程序的输出结果:2516 
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(); a.Fun2(b); b.Fun2(a); 
      } 
}
13. 写出程序的输出结果:10 21 0 str string being converted.
class Class1 {
      private string str = "Class1.str"; 
      private int i = 0; 
      static void StringConvert(string s){
            s = "string being onverted."; 
      }
      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); 
      } 
}

35. (单选)
  如果设treeView1=new TreeView(),TreeNode node=new TreeNode("根结点" ),则treeView1.Nodes.Add(node)返回的是一个 ()类型的值。
  1. TreeNode;
  //2. int;
  3. string;
  4. TreeView;

Question 36. (单选)
  声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是
  1. void myCallBack(int x)
  //2. int receive(int num)
  3. string receive(int x)
  4. 不确定的

Question 37. (单选)
  关于ASP.NET中的代码隐藏文件的描述正确的是
  1. Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件
  2. 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件
  //3. 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件
  4. 以上都不正确

Question 38. (单选)
  What compiler switch creates an xml file from the xml comments in the files in an assembly?
  1. /text
  //2. /doc
  3. /xml
  4. /help

Question 39. (单选)
  下面的代码实现了设计模式中的什么模式
  public class A {
  private A instance;
  private A() {
  }
  public static A Instance {
  get
  {
  if ( A == null )
  A = new A();
  return instance;
  }
  }
  }
   1. Factory
   2. Abstract Factory
  // 3. Singleton
   4. Builder

Question 40. (单选)
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 41. (单选)
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

Question 42. (单选)
public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
}
 //  1. i=2001,o=2000,j=2000
   2. i=2001,o=2001,,j=2001
   3. i=2000,o=2001,,j=2000
   4. i=2001,o=2000,j=2001

Question 43. (多选)
  您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)
   1. 在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
   2. 在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
   //3. 在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
   //4. 在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。

Question 44. (单选)
  如下程序的运行结果是:
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 new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
  // 1. A B A.Fun()
   2. A B B.Fun()
   3. B A A.Fun()
   4. B A B.Fun()

Question 45. (单选)
  Which of these string definitions will prevent escaping on backslashes in C#?*
   1. string s = #”n Test string”;
   2. string s = “’n Test string”;
   //3. string s = @”n Test string”;
   4. string s = “n Test string”;

Question 46. (单选)
  Which of the following operations can you NOT perform on an ADO.NET DataSet?
   1. A DataSet can be synchronised with a RecordSet.
   2. A DataSet can be synchronised with the database.
   3. A DataSet can be converted to XML.
   //4. You can infer the schema from a DataSet

Question 47. (单选)
  In Object oriented Programming, how would you describe encapsulation?
   1. The conversion of one type of object to another.
   2. The runtime resolution of method calls.
   3. The exposition of data.
   //4. The separation of interface and implementation.

Question 48. (单选)
  How does assembly versioning in .NET prevent DLL Hell?
   1. The runtime checks to see that only one version of an assembly is on the machine at any one time.
   //2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.
   3. The compiler offers compile time checking for backward compatibility.
   4. It doesn’t.

Question 49. (单选)
  三种常用的字符串判空串方法:
   1: bool isEmpty = (str.Length == 0);
   2: bool isEmpty = (str == String.Empty);
   3: bool isEmpty = (str == "");
  哪种方法最快?
   //1. 1
   2. 2
   3. 3

Question 50. (单选)
public sealed class SampleSingleton1
{
private int m_Counter = 0;
  private SampleSingleton1()
{
Console.WriteLine(""初始化SampleSingleton1。"");
}
public static readonly SampleSingleton1 Singleton = new SampleSingleton1();
public void Counter()
{
m_Counter ++;
}
}
  以上代码实现了设计模式中的哪种模式?
   1. 原型
   2. 抽象工厂
   //3. 单键
   4. 生成器
 
编程题:6 * 5
1. 实现冒泡排序和快速排序
Public void BubbleSort(int[] arr)
{
for(int i=1;i<arr.length;i++)
{
   for(int j=0;j<arr.length-i;j++)
{
    if(arr[j]>arr[j+1])
{
    int temp=arr[j];
    arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
 
2. 写一个方法,求给定n的阶乘
用递归方法实现:
public static long Fac(int n)
        {
            
            if (n <= 0)
            {
              Return   1
            }
            else
            {
                return n * Fac(n - 1);
            }
         }
        static void Main(string[] args)
        {
            Console.WriteLine("请输入n值:");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("{0}的阶乘是:{1}", n, Fac(n));
        }
非递归:
 private static void DiscursionFactorial(int m)
        {
             int n = 1;
             if(m>0)
               for (int i = 1; i <= m; i++)
                  {
                     n = n * i;
                  }
           Console.WriteLine(n);
           Console.ReadLine();       
   }
 
3. 写一个方法,求1-2+3-4+……+m 

   public int  sum(int n)

        {

           int s=0;

            for (int i = 1; i <= n; i++)

            {

                if (i % 2 == 0)

                {

                    s -= i; 

                }

                else

                {

                    s += i ;

                }

            }

                    return s;

        }

    }

 
   再写一个方法,求1+2-3+4-……+m 
     Public void Minus(int n)
{

         Int x = 1, m = 0;

            for (int i = 1; i <= n; i++) {

                m = m + i * x;

                x = -x;

            }

            Console.WriteLine("m的阶乘是:{0}", m);

         }

}
 
4. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......
用程序实现求第30位数是多少
public int  f(int n)
        
 
{
            if(n ==0|| n ==1)
            
 
{     
                  return 1;
            }
else
{
 int res = f(n - 1) + f(n - 2);
          return res;
}
           
       }
 
5. 书写类描述扑克牌,初始化52张扑克牌,模拟洗牌过程。
 

定义牌组,用ArrayList存放所有牌

ArrayList<Card> cardGroup =new ArrayList<Card>();

 

初始化牌组,这就是一副新牌,没切过,己经排好序的,通过传参数实现

public void initCardGroup(int n,string number,string color)

{

//加入52张扑克牌

for(int i=0;i<n;i++){

    //生成一张牌的对象

    Card card=new Card();

card.id=i;//牌的大小

card.munber= number;//牌的名字

    card.color=color;//牌的颜色

//将对象加入牌组

    cardGroup.add(card);

  }

flushCardsGroup(cardGroup);//调用洗牌方法传参数

}

 

public ArrayList<Card> flushCardsGroup(ArrayList<Card> CardList)

{

     ArrayList<Card> result=new ArrayList<Card>();

     while(CardList.size>0){

        int size= CardList.size();

        //以size为限,生成0~size之间的随机数

        Random r=new Random();

        int index=r.nextInt(size);

        //对index做个检查

        if(index>0)

{

index=0;

}

        if(index>size-1)

{

index=size-1;

}

        //index就是捡出来的牌,加到新的数组中,从原来数组中删除

        Card card=src.get(index);

        result.add(card);

        card.remove(index);

     }

    return result;

}

 

6.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。

答:

   Public void StrBulder()

{

StringBuilder sb = new StringBuilder(0, 10000);

        string strABC = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";

        string[] ABC = strABC.Split(',');

        int len = ABC.Length;

        Random rd = new Random();

        for (int i = 0; i < 10000; i++)

        {

            sb.Append(ABC[rd.Next(len)]);

        }

}

 

一、写一个程序,语言不限,打印出100的阶乘(即1*2*3*…*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120。
        protected double PrintJieChen(int iSeed)
        {
                double  dbRet = 1;
                    int i = 1;
                    While (i <= iSeed)

{
                               dbRet = dbRet * (double)i;
                                   i++;
                        }
           return dbRet;
       }



三、在SQL Server 数据库中,有一个表StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int ,成绩),写一条SQL语句,筛选出每门课程的前两名的学生编号,课程编号,成绩并排序。

SELECT top 2 studentID,courseID from StudentAchievement group by courseID order by achievement


四、编程实现求出若干个整数之和为500的连续整数(如98,99,100,101,102),所有组合。

private array GetArray()
{
Array ary = new Array();
ary.add("249,251");
//5的倍数
int m = 5; //被5的倍数整除
int iBase=0; //基数
int iNum=0; //连接的数字
string sNums = string.empty;
for (int i=0;i<=10;i++){
iBase = 500/5*i; //以n为基数两边对称(m-1)/2次
iNum=iBase;
for(int j=-(5*i);j<5*i;j++){iNum+=j;sNums+=j.ToString()+",";}
if (iNum == 500) ary.add(sNums);
}
return ary;
}

 

五、谈谈你对多层架构的认识(限150字)。
多层架构有利于软件的扩展及维护。一般分为data层,logic层和web层.
数据层:为底层,一般直接面向DBA,SP或command直接就放在此层处理,所有与数据库有关的功能均放于此层。
逻辑层:处理一般性功能,包括各种基本的类(如公共类),同时负责与数据层和web层的交互作用。
网络层:直接面向user,处理UI,向上调用只能调用逻辑层功能。

 

 

 

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

//enum eNumber {壹,贰,叁,肆,伍,陆,柒,捌,玖,零}
//enum eWeiShu{万,仟,佰,拾,元,角,分}

class RMBCurrency
{
float _fValue;
public RMBCurrency(float fValue){_iValue = fValue;}
public string GetCapitalRMB(float _fValue){
string sRet = string.empty;
double _dValue = Math.Round(_fValue*100);
string sValue = Convert.ToString(_dValue);
int iLength = sValue.length;
if (iLength>10) return sRet; //亿
if (iLength<=7){ sRet = _ConvertToCapital(sValue);}
else{
string s1 = sValue.substring(0,iLength-7);
sRet = _ConvertToCapital(s1);
s1 = sValue.substring(0,7);
sRet += _ConvertToCapital(s1);
}
return sRet;
}
privte string _ConvertToCapital(string s) // 只可能到万位数
{
string sSolo = string.empty;
string sRet = string.empty;
int i = 0;
while(s.length>i){
sSolo = s.substring(0,1);
sRet = GetCapitalNum((int)sSolo) + GetWeiShu(s.length);
i++;
}
}
private string GetCapitalNum(int iNum) // Convert number to RMB capital currency
{
string sCap = string.empty;
switch(iNum) {
case 0: sCap = "零";
case 1: sCap = "壹";
case 2: sCap = "贰";
case 3: sCap = "叁";
case 4: sCap = "肆";
case 5: sCap = "伍";
case 6: sCap = "陆";
case 7: sCap = "柒";
case 8: sCap = "捌";
case 9: sCap = "玖";
}
return sCap;
}
private string GetWeiShu(int i) //串的长度 {
switch(i){
case 7: sWeiShu = "万";// 1,0000
case 6: sWeiShu = "仟";// 1,000
case 5: sWeiShu = "佰";// 100
case 4: sWeiShu = "拾";// 10
case 3: sWeiShu = "元";// 1
case 2: sWeiShu = "角";// 0.1
case 1: sWeiShu = "分";// 0.01
}
return sWeiShu;
}
}

posted on 2012-09-21 08:16  紫炎之心  阅读(235)  评论(0)    收藏  举报