Dotnet面试题

本文详细介绍了SQL查询技巧,包括复杂的数据聚合操作,以及.NET框架中的关键概念,如页面生命周期、控件状态获取、会话管理等。同时,还探讨了C#中的this关键字、装箱拆箱操作、XML处理、接口与抽象类的区别等。
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.   如图,如何找出他们的交叉区域。请写出你的实现思路。  
          |-------|  
          |               |  
          |               |  
          |         |--|----|  
                    |     |         |  
          |         |     |         |  
          |----|--|         |  
                    |-------|

转载于:https://www.cnblogs.com/anny-1980/articles/1100911.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值