.net面试题汇总(二)
1、什么是SOAP,有哪些应用。
答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看
2、 概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。
答 远程逻辑调用,remoing接口只能用在.net中
3、 简述 private、 protected、 public、 internal 修饰符的访问权限。
答 private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
4、列举ASP.NET 页面之间传递值的几种方式。
答. 1.使用QueryString, 源页面 string url; url="anotherwebform.aspx?name=" + TextBox1.Text Response.Redirect(url); 目标页面 Label1.Text=Request.QueryString["name"];
2.使用Session变量 源页面 Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text; Server.Transfer("anotherwebform.aspx"); 目标页面 Label1.Text=Session["name"].ToString(); Label2.Text=Session["email"].ToString(); Session.Remove("name"); Session.Remove("email");
3.使用Server.Transfer 源页面代码: public string Name { get { return TextBox1.Text; } } //然后调用Server.Transfer方法 private void Button1_Click (object sender, System.EventArgs e) { Server.Transfer("anotherwebform.aspx"); } 目标页面代码: private void Page_Load (object sender, System.EventArgs e) { WebForm1 wf1; wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; }
5、一列数的规则如下: 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);
}
}
6、override与重载的区别
答: override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。
6、请编程遍历页面上所有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 - 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 ;
}
}
}
9、描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。
10、net中读写数据库需要用到那些类?他们的作用?
答:DataSet:数据存储器。
DataCommand:执行语句命令。
DataAdapter:数据的集合,用于填充。
11、ASP.net的身份验证方式有哪些?分别是什么原理?
答:Windwos(默认)用IIS...
From(窗体)用帐户
Passport(密钥)
12、在.net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)
13、net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置
104、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
} } }
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
16、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP穿透防火墙。Remoting可以利用TCP/IP,二进制传送提高效率
17、用C#实现以下功能 a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
答 :List L=new List();
Random random = new Random();
for (int i = 1; i <= 100; i++)
{
if (L.IndexOf(i) < 0)
{
L.Add(random.Next(1,100));
} }
b 对上面生成的数组排序,需要支持升序、降序两种顺序
答 L.Reverse(L); L.Sort(L);
18、请说明.net中的错误处理机制,并举例
答 异常是从 Exception 类类继承的对象。
异常从发生问题的代码区域引发,然后沿堆栈向上传递,直到应用程序处理它或程序终止。
try { //执行代码,不确定是否会出错 }
catch { //出错处理 }
finally { //无论怎样,都要执行 }
19、请说出强名的含义
答垃圾回收的原理是根据是否空引用,和该数据类型占用内存来判断该收回多少内存.强类型说白就是必须要有个数据类型.
20、请列出c#中几种循环的方法,并指出他们的不同
答 FOR WHILE foreach do while
21、请指出GAC的含义
答 全局访问缓存
22、SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
答 INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125)
23、什么是WEB控件?使用WEB控件有那些优势?
答 web控件就是可以在服务器执行的控件,优势在于可以回传数据,带有事件驱动
24、 请解释ASP。NET中以什么方式进行数据验证?
答 .net中提供了几个数据验证控件,可以在服务器端或者客户端进行验证。
25、请谈谈对正则表达式的看法?
答: 主要用在字符串的匹配上面,与具体的语言环境无关。
26、 ASP。NET中共有几种类型的控件?各有什么区别?
答 Html 控件 传统的html标记
Web 控件 可以回传数据,事件驱动
自定义 控件 在原有控件的基础上增加功能
复合控件 多个子控件复合成一个新的控件
27、 WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
答 通过实现IPostBack这个接口来执行事件。自动回传就是AutoPostBack,使用自动回传可以监视客户端变化情况并将这种改变返回到服务器端
28、 WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
答 能,服务器端控件在html中表现形式还是html标记,所以可以执行客户端事件,有多种方式:
1、control.Attributes["onclick"]="...;";
2、<script for="controlName" event="onclick"></script>
29、什么是viewstate,能否禁用?是否所用控件都可以禁用?
答 可以全部禁用,viewstate就是hidden input,只不过加上了微软的编码方式记录控件的状态
30、 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
答 可能就是事件没有关联,或者根本就没有写读取代码。 解决 检查代码, 设断点调试
31、请解释一个WEB页面中代码执行次序。
答 参看.cs 知道最先执行OnInit(); 然后到Page_Load,最后到具体的执行事件。
32、请解释什么是上下文对象,在什么情况下要使用上下文对象
答 HttpContext, 在类中调用的时候需要用到HttpContext
33、请解释转发与跳转的区别?
答 Transfer 是转发 包括HttpHandler对象
Redirect 就是跳转 Server.Transfer(ASP 3.0 以上) 和 Response.Redirect 在以前的 ASP 中就存在了,Page.Navigate 是 ASP.NET Beta 1 提供的新功能,它们之间的区别在于:
1、 Server.Transfer - 用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件(如:request, session 等)的保存的信息不变,因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程中,浏览器的 URL 栏不变。
2、Response.Redirect - 发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面 B,页面 B 将无法访问页面 A 中 Form 提交的数据。
3、Page.Navigate - Page.Navigate 实现的功能和 Response.Redirect 差不多,它实际上包括三个步骤:首先调用 Response.Redirect,其次依次卸载所有的控件,最后调用 Response.End。
34、 请解释ASP。NET中button linkbutton imagebutton 及hyperlink这四个控件之间的功别
答 button imagebutton 将数据传递回服务器 hyperlinK 页面之间的导航 linkbutton主要用于将数据保存到服务器或访问服务器上的数据
35、请解释一下。NET多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那种方式进行。
答 这个传递方式不定,很多都是传递DataSet, XML也可以
36、如果出现ASP。NET中的事件不能触发可能由于什么原因造成?
答 事件丢失,特别是使用vss的时候最容易造成这种情况,原因不明
37、如果需要在datagride控件中的某一列中添加下拉列表框并绑定数据怎么解决?
答 使用模板列来添加dropdownlist,绑定数据使用代码前置的方式
38、请解释asp.net中的数据绑定与传统数据绑定有什么区别?
答 更灵活 更方便
39、请解释.net采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别。
答 以图示方式解释。
40、请解释接口的显式实现有什么意义?
答 规定强制执行,保持一致
41、 什么情况用HTML控件,什么情况用WEB控件,并比较两者差别
答 客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用web controls
42、用Singleton如何写设计模式
答:static属性里面new ,构造函数private
43、什么是Application Pool?
答:Web应用,类似Thread Pool,提高并发性能。
44、什么是虚函数?什么是抽象函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。
45、什么是XML?
答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。
46、什么是Web Service?UDDI?
答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
47、什么是ASP.net中的用户控件?
答:用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。
48、C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质
49、XML 与 HTML 的主要区别
答:1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
50、.在Asp.net中所有的自定义用户控件都必须继承自________?
答:Control。
51、在.Net中所有可序列化的类都被标记为_____?
答:[serializable]
52、当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以 or 不可以)从T派生出新的类,不可以____(可以 or 不可以)直接创建T的任何实例。
答:不可以,不可以。
53、 C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:attribute:自定义属性的基类;property :类中的属性
44、C#可否对内存进行直接的操作?
答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员 不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法
45、大概描述一下ASP。NET服务器控件的生命周期
答:初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置卸载 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 答:不能,可以实现接口
46.Static Nested Class 和 Inner Class的不同,说得越多越好
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
47.,&和&&的区别。
&是位运算符,表示按位与运算,
&&是逻辑运算符,表示逻辑与(and).
48.HashMap和Hashtable的区别。
答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.
49.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;(可以正确编译)