欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

C#常见面试题汇总(二)

创建时间:2013年03月25日 14:56  阅读次数:(39008)
分享到:
1.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
public static void Main()
{
    Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
    if (i <= 0)
        return 0;
    else if (i <= 2)
        return 1;
    else
        return Foo(i - 1) + Foo(i - 2);

注:以上实际为斐波那契数列

2. C#中的委托是什么?事件是不是一种委托?
答:委托封装了函数指针的集合,它可以指向一组函数。
事件也是委托,是一种特殊的委托。
 
3.请编程实现一个冒泡排序算法 
C#排序算法之-冒泡排序

4.在下面的例子里,当使用new B()创建B的实例时,产生什么输出?
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);
    }
}

答:X=1,Y=0
当使用New创建B的实例时,因为B继承了A类,A的构造函数首先会被运行,但应当注意的是,虽然运行的是A的构造函数,但在A的构造函数中调用的函数首先是在B类中查找,因为PrintFields已被重写,所以最终运行B类中的PrintFields函数。
 
5.CTS、CLS、CLR分别作何解释?
答:CTS:Common Type System 通用系统类型。
CLS:Common Language Specification 通用语言规范。
CLR:Common Language Runtime 公共语言运行库。
 
6.net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
 
7.求以下表达式的值,写出您想到的一种或几种实现方法: 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 -= i ;
}
}
System.Console.WriteLine(sum.ToString());
System.Console.ReadLine();

其实还有一个很简单的方式,上面的表达式,把它分成1-2、3-4、5-6……可以看出,如果m是偶数,那么结果就是m/2*(-1),如果m是奇数,结果就是m-m/2
 
8.请编程遍历页面上所有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);
 }
 } 
}
 
9.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
class A
{
    public void Test(int i)
    {
        lock (this)
        {
            if (i > 10)
            {
                i--;
                Test(i);
            }
        }
}
}

答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
 
10.String s = new String("xyz");创建了几个String Object?
答:两个对象,一个是“xyx”字符串常量,一个是值为“xyx”的引用对像s。
 
11.String s=””;和string s=string.Empty;有什么区别,哪一种方式更好?
String s=””;先分配一块内存存放””文字常量,s引用该内存,string s=string.Empty;s引用string类中的静态变量地址(静态变量开始会被初始化,所以无论引用多少次,只会分配一次内存),两者比较,后者少了一次内存分配,所以效率更高。
 
12.构造函数是否可被override?
答:不能。 
 
13.是否可以继承String类?
答:string 是密封类,所以不能被继承。
 
14.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
 
15.进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。
 
16.堆和栈的区别?
答:栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。
 
17.成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。
 
18.ASP。NET与ASP相比,主要有哪些进步?
答:asp解释型,aspx编译型,性能提高,可以跟美工的工作分开进行,更有利于团队开发。

19.什么是虚函数?什么是抽像函数?
答:虚函数:可由子类继承并重写的函数。抽像函数:规定其非虚子类必须实现的函数,必须被重写。 
 
20.什么是ASP.net中的用户控件?
答:用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。
 
21.列举一下你所了解的XML技术及其应用
答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config

22.ADO.net中常用的对象有哪些?分别描述一下。
答:Connection 数据库连接对像
Command 数据库命令
DataReader 数据读取器
DataAdapterf 数据适配器,用于填充DataSet
DataSet 数据集
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论1条
  • #1楼  评论人:叶子  评论时间:2013-4-3 9:33:11
  • 今天面试时就做到第一题了
发表评论:
留言人:
内  容:
请输入问题 0+45=? 的结果(结果是:45)
结  果: