多角度看.NET面试题

1ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释   
     身份验证是从用户获取名称和密码等标识凭证并根据某些机构验证这些凭据的过程。如果凭据有效,则提交该凭据的实体被视为通过身份验证的标识。一旦标识通过了身份验证,则身份验证过程会确定该标识是否可以访问给定的资源。
     通过身份验证提供程序、包含验证请求者凭据所需代码的代码模块来实现身份验证。
     Forms 身份验证
        通过其可将没有通过身份验证的请求重定向到使用 HTTP客户端重定向的 HTML窗体的系统。用户提供凭据并提交该窗体。如果应用程序验证该请求,系统就会发出包含凭据或密钥的 Cookie以重新获取该标识。后续的请求在请求标题中随 Cookie一起发出,ASP.NET事件处理程序会使用应用程序开发人员指定的任何验证方法去验证请求并给其授权。
    assport 身份验证  Microsoft提供的集中身份验证服务,用于为成员站点提供单一登录和核心配置服务。
    Windows 身份验证 身份验证 ASP.NET会结合 Internet信息服务 (IIS)身份验证使用 Windows身份验证。IIS以下列三种方式执行身份验证:基本身份验证、摘要式身份验证或集成 Windows身份验证。当 IIS身份验证完成后,ASP.NET会使用验证过的标识授权访问权限。
    <authentication mode= "[Windows|Forms|Passport|None]"/>
  2.什么是WEB控件?使用WEB控件有那些优势?    
    HTML控件是在客户端运行的,只有加上RUNAT=SERVER才能作为服务器控件(WEB控件)运行
也就是说,要在.NET程序中针对控件操作,只能是针对服务器控件,包括修改它的属性
而不能够针对HTML控件操作.HTML控件可以像ASP一样,通过客户端的脚本来控制

  3.请解释ASPNET中以什么方式进行数据验证?   
a. RequiredFieldValidator:检查用户是否输入;

b. CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大、等于等;

c. RangeValidator:检查用户输入是否在某一指定范围;

d. RegularExpressionValidator:检查用户输入是否符合某一指定的正则表达式要求;

e. CustomValidator:检查用户输入是否符合开发者指定的验证逻辑规则。
 4.请谈谈对正则表达式的看法? 
一个正则表达式,就是用某种模式去匹配一类字符串的一个公式  
 5ASPNET中共有几种类型的控件?各有什么区别?    
HTML  WEB
 6WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
Asp.net 中在客户端触发服务端事件分为两种情况:一. WebControls中的ButtonHtmlControls中的TypesubmitHtmlInputButton

这两种按钮最终到客户端的表现形式为: input name="Submit1" id="Submit1" type="submit" value=”Submit”>,这是Form表单的提交按钮,以后会作为参数发送到服务端,参数是这样的:控件的name属性=控件的value值,对应上面的例子就是:Submit1= Submit服务端会根据接收到的控件的name属性的这个key来得知是这个按钮被了,从而在服务端触发这个按钮的事件。二. HtmlControls 中的 TypebuttonHtmlInputButton和其它所有的控件事件,比如LinkButtonTextBoxChange事件等等:

这些事件在客户端产生后会经过一个统一的机制发送到服务端。1.首先asp.net页框架会使用两个Hidden域来存放表示是哪个控件触发的事件,以及事件的参数:!—表示触发事件的控件,一般是这个控件的name -->input type="hidden" name="__EVENTTARGET" value="" />!—表示触发事件的参数,一般是当某个控件有两个以上的事件时,用来区别是哪个事件 -->input type="hidden" name="__EVENTARGUMENT" value="" />2. 服务端会生成一个jscript的方法来处理所有这些事件的发送,这段代码是:script language="javascript">!--function __doPostBack(eventTargeteventArgument) {var theform = document.WebForm2;theform.__EVENTTARGET.value= eventTarget;theform.__EVENTARGUMENT.value = eventArgument;theform.submit();}// -->/script>3.每个会

引发服务端事件的控件都会在响应的客户端事件中调用上面的代码:比如,HtmlControls中的 TypebuttonHtmlInputButton的事件!—客户端的事件调用__doPostBackeventTarget参数为

‘Button2‘,表示是name‘Button2’控件触发的事件,eventArgument为空,表示这个TypebuttonHtmlInputButton只有一个客户端触发的服务端事件-->input language="javascript"

onclick="__doPostBack(‘Button2‘‘‘)" name="Button2" id="Button2" type="button"value="Button" />又比如,TextBox控件的Change事件!—客户端的onchange事件调用__doPostBack

eventTarget参数为’TextBox1’,表示是name’TextBox1’控件触发的事件,而TextBox控件只有一个客户端触发的服务端事件TextChanged,故服务器就会去触发这个TextBoxTextChanged事件->input name="TextBox1" type="text" id="TextBox1" onchange="__doPostBack(‘TextBox1‘‘‘)" language="javascript" />4.客户端触发事件后调用__doPostBack方法,将表示触发的控件源的eventTarget和事件参数eventArgument分别付给两个隐藏域__EVENTTARGET__EVENTARGUMENT,然后提交Form,在服务端根据__EVENTTARGET__EVENTARGUMENT来判断是哪个控件的什么事件触发了。

7.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。)

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) 
8override与重载的区别
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
9.net的错误处理机制是什么

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

10.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview] dataset,datatable,dataview , IList 
11.什么是ASP.net中的用户控件答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不

同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

12.值类型和引用类型的区别?写出C#的样例代码。答:结构是值类型,类是引用类型,所以传结构就是值类型的应用,传对象或类就是引用类型的
13.ADO.net中常用的对象有哪些?分别描述一下。答:connection command sqldateadapter sqldatereader dataset datatable dataview等等.

14.net中读写数据库需要用到哪些类?他们的作用答:这个类自已可以写的啊,你是指基类吗?configuration,sqlconnection,sqlcommand等都要用到.

15.什么是SOAP,有哪些应用。答:SOAPSimple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用

考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,
16请解释web.config文件中的重要节点 appSettings包含自定义应用程序设置。 system.web系统配置 compilation动态调试编译设置 customErrors自定义错误信息设置 authentication身份验证,

此节设置应用程序的身份验证策略。 authorization授权,此节设置应用程序的授权策略.

17请解释转发与跳转的区别?转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面跳转就是指客户端的跳转
18 CLRIL分别是什么含义? CLR:公共语言运行时,类似于Java中的JVMJava虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLRCLR将直接与系统进行通信,而编程语言如C#.NET将尽量避免直接与系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与系统之间的翻译,同时它为具体的编程语言提供了许多资源:IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-TimeJIT)编译器处理成为机器码,被解释及执行。

19 .请解释ASPNET中以什么方式进行数据验证 Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件   
20.什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。
21..net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)

22.请详述在dotnet中类(class)与结构(struct)的异同?
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 23.请解释什么是上下文对象,在什么情况下要使用上下文对象   
下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction)时就要以使用此对象
 24.请解释asp.net中的数据绑定与传统数据绑定有什么区别?
    传统的数据绑定是一种连接数据绑定,即在数据绑定期间,客户端一直保持与数据库的连接,这种状态下,数据库的性能大受影响。  
    asp.net的数据绑定是一种非连接数据绑定,即只在读取和更新数据的瞬间,才与数据库连接并交换数据,之后便可释放与数据库的连接,数据库的性能因此将大大提高。
 25.请解释.net采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别,以图示方式解释。    
 26.请解释接口的显式实现有什么意义?
C#中接口和类的异同接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属
性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。


27.请编程遍历页面上所有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 ; 


28.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)  
{  
lock(this)  
{  
if (i>10)  
{  
i--;  
test(i);  
}  
}  

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

29.简要谈一下您对微软.NET构架下remotingwebservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。
30.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid

)。根据您的知识,请简要谈一下您的思路
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。
31.abstract classinterface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然

而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为

。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变

量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接

口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
32.是否可以继承String?
答:String类是final类故不可以继承。
33.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
答:switchexpr1)中,expr1是一个整数表达式。因此传递给 switch  case语句的参数应该是 int short char或者bytelong,string都不能作用于swtich

34.abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能。

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

36.数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有length()这个方法。

37.sleep() wait()有什么区别?
答:sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程

具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
38.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate serverSQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获SessionEND事件。
39.堆和栈的区别?
答:
栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
堆:一般由程序员分配释放。用newmalloc等分配内存函数分配得到的就是在堆上。
40.成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作

41.ASPNETASP相比,主要有哪些进步?
答:asp解释形,aspx编译型,性能提高,有利于保护源码。
42.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
答:session(viewstate)简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype="hidden" 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
43.什么是反射?
答:动态获取程序集信息
44.当整数a赋值给一个object对象时,整数a将会被?
答:装箱。
45.重载与覆盖的区别?
答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

46.请解释web.config文件中的重要节点

appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略。
authorization授权,此节设置应用程序的授权策略.

可以调用
例如:<asp:TextBox id="TextBox1" onclick="clientfunction();" runat="server">
</asp:TextBox>
<INPUT id="Button2" value="Button" name="Button2" 
runat="server" onclick="clientfunction();" 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。