博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

net interview problem

Posted on 2010-03-06 11:27  Learn more  阅读(185)  评论(0编辑  收藏  举报
1.C#中的垃圾回收机制是怎样的?
   垃圾回收器是用来管理应用程序的内存分配和释放的。当一个应用程序在运行的时候,垃圾回收器设置了一个托管堆。每次当开发人员使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。新创建的对象被放在上次创建的对象之后。垃圾回收器保存了一个指针,该指针总是指向托管堆中最后一个对象之后的内存空间。当新的对象被产生时,运行库就知道应该将新的对象放在内存的什么地方。当垃圾回收器的指针指向托管堆以外的内存空间时,就需要回收内存中的垃圾了。在这个过程中,垃圾回收器首先假设在托管堆中所有的对象都需要被回收。然后它在托管堆中寻找被根对象引用的对象(根对象就是全局,静态或处于活动中的局部变量以及寄存器指向的对象),找到后将它们加入一个有效对象的列表中,并在已经搜索过的对象中寻找是否有对象被新加入的有效对象引用。直到垃圾回收器检查完所有的对象后,就有一份根对象和根对象直接或间接引用了的对象的列表,而其它没有在表中的对象就被从内存中回收。___更详细的信息请参考:http://www.linuxmine.com/48694.html
 
2. 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
protected void Page_Load(object sender, EventArgs e)
    {
        foreach (Control ctl in Page.Controls[0].Controls)
        {
            if (ctl.GetType().Name == "TextBox")
            {
                TextBox tb = new TextBox();
                tb = (TextBox)this.FindControl(ctl.ID);
                tb.Text = "";               
            }
        }
    }
 
3.请编程实现一个冒泡排序算法
        int[] i = new int[5] {5,3,4,2,1};
        for(int j = 0; j < i.Length-1; j++)
        {
            for (int k = 0; k < i.Length-1; k++)
            {
                int a;
                if (i[k] > i[k + 1])
                {
                    a = i[k];
                    i[k] = i[k + 1];
                    i[k+1]=a;               
                }
            }
        }
 
4.什么是Application Pool?
It is the new features in IIS 6.0. An Application Pool can contain one or more applications and allows us to configure a level of isolation between different Web applications. For example, if you want to isolate all the Web applications running in the same computer, you can do this by creating a separate application pool for every Web application and placing them in their corresponding application pool. Because each application pool runs in its own worker process, errors in one application pool will not affect the applications running in other application pools. Deploying applications in application pools is a primary advantage of running IIS 6.0 in worker process isolation mode because you can customize the application pools to achieve the degree of application isolation that you need.____  http://www.developer.com/net/asp/article.php/2245511 需要的话,大家多多支持,我可以抓时间翻译全文,呵呵。
 
5.微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
  以前下过一个Enterprise Library 2006,但是没具体应用过,我知道和熟悉的就是Data Access Application Block 和一个关于日志的Application Block了。下面是所有的:数据访问应用程序块;配置管理应用程序块;安全应用程序库;日志和监测应用程序块;缓存应用程序块;异常处理应用程序块;加密应用程序块。详见:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/EntLib.aspx
 
6.您对Web Service的体会?——答案节选自我的《人工智能》课程的结课论文
    Web Service是由URI(统一资源标识符)标识的软件应用程序,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。
World Wide Web Consortium----W3C组织
WSDL(Web Service Description Language,Web Service描述语言)
Common Object Request Broker Architecture,CORBA通用对象请求代理体系结构Extensible Markup Language,XML 可扩展标记语言
SOAP Simple Object Access Protocol,SOAP简单对象访问协议
Universal Description Discovery and Integration,UDDI 通用描述、发现和集成
Service Oriented Architecture, SOA 面向Service的架构
•Service提供者。从企业的角度看,这是Service的所有者。从体系结构的角度看,这是托管访问Service的平台。
•Service请求者。从企业的角度看,这是要求满足特定功能的企业。从体系结构的角度看,这是寻找并调用Service,或启动与Service的交互的应用程序。Service请求者角色可以由浏览器来担当,由人或无用户界面的程序(例如,另外一个 Web Service)来控制它。
•Service注册中心。这是可搜索的Service描述注册中心,Service提供者在此发布他们的Service描述。
 
7.CTS、CLS和CLR分别作何解释?
  参见我的另一篇blog:http://august.blog.51cto.com/blog/59588/7018
 
8.什么是应用程序域?(C# 编程指南)
应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。
应用程序域通常由运行库宿主创建和操作。有时,您可能希望应用程序以编程方式与应用程序域交互,例如想在不停止应用程序运行的情况下卸载某个组件时。
应用程序域使应用程序以及应用程序的数据彼此分离,有助于提高安全性。单个进程可以运行多个应用程序域,并具有在单独进程中所存在的隔离级别。在单个进程中运行多个应用程序提高了服务器伸缩性。
 
1、以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。
<html>
   <%
       int subtract(int num1, int num2) {
          return num1-num2;
       }
   %>
   <body>
      <%
         int number = 100;
         while (number > 0) {
            Response.Write("value: " + number + "<br/>");
            number = subtract(number, 1);
         }
      %>
   </body>
</html>
未通过编译:CS1519: 类、结构或接口成员声明中的标记“while”无效——为什么是这个
                    错误呢?不清楚了。
改正:将subtract放在<script runat="server"></script>之间。
<script runat="server">
    int subtract(int num1, int num2)
    {
        return num1 - num2;
    }
</script>
2、float f=-123.567F;
   int i=(int)f;   i的值现在是_____?
   答案:-123  (float f=123.567F时,是123)
3、下面的代码中有什么错误吗?_______
     using System;
     class A
     {
          public virtual void F(){
              Console.WriteLine("A.F");
           }
      }
      abstract class B:A
       {
           public abstract override void F();
       }
   ——编译通过
4、当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_____(可以 or 不可以)从T派生出新的类,____(可以 or 不可以)直接创建T的任何实例。(答案:均受保护级别限制,不可以)
5、下面这段代码有错误么?
    switch (i){
    case():
        CaseZero();
        break;
    case 1:
        CaseOne();
        break;
    case 2:
    default:
        CaseTwo();
        break;
   }
——原题目的default那行是:“dufault;”,我想应该是笔误吧,改为default:后无错,当i为2和其他值时,执行CaseTwo()。
6、在下面的例子里
     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时,先new父类对象,然后new自身私有成员,当调用b.PrintFields()时,则输出x=1,y=-1)
7、下面的例子中
     using System;
     class A
     {
          public static int X;
          static A(){
               X=B.Y+1;
          }
      }
      class B
      {
           public static int Y=A.X+1;
           static B(){}
           static void Main(){
                Console.WriteLine("X={0},Y={1}",A.X,B.Y);
           }
       }
产生的输出结果是什么? X=1,Y=2
8、下面这段代码输出什么?为什么?
     int i=5;
     int j=5;
     if (Object.ReferenceEquals(i,j))
          Console.WriteLine("Equal");
     else
          Console.WriteLine("Not Equal");
答案:Not Equal——进行了装箱操作。