设为首页 加入收藏

TOP

新编C#面试题(二)
2014-11-24 01:37:50 来源: 作者: 【 】 浏览:49
Tags:新编 试题
f (i <= 0)


return 0;


else if( i <= 2)


return 1;


else


return Foo(i -1) + Foo(i - 2);


}


}


15. C#中的委托是什么?事件是不是一种委托?


答 :委托封装了函数指针的集合,它可以指向一组函数。


事件也是委托,是一种特殊的委托。


16. 请编程实现一个冒泡排序算法?


答:


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 ;


}


}


}


17. 在下面的例子里


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


当使用New创建B的实例时,因为B继承了A类,A的构造函数首先会被运行,但应当注意的是,虽然运行的是A的构造函数,但在A的构造函数中调用的函数首先是在B类中查找,因为PrintFields已被重写,所以最终运行B类中的PrintFields函数。


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


答:


CTS:Common Type System 通用系统类型。


CLS:Common Language Specification 通用语言规范。


CLR:Common Language Runtime 公共语言运行库。


20. net Remoting 的工作原理是什么?


答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。


21. 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m


答:


int m = Convert.ToInt32(this.TextBox1.Text) ;


int sum = 0 ;


for (int i = 0 ; i < m + 1 ; i++)


{


if((i%2) == 1)


{


sum += i ;


}


Else


{


sum = Sum - I ;


}


}


System.Console.WriteLine(sum.ToString());


System.Console.ReadLine() ;


其实还有一个很简单的方式,上面的表达式,把它分成1-2、3-4、5-6……可以看出,如果m是偶数,那么结果就是m/2*(-1),如果m是奇数,结果就是m-m/2


22. 列举ASP.NET 页面之间传递值的几种方式。


答. 1).使用QueryString, 如.... id=1; response. Redirect()....


2).使用Session变量


3).使用Server.Transfer


4).Application


5).


6).数据库


7).ViewStat


8).cookie


23. 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?


答:在页面中调用下面的函数,SetTextBox(this);


public void SetTextBox(Control ctrl)


{


if (ctrl is TextBox)


{


(ctrl as TextBox).Text=string.Empty;


}


else


{


foreach (Control child in ctrl.Controls)


{


SetTextBox(ctrl);


}


}


}


24. 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁 并简要说明理由。


Class A


{


public void Test(int i)


{


lock(this)


{


if (i>10)


{


i–;


Test(i);


}


}


}


}


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


25. 简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。


答:WebSevice使用HTTP协议,因此可以穿透防火墙。而Remoting使用TCP/IP,二进制传送提高效率。


remoting是.net中用来跨越machine, process, appdomain进行方法调用的技术,对于三层结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM;Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型


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


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


28. String s = new String(“xyz”);创建了几个String Object


答:两个对象,一个是“xyx”字符串常量,一个是值为“xyx”的引用对像s。


29. String s=””;和string s=string.Empty;有什么区别,哪一种方式更好?


String s=””;先分配一块内存存放””文字常量,s引用该内存,string s=string.Empty;s引用string类中的静态变量地址(静态变量开始会被初始化,所以无论引用多少次,只会分配一次内存),两者比较,后者少了一次内存分配,所以效率更高。


30. 构造函数是否可被override


答:不能。


31. 是否可以继承String类


答:string 是密封类,所以不能被继承。


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


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


33. 进程和线程的区别?


答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。


34. 堆和栈的区别?


答:栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小


35. 成员变量和成员函数前加static的作用?


答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。


ASP。NET与ASP相比,主要有哪些进步?


答:asp解释型,aspx编译型,性能提高,可以跟美工的工作分开进行,更有利于团队开发。


36. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?


using:


A. 引入名称空间


B. 放入实现了IDisposable接口的对象

首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Interview questions for C# deve.. 下一篇C#面试常见问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: