C#, ASP.NET笔试题(3)
短信预约 -IT技能 免费直播动态提醒
本文转自:http://www.cnblogs.com/JCSU/articles/1289762.html
120. 请叙述属性与索引器的区别
属性:
(1) 通过名称标识
(3) 通过简单名称或成员访问来访问
(3) 可以为静态成员或实例成员
(4) 属性的get访问器没有参数
(5) 属性的set访问器包含隐式value参数
属性:
(1) 通过名称标识
(3) 通过简单名称或成员访问来访问
(3) 可以为静态成员或实例成员
(4) 属性的get访问器没有参数
(5) 属性的set访问器包含隐式value参数
索引器:
(1) 通过签名标识
(2) 通过元素访问来访问
(3) 必须为实例成员
(4) 索引器的get访问器具有与索引器相同的形参表
(5) 除了value参数外,索引器的set访问器还具有与索引器相同的形参表
(1) 通过签名标识
(2) 通过元素访问来访问
(3) 必须为实例成员
(4) 索引器的get访问器具有与索引器相同的形参表
(5) 除了value参数外,索引器的set访问器还具有与索引器相同的形参表
121. 请叙述const与readonly的区别。
答:每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。为了不违背编码规则,通常把static数据成员声明为private,然后通过static property提供读写访问。
const关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。
const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
readonly在运行期评估赋值,使我们得以在确保"只读访问"的前提下,把object的初始化动作推迟到运行期进行。
readonly关键字与const关键字不同:const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此, 根据所使用的构造函数,readonly字段可能具有不同的值。另外,const字段是编译时常数,而readonly字段可用于运行时常数。
readonly只能在声明时或者构造函数里面初始化,并且不能在static修饰的构造函数里面。
122. 您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:
a、 匿名用户不允许访问这个应用程序。
b、 所有雇员除了Tess和King都允许访问这个应用程序。
请问您应该使用以下哪一个代码段来配置这个应用程序?( A )
A. <authorization>
<deny users="allwin\tess, allwin\king">
<allow users="*">
<deny users="?">
</authorization>
B. <authorization>
<allow users="*">
<deny users="allwin\tess, allwin\king">
<deny users="?">
</authorization>
C. <authorization>
<deny users="allwin\tess, allwin\king">
<deny users="?">
<allow users="*">
</authorization>
D. <authorization>
<allow users="allwin\tess, allwin\king">
<allow users="*">
</authorization>
E.<authorization>
<allow users="*">
<deny users="allwin\tess, allwin\king">
</authorization>
123. 您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做? ( C? )
A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数
B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数
C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数
D.重写OnLayout事件,当Grid的Footer行被创建时显示合计数
A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数
B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数
C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数
D.重写OnLayout事件,当Grid的Footer行被创建时显示合计数
123.
您要创建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错误
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错误
125. 您为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 文件
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 文件
126.
您要创建一个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控件
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控件
127. 什么是ASP.net中的用户控件
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
128. 值类型和引用类型的区别?写出C#的样例代码。
答:结构是值类型,类是引用类型,所以传结构就是值类型的应用,传对象或类就是引用类型的.
答:结构是值类型,类是引用类型,所以传结构就是值类型的应用,传对象或类就是引用类型的.
129. 如何理解委托?
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:
委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:
委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。
130. 私有程序集与共享程序集有什么区别?
答:一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存 (Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类
131. CLR与IL分别是什么含义?
答:CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是 CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR 就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码 (不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时 (Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
答:一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存 (Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类
131. CLR与IL分别是什么含义?
答:CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是 CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR 就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码 (不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时 (Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
132. 请解释ASP.NET中以什么方式进行数据验证
答:Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
答:Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
133. WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回
答:在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端
只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
答:在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端
只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
134. 请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略
authorization授权, 此节设置应用程序的授权策略
appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略
authorization授权, 此节设置应用程序的授权策略
135. 请解释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" 表用运行时使用哪一个隐藏类
答:一个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" 表用运行时使用哪一个隐藏类
136. 什么是viewstate,能否禁用?是否所用控件都可以禁用?
答:Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用
答:Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用
137. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
答:很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
答:很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
138. 请解释什么是上下文对象,在什么情况下要使用上下文对象
答:上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象
答:上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象
139. 请解释转发与跳转的区别?
答:转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面; 跳转就是指客户端的跳转
答:转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面; 跳转就是指客户端的跳转
140. new有几种用法
第一种:new Class();
第二种:覆盖方法 public new XXXX() { }
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数
第一种:new Class();
第二种:覆盖方法 public new XXXX() { }
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数
141. 如何把一个array复制到arrayList里
答:foreach( object o in array )arrayList.Add(o);
答:foreach( object o in array )arrayList.Add(o);
142. datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview,IList]
143. 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
答:Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程 序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动 方式 2)手动方式 3)禁用。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的 EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。
答:Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程 序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动 方式 2)手动方式 3)禁用。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的 EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。
144. Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?
答:这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,比如通常情况下,32位处理器下,单个进程所能访问的最大内存量 为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存的1/2,因为要分配给操作系统一半虚拟内存。
答:这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,比如通常情况下,32位处理器下,单个进程所能访问的最大内存量 为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存的1/2,因为要分配给操作系统一半虚拟内存。
145. 什么是强类型,什么是弱类型?哪种更好些?为什么?
答:强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事 先已经确定好了,而且效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但 它灵活,多用于解释型编程语言,如javascript,vb等
答:强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事 先已经确定好了,而且效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但 它灵活,多用于解释型编程语言,如javascript,vb等
146. PID是什么?在做系统的故障排除时如何使用它?
PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual studio.net等ide将故障进程附加到进程中进行调试(debug)
PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual studio.net等ide将故障进程附加到进程中进行调试(debug)
147. 阐述面向接口、面向对象、面向方面编程的区别
答:面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强 调的是本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时 候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的 分解。面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块 化。而面向方面正是解决这一问题的方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。
答:面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强 调的是本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时 候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的 分解。面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块 化。而面向方面正是解决这一问题的方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。
148. 从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
答:这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生
答:这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生
149. 调用Assembly.Load算静态引用还是动态引用?
答:动态
答:动态
150. SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
答:
INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
答:
INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
151. DateTime.Parse(myString); 这行代码有什么问题?
答:有问题,当myString不能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse()
152. PDB是什么东西? 在调试中它应该放在哪里?
答:PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
答:PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
153. 写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查",lock的使用
public void LockTest()
{
Object lockObj = new Object();
lock (lockObj)
{
//
}
}
{
Object lockObj = new Object();
lock (lockObj)
{
//
}
}
154. 对比OOP和SOA,它们的目的分别是什么?
答:我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态 。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思 想是继承和发扬了OOP的优点。
答:我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态 。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思 想是继承和发扬了OOP的优点。
155. XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?
答:我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.
答:我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.
156. 为什么不提倡catch(Exception)?
答:原因可能有两点:1. try...catch在出现异常的时候影响性能 2.应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等
答:原因可能有两点:1. try...catch在出现异常的时候影响性能 2.应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等
157. Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?
答:Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。
答:Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。
158. Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。
答:Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略
答:Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略
159. JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?
答:方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么
答:方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么
160. a.Equals(b)和a == b一样吗?
答:不一样。a.Equals(b)表示a与b一致, a==b表示a与b的值相等
答:不一样。a.Equals(b)表示a与b一致, a==b表示a与b的值相等
161. 在对象比较中,对象一致和对象相等分别是指什么?
答:对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同
答:对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同
162. 在.NET中如何实现深拷贝(deep copy)?
答:实现IClonable接口
答:实现IClonable接口
163. 请解释一下IClonable
答:IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象 中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是 Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较
答:IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象 中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是 Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较
public class Name
{
public string FirstName;
public string LastName;
}
public class Person : ICloneable
{
public Name PersonName;
public string Email;
/// <summary>
/// Deep Copy的例子
/// </summary>
/// <returns></returns>
public Object Clone()
{
Person p = new Person();
p.Email = this.Email;
p.PersonName = new Name();
p.PersonName.FirstName = this.PersonName.FirstName;
p.PersonName.LastName = this.PersonName.LastName;
return p;
}
public void ChangLastName(string lastName)
{
this.PersonName.LastName = lastName;
}
public static void Main()
{
Person p = new Person();
p.PersonName = new Name();
p.PersonName.LastName = "san";
p.PersonName.FirstName = "zhang";
p.Email = "sanzhang@126.com";
Person sameNamePerson = p.Clone() as Person;
sameNamePerson.ChangLastName("clr_");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Person samePerson = p.MemberwiseClone() as Person;
samePerson.ChangLastName("Shadow");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Console.Read();
}
}
{
public string FirstName;
public string LastName;
}
public class Person : ICloneable
{
public Name PersonName;
public string Email;
/// <summary>
/// Deep Copy的例子
/// </summary>
/// <returns></returns>
public Object Clone()
{
Person p = new Person();
p.Email = this.Email;
p.PersonName = new Name();
p.PersonName.FirstName = this.PersonName.FirstName;
p.PersonName.LastName = this.PersonName.LastName;
return p;
}
public void ChangLastName(string lastName)
{
this.PersonName.LastName = lastName;
}
public static void Main()
{
Person p = new Person();
p.PersonName = new Name();
p.PersonName.LastName = "san";
p.PersonName.FirstName = "zhang";
p.Email = "sanzhang@126.com";
Person sameNamePerson = p.Clone() as Person;
sameNamePerson.ChangLastName("clr_");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Person samePerson = p.MemberwiseClone() as Person;
samePerson.ChangLastName("Shadow");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Console.Read();
}
}
164.什么叫装箱?
答:装箱(boxing)是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如int j = (int)o;属于拆箱
答:装箱(boxing)是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如int j = (int)o;属于拆箱
165.string是值类型还是引用类型?
答:引用类型
答:引用类型
166. XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?
答:只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。
答:只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。
167. 为什么不应该在.NET中使用out参数?它究竟好不好?
答:我挺喜欢用out参数的,特别是当函数需要有多于1个返回的时候,我比较愿意用out,至于它好不好没研究过 ?
答:我挺喜欢用out参数的,特别是当函数需要有多于1个返回的时候,我比较愿意用out,至于它好不好没研究过 ?
168. 特性能够放到某个方法的参数上?如果可以,这有什么用?
答:可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便报错。
对方法的参数设置Attribute的例子
答:可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便报错。
对方法的参数设置Attribute的例子
[AttributeUsage(AttributeTargets.Parameter)]
public class ParameterAtt : Attribute
{
public int Min = 100;
}
public class AttributeTest
{
public void TestMethod([ParameterAtt(Min = 100)] int par1)
{
ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0];
ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt;
if (att.Min > par1)
{
throw new Exception("要求para1最小为" + att.Min);
}
}
}
public class ParameterAtt : Attribute
{
public int Min = 100;
}
public class AttributeTest
{
public void TestMethod([ParameterAtt(Min = 100)] int par1)
{
ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0];
ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt;
if (att.Min > par1)
{
throw new Exception("要求para1最小为" + att.Min);
}
}
}
169. delegate是引用类型还是值类型?enum、int[]和string呢(难度系数40%)?
答案:delegate引用类型,enum值类型,int[]引用类型,string引用类型(尽供参考)。
答案:delegate引用类型,enum值类型,int[]引用类型,string引用类型(尽供参考)。
170. base这个关键字有哪几种语法?override呢?
答案:base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法(尽供参考)。
答案:base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法(尽供参考)。
171. 请指出C#中是否有下列关键字?virtual、sealed、abstract、import、as、in、goto、final、Const、signed、String(提示,仅指出C#中没有的即可)
答案:没有的关键字:import、final、Const、signed、String(尽供参考)。
答案:没有的关键字:import、final、Const、signed、String(尽供参考)。
172. 在循环:for( int i = 0; i < 100; i++ ) Console.WriteLine( i );中,请指出i++的执行时机。
答案:在Console.WriterLine( i );执行之后(尽供参考)。
答案:在Console.WriterLine( i );执行之后(尽供参考)。
173. 试说明continue关键字的用处。
答案:马上开始下一次循环,忽略循环体余下的语句(尽供参考)。
答案:马上开始下一次循环,忽略循环体余下的语句(尽供参考)。
174. object是C#的关键字吗?请指出C#中有哪些类型关键字,如int、float。(提示,写得越多越好)。
答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool,如回答:enum、struct、class、delegate也算对(尽供参考)。
答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool,如回答:enum、struct、class、delegate也算对(尽供参考)。
175. C#的XML文档注释中(以///开头的注释),<summary>标签用于描述什么?<param>标签呢?
答案:<summary>用于某个元素的概要说明,<param>用于某个方法的参数概要说明(尽供参考)。
答案:<summary>用于某个元素的概要说明,<param>用于某个方法的参数概要说明(尽供参考)。
176. 我们知道[]是数组和索引器的访问操作符,但它还有一个语法,是什么?
答案:特性(Attribute)(尽供参考)
答案:特性(Attribute)(尽供参考)
177. 请用代码简单描述一下Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念
178. a=10,b=15,在不用第三方变题的前提下,把a,b的值互换
179. 已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组
180. 请简述面向对象的多态的特性及意义
181. session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法
182. 对数据的并发采用什么办法进行处理较好。
183. 已知Oracle数据库有GD和ZS两个数据库,GD数据库v_s表有数据写入时,从v_s表中提取最新数据到ZS数据库的D_E表中。请问用什么办法解决这一问题?如果又碰到不能互访的问题时,又用什么办法解决?
184. 已知Oracle数据库a,b。现在在a用户权限下,访问b数据库sql语句为select a.* From b a,请改正这一句Sql的写法
185. 当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法
186. 算法分析
AH 20060625 12 44 01 CAD001
AH 20060625 12 44 01 CAD001
AH 20060625 13 44 02 CAD001
AH 20060625 14 44 03 CAD001
说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段
很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉
AH 20060625 12 44 01 CAD001
AH 20060625 12 44 01 CAD001
AH 20060625 13 44 02 CAD001
AH 20060625 14 44 03 CAD001
说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段
很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉
本文转自:http://www.cnblogs.com/JCSU/articles/1289762.html
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341