随风而行

^o^ 格言:相信没有做不到的事情,只有想不到的事情.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 面试题1

Posted on 2012-08-22 14:11  随风而行  阅读(401)  评论(0编辑  收藏  举报

1.有表A,结构如下:   
  A:   p_ID     p_Num     s_id   
        1             10           01   
        1             12           02   
        2             8             01   
        3             11           01   
        3             8             03   
  其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数据合并,合并后的数据为:   
  p_ID     s1_id     s2_id     s3_id   
  1           10             12             0   
  2             8             0               0   
  3             11             0             8   
  其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。  

SELECT   P_ID,   S1_NUM   =   SUM(CASE   S_ID   WHEN   '01'   THEN   P_NUM   ELSE   0   END),     
  S2_NUM   =   SUM(CASE   S_ID   WHEN   '02'   THEN   P_NUM   ELSE   0   END),   
  S3_NUM   =   SUM(CASE   S_ID   WHEN   '03'   THEN   P_NUM   ELSE   0   END)   
  FROM   TEST3_TABLE   
  GROUP   BY   P_ID

2.叙述Page页面的生命周期。(即写出Page几个主要的事件运行顺序)   
  对象初始化   OnInit   
  加载视图状态数据   LoadViewState   
  处理回传数据   LoadPostData   
  对象加载   Load   ->   OnLoad   
  激发RaisePostDataChanged   事件   
  处理客户端回传事件   RaisePostBackEvent   
  对象预呈现   OnPreRender   
  保存视图状态   SaveViewState   
  呈现HTML   Render   
  释放   Dispose   
    
  3.有ab.aspx页面,在codebehind里动态在页面里创建一checkbox控件,创建后用户在页面选中该checkbox,在codebehind里如何取该checkbox的值?(即是选中还是未选中状态)   
  假设窗体上有个Panel控件   
  CheckBox   cb1   =   new   CheckBox();   
  cb1.ID   =   "CheckBox1";   
  cb1.Text   =   "Test";   
    
  Panel1.Controls.Add(cb1);   
  bool   checkBoxChecked   =   ((CheckBox)Panel1.FindControl("CheckBox1")).Checked;   
    
  4.Session跟Cookie有什么关系?   假如IE禁止使用cookie,那Session还有用吗?   
  当用户浏览站点时,服务器为该用户建立唯一的Session,Session的生命周期一直到用户访问结束。ASP.NET   会为每个Session维护会话状态信息,应用程序可在会话状态信息中存储用户特定信息。   
  ASP.NET   必须跟踪每个用户的Session   ID,以便可以将用户映射到服务器上的会话状态信息。默认情况下,ASP.NET   使用非永久性   Cookie   来存储会话状态。   
  如果用户已在IE上禁用   Cookie,会话状态信息便无法存储在   Cookie   中。   
  ASP.NET   提供了无   Cookie   会话作为替代。可以将应用程序配置为不将会话   ID   存储在   Cookie   中,而存储在站点中页面的   URL   中。   
    
  5.   c#中的关键字this,在class中和在struck中如何使用? 
    
  6,   如何理解装箱、坼箱操作?   运用此操作时对系统性能有什么影响?   
  装箱   ->   从值类型转换为引用类型   坼箱反之   
  创建引用类型会比创建值类型的系统开销要大得多,因为它在   
  堆上创建了对象,消耗了内存。而值类型却只把值保存在了线程堆栈上。   
  所以运用此操作时对系统性能有什么影响就不用说了吧?   
    
  7.   XML中的XmlDocument跟   XmlReader有什么区别?   
  XmlDocument用于读取、操作和修改   XML   文档。XmlReader   类也读取   XML,但它提供非缓存的只进、只读访问。这意味着使用   XmlReader   无法编辑属性值或元素内容,或无法插入和移除节点   
    
  8.   接口跟抽象有什么异同?   你在平时项目设计过程中何时使用接口?   何时使用抽象类?   
  接口只能包含方法   属性   索引器   事件四种成员   
  抽象类的主要目的是用于继承,表达一种   is-a   什么是什么的关系   
  而接口传达的是has-abilities   具有某种能力   的概念   
  除非是非常强烈的is-a关系,才用抽象类.其它的情况都优先考虑使用接口.   

9.   public   void   Check(string   s)   
        {   
              .....   
        }   
    
        public   void   Check(ref   string   s)   
        {   
            .....   
        }   
    
        Public   void   Check(out   string   s)   
        {   
            .....   
        }   
  上面的三个方法传入的参数有什么不同?另外请说明string是什么数据类型(值类型?引用类型?)。  
 
在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

注:在C#中,方法的参数传递有四种类型:传值(by value),传址(by reference),输出参数(by output),数组参数(by array)。传值参数无需额外的修饰符,传址参数需要修饰符ref,输出参数需要修饰符out,数组参数需要修饰符params。传值参数在方法调用过程中如果改变了参数的值,那么传入方法的参数在方法调用完成以后并不因此而改变,而是保留原来传入时的值。传址参数恰恰相反,如果方法调用过程改变了参数的值,那么传入方法的参数在调用完成以后也随之改变。实际上从名称上我们可以清楚地看出两者的含义--传值参数传递的是调用参数的一份拷贝,而传址参数传递的是调用参数的内存地址,该参数在方法内外指向的是同一个存储位置。

  10.   如图,如何找出他们的交叉区域。请写出你的实现思路。   
          |-------|   
          |               |   
          |               |   
          |         |--|----|   
                    |     |         |   
          |         |     |         |   
          |----|--|         |   
                    |-------|