C#.NET笔试题收集

时间:2021-12-11 07:28:12

程序或编程题

数据库题

一、填空或简述题:

  1. c#中错误处理机制有哪些

  答:Try catch finally throw;  

  2. public/protect/private/internal修饰符的区别

  答:Public:公共的,都能访问;

    Protect:受保护的,只有该类和派生类能访问;

    Private:私有的,只有该类可以访问;

    Internal:内部的,只能在包含它的程序集中访问;

  3. 大量数据(如3000万条数据)并发处理时,有哪几种机制

  答:存储过程或事务。取得最大标识的时候同时更新,注意主键不是自增量方式。这种方法并发的时候是不会重复主键的,

    取得最大标识要有一个存储过程来获取。--我也不知道讲的什么鬼!

  4. String/StringBuilder的异同

  答:string,是一个不可变的数据类型,一旦对字符串对象进行了初始化,该字符串对象就不能改变了。修改字符串内容的方法

    和运算符实际上是创建一个新的字符串;

    stringbuilder,分配好内存,对字符串的修改就在赋予stringbuilder实例的存储单元中进行。

    示例代码:

  

1 string s1 = "a"; 2 string s2 = s1; 3 s1 += "b"; 4 // 输出结果:ab a 5 Console.WriteLine("使用string定义的变量1和2此时的值分别是:{0} {1}", s1, s2); 6 StringBuilder sb1 = new StringBuilder("a"); 7 StringBuilder sb2 = sb1; 8 sb1.Append("b"); 9 // 输出结果:ab ab 10 Console.WriteLine("使用StringBuilder定义的变量1和2此时的值分别是:{0} {1}", sb1.ToString(), sb2.ToString()); 11 Console.ReadLine();

示例:string 和 StringBuilder对比

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

(和第4题对比看)

public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}

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

  6. 解释string str=null/string str=""

  答:str=null,声明一个字符串而不分内存空间;

    str="",声明一个字符串并且分配了内存空间赋值为一个空字符串;

  7. ASP.NET页面间传递参数有哪几种方式

  答:QueryString、Session、Cookie、Application和Server.Transfer;

  简单说明:

  A. QueryString:将一个或者多个安全性不高的参数连接到目标URL的后面使用&字符隔开:

    源页面:Response.Redirect(带参数的URL)跳转;

    目标页:Request.Query[“参数名称”]取出参数;

  B. Session:消耗服务器资源,存放在服务器端,针对单个用户,全局;

  C. Cookie:存放在客户端:

    源页面:HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");

        Response.Cookies.Add(cookie);

    目标页:string myName1Value = Request.Cookies[ "myCookie" ].Value;

  D.Application:适用于所有用户,全局:

    源页面:Application["name"] = Label1.Text;

    目标页:string name;

        Application.Lock();

        name = Application["name"].ToString();

        Application.UnLock();

  E. Server.Transfer:Server.Transfer是从当前的ASPX页面转到新的ASPX页面,服务器端执行新页并输出,在新页面中通过Context.Handler来获得前一个页面传递的各种数据类型的值、表单数据、QueryString.由于重定向完全在服务器端完成,所以客户端浏览器中的URL地址是不会改变的。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。

    源页面:public string Name

        {

          get{ return Label1.Text;}

        }

        private void Button1_Click(object sender, System.EventArgs e)

        {

          Server.Transfer("b.aspx");

        }

    目标页:a newWeb; //实例a窗体

        newWeb = (source)Context.Handler;

        string name;

        name = newWeb.Name; 

  8. 解释重载/覆盖: