最新NET面试问题整理_net面试问题
最新NET面试问题整理由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“net面试问题”。
NET面试题
1. ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释
ASP.NET身份验证模式包括Windows、Forms(窗体)、Paport(护照)和None(无)。 Windows身份验证—常结合应用程序自定义身份验证使用使用这种身份验证模式时,ASP.NET依赖于IIS对用户进行验证,并创建一个Windows访问令牌来表示已通过验证的标识。IIS提供以下几种身份验证机制:
Paport身份验证。使用这种身份验证模式时,ASP.NET使用Microsoft Paport的集中式身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。由于访问新的受保护资源或站点时不再需要登录。ASP.NET为Microsoft Paport软件开发包(SDK)所提供的功能提供了一个方便的包装(Wrapper)。此SDK必须安装在WEB服务器上。 Form窗体身份验证—常用。这种验证方式使用客户端重定向功能,将未通过身份验证的用户转发到特定的登录窗体,要求用户输入其凭据信息(通常是用户名和密码)。这些凭据信息被验证后,系统生成一个身份验证票证(ticket)并将其返回客户端。身份验证票证可在用户的会话期间维护用户的身份标识信息,以及用户所属的角色列表(可选)。
2. 什么是WEB控件?使用WEB控件有那些优势?
Web 服务器控件定义为抽象控件,是使用于web窗体页并运行于服务器的控件,包括传统的窗体控件,例如按钮、文本框和表等复杂控件,还包括提供在网格中显示数据、选择日期等常用窗体功能的控件。
可在服务器上使用熟悉的面向对象技术对其进行编程的对象模型。每个服务器控件都公开一些属性,这些属性使您得以在服务器代码中通过编程操作该控件的 HTML 属性。
提供一组事件,您可以为其编写事件处理程序,方法与在基于客户端的窗体中大致相同,所不同的是事件处理是在服务器代码在客户端脚本中处理事件的能力。
自动维护控件状态。在窗体到服务器往返期间,用户在 HTML 服务器控件中输入的值将在页发送回浏览器时自动维护。与验证控件进行交互,便于您验证用户是否在控件输入了适当的信息。数据绑定到一个或多个控件属性。
如果 Web 窗体页显示在支持层叠样式表的浏览器中,则支持 HTML 4.0 样式。
直接可用的自定义属性。您可以将任何需要的属性添加到 HTML 服务器控件,页框架将读取并呈现它们而不更改其任何功能。Web 服务器控件还提供以下功能:
功能丰富的对象模型,该模型具有类型安全编程功能。
自动浏览器检测。控件可以检测浏览器的功能,并为基本型和丰富型(HTML 4.0)浏览器创建适当的输出。 对于某些控件,可以使用模板来自定义控件的外观。
对于某些控件,可以指定控件的事件是立即发送到服务器,还是先缓存然后在提交窗体时引发。 可将事件从嵌套控件(例如表中的按钮)传递到容器控件。
3. 请解释ASP。NET中以什么方式进行数据验证?
.net中提供了几个数据验证控件,可以在服务器端或者客户端进行验证。
4. 请谈谈对正则表达式的看法?
正则表达式:Regular Expre(也称为“regex”或“regexp”),是一种用来描述文本模式的特殊语法。
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具
5. ASP.NET中共有几种类型的控件?各有什么区别?
Html控件――传统的html标记+runat=”server”,可在服务器端访问,功能没有Web控件强大 Web控件――服务器端控件,可以回传数据,事件驱动
用户控件――自定义、可重用的控件,和WebForm很相似,以WebForm为容器运行
自定义控件――自定义、可重用的组件,从WebControl继承,在服务器端执行 中完成的。None。使用这种身份验证模式,表示你不希望对用户进行验证,或是采用自定义的身份验证协议。
这将允许您向控件添加浏览器特定的属性。6. WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
通过实现IPostBack这个接口来执行事件。自动回传就是AutoPostBack,使用自动回传可以监视客户端变化情况并将这种改变返回到服务器端
7. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
能,追根溯源,服务器端控件在html中表现形式还是html标记,所以可以执行客户端事件 例如:控件.Attributes[“客户端事件”]=“客户端脚本”;
8. ASP。NET与ASP相比有什么优势?
1.开发语言不同
ASP仅局限于使用non-type脚本语言来开发,用户给WEB页中添加ASP代码的方法与客户端脚本中添加代码的方法相同,导致代码杂乱。
ASP.NET允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜加巨大的.NET Framework。2.运行机制不同
ASP是解释运行的编程框架,所以执行效率加较低。
ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。3.开发方式
ASP把界面设计和程序设计混在一起,维护和重用困难。
ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。
9. 请解释web.config文件中的重要节点
connectionStrings:配置连接字符串,在程序中读取(还可直接提供给其他节点使用,如缓存依赖节点)
AppSettings:可以提供用户自己配置参数,然后在程序中读取
customErrors:配置程序的错误处理
authentication和authorization:配置程序的安全验证和授权 trace:配置程序的跟踪
globalization:配置程序的全球化,比如:语言 pages:配置程序的页设置
10. 请解释ASP。NET中的Web页面与其隐藏类之间的关系?
11. 什么是ViewState,能否禁用?是否所用控件都可以禁用?
Web页面是没有状态的,ViewState(视图状态)可用来保存Web页面在客户端和服务器端往返过程的状态
12. 当发现不能读取页面上的输入的数据时苏州人才网 www.daodoc.com成的,其中,程序集的标识包括简单文本名称、版本号和区域性信息(如果提供的话)。您可以确保名称的全局唯一性。
26. 请列出c#中几种循环的方法,并指出他们的不同 1)do: 先循环后判断循环条件
do { // 循环体 }while(循环条件);2)while:根据条件判断是否循环
While(循环条件){ } 3)for:可以指定循环次数,递增量等,功能强大
for(初始值;条件;递增){ } 4)foreach:遍历集合,效率最好
foreach(类型 变量 in 集合){ } 循环体 循环体 循环体
b 对上面生成的数组排序,需要支持升序、降序两种顺序 int[] iArray= new int[100];Random random= new Random();ArrayList arraylist= new ArrayList(100);for(int i = 0;i
} Array.Sort(iArray);//排序 Array.Reverse(iArray);//反序 int iKey= random.Next(0,99-i);IArray[i] = Convert.ToInt32(arraylist[iKey]);arraylist.RemoveAt(iKey);arraylist.Add(i);
27. 请指出.net中所有类型的基类
Object
28. 请指出GAC的含义
全局程序集缓存(global aembly cache, GAC)。它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目录进行查找。
29. params关键字的作用
params 关键字可以指定在参数数目可变处采用苏州除皱 www.daodoc.com参数的方法参数。
在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
30. 请解释ASP.NET中以什么方式进行数据验证?
可以使用验证控件进行客户端和服务器端验证
也可以使用传统方式:用客户端脚本在客户端验证,用服务器语言在服务器端验证
31. ArrayList,Array,string[]三者的区别?
32. 请说明.net中的错误处理机制,并举例
异常是从 Exception 类继承的对象,异常从发生问题的代码区域引发,然后沿堆栈向上传递,直到应用程序处理它或程序终止 try { //执行代码 } catch { //出错处理 } finally { //无论怎样,都要执行 }
33. 什么叫应用程序域?
应用程序域提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。您可以在具有同等隔离级别(存在于单独的进程中)的单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。
34. 常用的调用webservice方法有哪些
1)使用WSDL.exe命令行工具。
2)使用VS.NET中的Add Web Reference菜单选项
35. 什么是ASP.net中的用户控件
用户控件,其实就是网页的一部分,包括 ascx与.cs文件前台标苏州祛斑 www.daodoc.command:命令对象 传递 T-sql语句或者存储过程,以执行对数据库的查询与操作。DataAdpater:适配器对象 管理 Command对像。主要用于查询或更新数据。DataReader:数据读取器对象 快速、以向前、不断开连接的情况下读取数据。
39. 如何理解委托?
40. C#中的接口和类有什么异同。
接口里只能有 方法、属性、索引器声明,不能有任何实现。
其方法的实现,必须由类来完成。其作用是广泛接收实现过它的类的实例,以实现子类的灵活替换。
类是对一类事物的描述。有属性,有方法,有成员。方法可以有抽像方法,虚方法。抽像方法也是只有声明,没有实现,必段由继承它的子类来重写。虚方法是实现了的方法,只是,在子类,根据需要可重写,也可以不重写。
41. UDP连接和TCP连接的异同。TCP协议是面向连接的,每个数据包的传输过程是:先建立链路、数据传输、然后清除链路。数据包不包含目的地址。受端和发端不但顺序一致,而且内容相同。它的可靠性高,UDP协议是面向无连接的,每个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中不管其顺序,数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况,通过请求重发来解决。它的效率比较高。
42. 进程和线程的区别?
进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源
43. 什么是Code-Behind技术。
就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创建。比如分工,美工和编程的可以个干各的,不银杏树 www.daodoc.command com=new SqlCommand(“Select * from users where username='”+t_name.text+“' and pwd='”+t_pwd.text+“'”);object obj=com.ExcuteScale();if(obj!=null){ //通过验证 } 这段代码容易被sql注入。如用户在t_name中随便输入,在t_pwd中输入1' and 1='1 就可以进入系统了。
63. 描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
可以用任意类型。格式如下: 修饰符 类型 this [类型 变量] {
}
64. 构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading
String类是final类故不可以继承
66. DataReader与Dataset有什么区别?
一个是只能向前的只读游标,一个是内存中的表。
67. 什么是虚函数?什么是抽像函数?
虚函数:可由子类继承并重写的函数。抽像函数:规定其非虚子类必须实现的函数,必须被重写
68. 在.Net中所有可序列化的类都被标记为? [serializable] 65. 是否可以继承String类? get{};Set{};a=a+b;b=a-b;a=a-b 抽象类能有具体实现,而接口只定义行为规范,不能有具体实现。一个类只能继承一个父类,但能实现多个接口 不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null Public cla 类名{}
69. <%# %> 和 <% %> 有什么区别?
<%# %>表示绑定的数据源,<% %>是服务器端代码块
70. 能用foreach遍历访问的对象需要实现什么接口或声明什么方法的类型
71. 叙述Global类中事件发生的顺序
72. out和ref的区别
都是引用传递参数,区别
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化
2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
73. 三层是指什么?为什么要有三层?
三层指的是:表示层、业务逻辑层和数据访问层。表示层:用户界面,和用户进行交互
业务逻辑层:业务逻辑主要是自定义一些业务规则,完成一些功能。数据访问层:和数据库打交道,进行数据的查询和操作
三层架构主要体现出对程序分而治之的思想,数据访问层只负责提供原始数据,并不需要业务逻辑是什么;业务逻辑层调用数据访问层提供的方法,实现一些业务逻辑,本身不需要了解数据访问层的实现;表示层直接调用业务逻辑提供的方法,把数据呈现给用户,同样,它也不需要了解业务逻辑层和数据访问层是怎么实现的。这样的好处就是降低耦合,易于程序的维护和扩展,每一层都可以由不同的团队来开发,便于分工
74. 简单工厂模式有什么作用?
工厂模式,顾名思义作用于对象的实例化(变化点在”对象创建”,封装”对象创建”)
我们一般提供一个接口,让该接口负责创建一系列”相关或者相互依赖的对象”,利用反射(Reflection)技术动态的创建实例,无需指定他们具体的类。
改变配置文件即可方便的控制对象之间的切换
75. 请编程实现一个冒泡排序的算法
int num[10] = {1,3,4,6,2,5,7,9,8,0};for(int i = 0;i
} }
76. 用户输入两个字符串str1,str2,返回字符串str1在str2中的出现索引数,如:str1(aba),str2(2dabab2)返回2,不可以用indexof和substringif(num[i]>num[j]){
} int temp = num[j];num[j] = num[i];num[i] = temp;
第一个用户第一次访问第一个页面时,会执行以下的事件
Application_Start->Application_BeginRequest->Seion_Start->Application_EndRequest IEnumerable接口或 GetEnumerator方法 方法;string a = “aba”;string b = “2dabab2”;bool bFind = false;
int index = 0;while((index + a.Length)!= b.Length){ if(b.Substring(index).StartsWith(a)){ bFind = true;// 找到内容
break;} index++;}
if(bFind){ Console.WriteLine(“索引在{0}”, index);} else { Console.WriteLine(“没有包含”);}
77. C#中的三元运算符
78. Sealed修饰符的作用
79. 委托的关键字
80. 你熟悉的开发模式有哪些
81. NET中,为什么不担心内存漏洞 垃圾回收器是用来管理应用程序的内存分配和释放的。在垃圾回收器出现以前,程序员在使用内存时需要向系统申请内存空间。有些语言,例如Visual Basic,可以自动完成向系统申请内存空间的工作。但是在诸如Visual C++的语言中要求程序员在程序代码中申请内存空间。如果程序员在使用了内存之后忘了释放内存,则会引起内存泄漏。但是有了垃圾回收器,程序员就不必关心内存中对象在离开生存期后是否被释放的问题。垃圾回收器全部自动帮你完成。
82. repeater控件的用法
83. Seion里有BUG,微软是怎么处理的 Seion有丢失的可能性,微软对于Seion有三种存放方式: Repeater没有自己的形态,需要开发人员利用模板进行设置。
Repeater支持的5种模板分别为ItemTemplate、AlternatingItemTemplate、Separator Template、HeaderTemplate、FooterTemplate 常用的开发模式有抽象工厂模式、简单工厂模式、工厂方法模式、单例模式、外观模式、代理模式、适配器模式 delegate sealed的中文意思是密封,故名思义,就是由它修饰的类或方法将不能被继承或是重写 表达式 ? 结果1(表达式为true时执行):结果2(表达式为false时执行)InProc:seion在服务器中以活动对象方式存储(aspnet_wp.exe)
StateServer: seion被序列化并保存在单独的aspnet_state.exe的内存中。StateServer能够运行在另一台服务器上
SQLServer: seion被序列化并保存在SQL Server中
84. Datalist、GridView、Repeater 的区别
85. AJAX是怎么实现的。用与不用有什么区别
86. 关于CSS的布局。怎么把一个层隐藏?
87. C#写连接代码调用存储过程 Div.style.display = “none”;AJAX实质上是几种技术的集合,包括:XHTML、CSS、DOM、XML、Javascript、XmlHttpRequest。主要原理是使用XmlHttpRequest进行异步数据提交,实现局部页面无刷新效果,增加用户体验 Repeater和DataList比较相似,都没有自己的形式,需要模板的支持
--Repeater支持ItemTemplate、AlternatingItemTemplate、SeparatorTemplate、HeaderTemplate、FooterTemplate 5种模板--DataList除了以上的5种模板,还支持SelectedItemItemplate和EditItemTemplate模板以及支持RepeatColumns(每行呈现的列GridView有自己的形态,以网格的形式输出内容,功能比Repeater和DataList强 数)和RepeatDirection(呈现方向)SqlConnection conn = new SqlConnection(“„”);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = “存储过程名”;
conn.Open();cmd.ExecuteNonQuery();
88. 简单谈谈从一个项目启动到客户验收我们所要做的工作步骤
89. struct 与cla的区别 并举例
1.struct 是值类型,cla是对象类型 2.struct 不能被继承,cla可以被继承
3.struct 默认的访问权限是public,而cla默认的访问权限是private.4.struct不能由程序员申明构造函数,即使是默认(不带参数)的构造函数,同样也不能有析构的处理部分。这是因为Struct的构造函数是由编译器自动生成的。并且Struct的用途是那些描述轻量级的对象,例如Line,Point等,并且效率比较高。
5.struct的new和cla的new是不同的。struct的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而cla则是在堆上分配一块内存然后再执行构造函数,struct的内存并不是在new的时候分配的,而是在定义的时候分配
90. 把已有的字符串反转,写个方法 public string Reverse(string str){ char[] array = str.ToCharArray();Array.Reverse(array);return new string(array);} 可行性分析、需要分析。概要设计、详细设计、编码、集成测试、部署 91. CSS规范中,每一条样式的结束符是;(分号)还是:(冒号)?样式名与样式值之间的分隔符是:(冒号)还是=(等号)?
92. 我们知道new可以调用构造函数创建一个对象,那么new还有什么别的语法吗?
93. 指出div与span的不同。
Div会换行(block块),span不会换行(inline行内)new还可以隐藏基类成员 每条样式的结束符是分号,样式名与样式值之间是冒号
SQL面试题:
1. 在表A中有数据 ID MO 1 Y 2 N
请用一个SELECT 语句写出,如果MO的值为“Y”,返回“YES”,为N返回“NO” 效果如下: ID MO 1 YES 2 NO
SELECT ID,MO=CASE
END FROM Az
2. 在表A中查询出自动增长列中31到40之间的数据(注意可能不是连续的)
3. 有一个表table中有一个自动增长字段ID,如果在存储过程中向这个表插入一条记录后,如何获得新记录的ID.(写出获取新记录ID的函数即可)CREATE FUNCTION c_currentId()RETURNS int AS BEGIN
END
select tempdb.dbo.c_currentId()as '当前C表中最新的编号'
4. having的用法, 是用来做什么的5. sql中的什么函数可以转换为时间
6. 查询数据放入一张临时表 select convert(datetime,'2000/01/01')select cast('2001/02/02' as datetime)having用来对group by 分组后的记录进行过滤。declare @lastId int select @lastId=max(cid)from c RETURN(@lastId)select * from A where id between 31 and 40 WHEN MO='Y' THEN 'YES' WHEN MO='N' THEN 'NO'
select * into #A from Test select * from #A 7. SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
INSERT INTO jobs(job_desc,min_lvl,max_lvl)VALUES('Accountant',12,125)SELECT @@IDENTITY AS 'Identity'
逻辑题目
1. 过桥问题
A过桥1分钟,B要2,C要5,D要10,怎么样才能在17分钟过完,每次最多只能过2人,每次都要有人去接送 2. 一个人 一只狗 一只猫 一条鱼 人不到时
狗会咬猫
猫会吃鱼 狗不会咬鱼 一次只能过2个
他们要同时过河~ 用UML的知识画出结构~ 可设置x岸和y岸 事件是
渡河
3. 逻辑题:有1000个苹果,要放在10个箱子里去,要怎么放,不管拿多少个苹果都可以一箱一箱拿