亚洲日本精品宅男,在线激情小视频第一页,精品国产美女福到在线不卡,自在自线亚洲а∨天堂在线

      當(dāng)前位置:好文網(wǎng)>職場指南>筆試>net筆試題

      net筆試題

      時間:2023-01-20 07:02:18 筆試 我要投稿
      • 相關(guān)推薦

      net筆試題

      1. 填空: (1)面向?qū)ο蟮恼Z言具有________性、_________性、________性。
      (2)能用foreach遍歷訪問的對象需要實現(xiàn) ________________接口或聲明________________方法的類型。
      (3)列舉ADO.net中的五個主要對象_______________、_____________、_______________、_______________、_________________。

      2. 不定項選擇:
      (1) 以下敘述正確的是:
      A. 接口中可以有虛方法。 B. 一個類可以實現(xiàn)多個接口。
      C. 接口不能被實例化。 D. 接口中可以包含已實現(xiàn)的方法。
      (2) 從數(shù)據(jù)庫讀取記錄,你可能用到的方法有:
      A. ExecuteNonQuery B. ExecuteScalar
      C. Fill D. ExecuteReader
      3. 簡述 private、 protected、 public、 internal 修飾符的訪問權(quán)限。

      4. 寫出一條Sql語句: 取出表A中第31到第40記錄(SQLServer, 以自動增長的ID作為主鍵,注意:ID可能不是連續(xù)的。)

      5 .列舉ASp.NET 頁面之間傳遞值的幾種方式。

      6. 寫出程序的輸出結(jié)果
      class Class1{
      private string str = \"Class1.str\";
      private int i = 0;
      static void StringConvert(string str){
      str = \"string being converted.\";
      }
      static void StringConvert(Class1 c){
      c.str = \"string being converted.\";
      }
      static void Add(int i){
      i++;
      }
      static void AddWithRef(ref int i){
      i++;
      }
      static void Main(){
      int i1 = 10;
      int i2 = 20;
      string str = \"str\";
      Class1 c = new Class1();
      Add(i1);
      AddWithRef(ref i2);
      Add(c.i);
      StringConvert(str);
      StringConvert(c);
      Console.WriteLine(i1);
      Console.WriteLine(i2);
      Console.WriteLine(c.i);
      Console.WriteLine(str);
      Console.WriteLine(c.str);
      }
      }

      7.寫出程序的輸出結(jié)果
      public abstract class A
      {
      public A()
      {
      Console.WriteLine(\A\);
      }
      public virtual void Fun()
      {
      Console.WriteLine(\"A.Fun()\");
      }
      }
      public class B: A
      {
      public B()
      {
      Console.WriteLine(\B\);
      }
      public new void Fun()
      {
      Console.WriteLine(\"B.Fun()\");
      }
      public static void Main()
      {
      A a = new B();
      a.Fun();
      }
      }

      8. 寫出程序的輸出結(jié)果:
      public class A
      {
      public virtual void Fun1(int i)
      {
      Console.WriteLine(i);
      }
      public void Fun2(A a)
      {
      a.Fun1(1);
      Fun1(5);
      }
      }

      public class B : A
      {
      public override void Fun1(int i)
      {
      base.Fun1 (i + 1);
      }
      public static void Main()
      {
      B b = new B();
      A a = new A();
      a.Fun2(b);
      b.Fun2(a);
      }
      }

      9. 一列數(shù)的規(guī)則如下: 1、1、2、3、5、8、13、21、34......
      求第30位數(shù)是多少, 用遞歸算法實現(xiàn)。(C#語言)

      10.程序設(shè)計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)
      要求:1.要有聯(lián)動性,老鼠和主人的行為是被動的。
      2.考慮可擴展性,貓的叫聲可能引起其他聯(lián)動效應(yīng)。

      參考答案:
      1. (1)繼承性、封裝性、多態(tài)性。(考基本概念)
      (2)IEnumerable 、 GetEnumerator (對foreach機制的理解,本來不想出這題的,湊分)
      (3)... (送分題, 對ADO.net的了解)
      評分標(biāo)準(zhǔn):一空1分,滿分10分。

      2. (1) B、C (考對接口的理解)(2)B、C、D (考查對ADO.net的熟練程度)
      評分標(biāo)準(zhǔn): 一題5分,不選或者錯選均不得分。漏選得2分。滿分10分。

      3. . private : 私有成員, 在類的內(nèi)部才可以訪問。
      protected : 保護成員,該類內(nèi)部和繼承類中可以訪問。
      public : 公共成員,完全公開,沒有訪問限制。
      internal: 在同一命名空間內(nèi)可以訪問。
      評分標(biāo)準(zhǔn):答對1題2分,2題5分,3題7分。全對10分。 (送分題)

      4.解1:select top 10 * from A where id not in (select top 30 id from A)
      解2:select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
      評分標(biāo)準(zhǔn): 寫對即10分。(答案不唯一,datagrid 分頁可能需要用到)

      5.1.使用QueryString,如....?id=1; response. Redirect()....
      2.使用Session變量
      3.使用Server.Transfer
      ....等等
      評分標(biāo)準(zhǔn): 答對1點得3分, 兩點7分, 3點10分。

      6.(考查值引用和對象引用)
      10
      21
      0
      str
      string being converted.
      評分標(biāo)準(zhǔn):答對一點得2分,滿分10分。

      7.A
      B
      A.Fun()
      評分標(biāo)準(zhǔn): 寫出A.B 得5分,寫出A.Fun()得5分,滿分10分。
      (考查在繼承類中構(gòu)造函數(shù), 以及new 方法, )


      8.2
      5
      1
      6
      評分標(biāo)準(zhǔn): 答對一點得2分,兩點得5分,3點得7分。全對得10分。
      (一些人做這題,頭都暈了.... ^_^ )

      9.
      public class MainClass
      {
      public static void Main()
      {
      Console.WriteLine(Foo(30));
      }
      public static int Foo(int i)
      {
      if (i <= 0)
      return 0;
      else if(i > 0 && i <= 2)
      return 1;
      else return Foo(i -1) + Foo(i - 2);
      }
      }
      評分標(biāo)準(zhǔn): 寫出return Foo(i -1) + Foo(i - 2); 得5分。
      寫出if(i > 0 && i <= 2) return 1; 得5分。
      方法參數(shù)過多需要扣分(扣除分數(shù) = 參數(shù)個數(shù) - 1)
      不用遞歸算法扣5分
      (遞歸算法在樹結(jié)構(gòu)建立等方面比較常用)

      10
      要點:1. 聯(lián)動效果,運行代碼只要執(zhí)行Cat.Cryed()方法。2. 對老鼠和主人進行抽象
      評分標(biāo)準(zhǔn): <1>.構(gòu)造出Cat、Mouse、Master三個類,并能使程序運行(2分)
      <2>從Mouse和Master中提取抽象(5分)
      <3>聯(lián)動效應(yīng),只要執(zhí)行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。(3分)

      public interface Observer
      {
      void Response(); //觀察者的響應(yīng),如是老鼠見到貓的反映
      }
      public interface Subject
      {
      void AimAt(Observer obs);//針對哪些觀察者,這里指貓的要撲捉的對象---老鼠
      }
      public class Mouse : Observer
      {
      private string name;
      public Mouse(string name, Subject subj)
      {
      this.name = name;
      subj.AimAt(this);
      }

      public void Response()
      {
      Console.WriteLine(name + \" attempt to escape!\");
      }
      }
      public class Master : Observer
      {
      public Master(Subject subj)
      {
      subj.AimAt(this);
      }

      public void Response()
      {
      Console.WriteLine(\"Host waken!\");
      }
      }

      public class Cat : Subject
      {
      private ArrayList observers;
      public Cat()
      {
      this.observers = new ArrayList();
      }
      public void AimAt(Observer obs)
      {
      this.observers.Add(obs);
      }
      public void Cry()
      {
      Console.WriteLine(\"Cat cryed!\");
      foreach (Observer obs in this.observers)
      {
      obs.Response();
      }
      }
      }
      class MainClass
      {
      static void Main(string[] args)
      {
      Cat cat = new Cat();
      Mouse mouse1 = new Mouse(\"mouse1\", cat);
      Mouse mouse2 = new Mouse(\"mouse2\", cat);
      Master master = new Master(cat);
      cat.Cry();
      }
      }

      //---------------------------------------------------------------------------------------------
      設(shè)計方法二: 使用event -- delegate設(shè)計..
      public delegate void SubEventHandler();
      public abstract class Subject
      {
      public event SubEventHandler SubEvent;
      protected void FireAway()
      {
      if (this.SubEvent != null)
      this.SubEvent();
      }
      }
      public class Cat : Subject
      {
      public void Cry()
      {
      Console.WriteLine(\"cat cryed.\");
      this.FireAway();
      }
      }
      public abstract class Observer
      {
      public Observer(Subject sub)
      {
      sub.SubEvent += new SubEventHandler(Response);
      }
      public abstract void Response();
      }
      public class Mouse : Observer
      {
      private string name;
      public Mouse(string name, Subject sub) : base(sub)
      {
      this.name = name;
      }
      public override void Response()
      {
      Console.WriteLine(name + \" attempt to escape!\");
      }
      }
      public class Master : Observer
      {
      public Master(Subject sub) : base(sub){}
      public override void Response()
      {
      Console.WriteLine(\"host waken\");
      }
      }
      class Class1
      {
      static void Main(string[] args)
      {
      Cat cat = new Cat();
      Mouse mouse1 = new Mouse(\"mouse1\", cat);
      Mouse mouse2 = new Mouse(\"mouse2\", cat);
      Master master = new Master(cat);
      cat.Cry();
      }
      }

      1. C#中 property 與 attribute的區(qū)別,他們各有什么用處,這種機制的好處在哪里?
      2. 講一講你理解的web service,在dot net framework中,怎么很好的結(jié)合xml?(講概念就行了)
      3. C#, Java 和 c++的特點,有什么相同的地方,不同的地方,C#分別從c++和java中吸取了他們那些優(yōu)點?
      4. C#可否對內(nèi)存進行直接的操作?(這可是個難點哦?要注意。
      5. 用Visual C++ 6.0編寫的代碼(unmanaged code),如何在CLR下和其他dot net component結(jié)合?
      6. 以前作過的一些項目?介紹一下自己的編程經(jīng)驗。(這是蒙混不過去的,基本一問就知道是真是假)
      7. 你對公司有什么期望?你的薪水期望值?為什么學(xué)計算機?以前的工作經(jīng)驗(這非常重要)?


      Q3: 維護數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么
      Q4:ADO。NET相對于ADO等主要有什么改進?
      Q5:ASp。NET與ASp相比,主要有哪些進步?
      Q6:C#中的委托是什么?事件是不是一種委托?
      Q7:描述一下C#中索引器的實現(xiàn)過程,是否只能根據(jù)數(shù)字進行索引?
      Q8:C#中要使一個類支持FOREACH遍歷,實現(xiàn)過程怎樣?
      Q10:寫一個HTML頁面,實現(xiàn)以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。并在2分鐘后自動關(guān)閉頁面。
      Q11:你對XMLHTTp、WEBSERVICE 了解嗎?簡單描述其特點、作用
      Q12:接口和抽象類有什么區(qū)別?你選擇使用接口和抽象類的依據(jù)是什么?
      Q13:自定義控件和一般用戶控件的異同?如果要用這兩者之一,你會選擇哪種?為什么
      Q14:大概描述一下ASp。NET服務(wù)器控件的生命周期
      Q15:UML
      Q16:面向?qū)ο蟮母拍睿饕攸c
      Q17:類劃分的依據(jù)。類粒度問題
      Q18:事物管理問題


      第一,談?wù)刦inal, finally, finalize的區(qū)別。
      第二,Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?
      第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。
      第四,&和&&的區(qū)別。
      第五,HashMap和Hashtable的區(qū)別。
      第六,Collection 和 Collections的區(qū)別。
      第七,什么時候用assert。
      第八,GC是什么? 為什么要有GC?
      第九,String s = new String(\"xyz\");創(chuàng)建了幾個String Object?
      第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
      第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
      第十二,sleep() 和 wait() 有什么區(qū)別?
      第十三,Java有沒有g(shù)oto?
      第十四,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?
      第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
      第十六,Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?
      第十七,給我一個你最常見到的runtime exception。
      第十八,error和exception有什么區(qū)別?
      第十九,List, Set, Map是否繼承自Collection接口?
      第二十,abstract class和interface有什么區(qū)別?
      第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
      第二十二,接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)?
      第二十三,啟動一個線程是用run()還是start()?
      第二十四,構(gòu)造器Constructor是否可被override?
      第二十五,是否可以繼承String類?
      第二十六,當(dāng)一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
      第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
      第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
      第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
      第三十,當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
      第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
      第三十二,編程題: 寫一個Singleton出來。


      數(shù)據(jù)庫方面:


      1.存儲過程和函數(shù)的區(qū)別
      2.事務(wù)是什么?
      3.游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?
      4.觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語句級觸發(fā)和行級觸發(fā)有何區(qū)別。


      1。用C#實現(xiàn)以下功能

      a 產(chǎn)生一個int數(shù)組,長度為100,并向其中隨機插入1-100,并且不能重復(fù)。

      b 對上面生成的數(shù)組排序,需要支持升序、降序兩種順序
      2。請說明在.net中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺點。
      3。請說明.net中的錯誤處理機制,并舉例
      4。請說出強名的含義
      5。請列出c#中幾種循環(huán)的方法,并指出他們的不同
      6。請指出.net中所有類型的基類
      7。請指出GAC的含義
      8。SQL SREVER中,向一個表中插入了新數(shù)據(jù),如何快捷的得到自增量字段的當(dāng)前值


      您在什么情況下會用到虛方法?它與接口有什么不同?
      Q:Override與重載有什么區(qū)別?
      Q:值類型與引用類型有什么區(qū)別?
      Q:怎樣理解靜態(tài)變量?
      Q:向服務(wù)器發(fā)送請求有幾種方式?
      Q:DataReader與Dataset有什么區(qū)別?
      Q:如果在一個B/S結(jié)構(gòu)的系統(tǒng)中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
      Q:用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層?
      Q:軟件開發(fā)過程一般有幾個階段?每個階段的作用?
      Q:微軟推出了一系列的Application Block,請舉出您所知道的Application Block并說明其作用?
      Q:請列舉一些您用到過的設(shè)計模式以及在什么情況下使用該模式?
      Q:您對WebService的體會?
      Q:您對編程的興趣如何?工作中遇到不懂的問題是怎樣去解決的?您一般怎樣去提高自己的編程水平?
      Q:您離職的原因是什么?
      Q:通過超鏈接怎樣傳遞中文參數(shù)?
      Q:請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty?
      Q:請編程實現(xiàn)一個冒泡排序算法?


      1、override與重載的區(qū)別
      2、.net的錯誤處理機制是什么
      3、C#中接口和類的異同
      4、DataReader和DataSet的異同


      1.有哪幾種方法可以實現(xiàn)一個類存取另外一個類的成員函數(shù)及屬性,并請舉列來加以說明和分析.
      2.如果需記錄類的實例個數(shù),該如何實現(xiàn),請寫一個簡單的類于以證明.
      3.A類是B類的基類,并且都有自己的構(gòu)造,析構(gòu)函數(shù),請舉例證明B類從實例化到消亡過程中構(gòu)造,析構(gòu)函數(shù)的執(zhí)行過程.
      4.需要實現(xiàn)對一個字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續(xù)空格的話,僅保留一個空格,即允許字符串中間有多個空格,但連續(xù)的空格數(shù)不可超過一個.


      一.填空題
      1.c#中的三元運算符是__?:___?
      2.當(dāng)整數(shù)a賦值給一個object對象時,整數(shù)a將會被__裝箱(封裝)___?
      3.類成員有_____種可訪問形式?
      this.;new Class().Method;
      4.public static const int A=1;這段代碼有錯誤么?是什么?
      const不能用static修飾
      5.float f=-123.567F;

      int i=(int)f;
      i的值現(xiàn)在是_____?
      123

      6.利用operator聲明且僅聲明了“==”,有什么錯誤么?

      7.委托聲明的關(guān)鍵字是______? delagete
      8.用sealed修飾的類有什么特點?密封,不能繼承
      9.在Asp.net中所有的自定義用戶控件都必須繼承自________?Control
      10.在.Net中所有可序列化的類都被標(biāo)記為_____?

      11.在.Net托管代碼中我們不用擔(dān)心內(nèi)存漏洞,這是因為有了______?gc
      12.下面的代碼中有什么錯誤嗎?_______

      using System;

      class A

      {

      public virtual void F(){

      Console.WriteLine(\"A.F\");

      }

      }

      abstract class B:A

      {

      public abstract override void F(); // new public abstract void F();



      }


      13.當(dāng)類T只聲明了私有實例構(gòu)造函數(shù)時,則在T的程序文本外部,___可以___(可以 or 不可以)從T派生出新的類,不可以____(可以 or 不可以)直接創(chuàng)建T的任何實例。
      14.下面這段代碼有錯誤么?

      switch (i){

      case():

      CaseZero();

      break;

      case 1:

      CaseOne();

      break;

      case 2:

      dufau<
      //wrong


      CaseTwo();

      break;

      }
      15.在.Net中,類System.Web.UI.page 可以被繼承么?可以


      二.簡答題
      1.在c#中using和new這兩個關(guān)鍵字有什么意義,請寫出你所知道的意義?using 指令 和語句 new 創(chuàng)建實例 new 隱藏基類中方法
      4.談?wù)勵惡徒Y(jié)構(gòu)的區(qū)別?類是引用類型、結(jié)構(gòu)是值類型
      5.一個長度為10000的字符串,通過隨機從a-z中抽取10000個字符組成。請用c#語言編寫主要程序來實現(xiàn)。
      6.對于這樣的一個枚舉類型:

      enum Color:byte{

      Red,

      Green,

      Blue,

      Orange

      }

      string[] ss=Enum.GetNames(typeof(Color));

      byte[]
      bb=Enum.GetValues(typeof(Color));
      試寫一段程序顯示出枚舉類型中定義的所有符號名稱以及它們對應(yīng)的數(shù)值。
      7.您了解設(shè)計模式么?請列出您所知道的設(shè)計模式的名稱。 //
      8.請在SQL Server中設(shè)計表來保存一個樹狀結(jié)構(gòu)的組織結(jié)構(gòu)圖(假設(shè)結(jié)構(gòu)圖中只有名稱這一項內(nèi)容需要保存),如果我想查詢某一職位下的所有職位,用一個存儲過程來實現(xiàn),你有什么思路?
      9.什么叫做SQL注入,如何防止?請舉例說明。
      10.下面這段代碼輸出什么?為什么?

      int i=5;

      int j=5;

      if (Object.ReferenceEquals(i,j))

      Console.WriteLine(\"Equal\");

      else


      Console.WriteLine(\"Not Equal\");
      //不相等,因為比較的是對象


      1.寫一個實現(xiàn)對一段字符串翻轉(zhuǎn)的方法,附加一些條件,如其中包括“,”、“.”,對其設(shè)計測試用 例 。
      2.對一支紙杯設(shè)計測試用例(可以是廣義的杯,不一定是某一支特定功能的杯)
      開發(fā)語言概念題
      3.什么是反射?
      4.用Singleton如何寫設(shè)計模式
      5.C#中的垃圾回收機制是怎樣的?
      6.什么是Application pool?
      7.鏈表和數(shù)組的區(qū)別,各有什么優(yōu)缺點.
      8.Remoting在客戶端服務(wù)器怎么實現(xiàn) ?
      9.什么是友元函數(shù)?
      10.用標(biāo)準(zhǔn)C如何實現(xiàn)多態(tài)?
      11.什么是虛函數(shù)?
      12.什么是抽象函數(shù)?
      13.什么是內(nèi)存泄漏,怎樣最簡單的方法判斷被存泄漏 ?


      英語題
      14.用英文介紹一下使用C#/C++做的項目,主要功能
      15.如果要與美國開電話會議,會如何與美國的工程師溝通
      16.如果老板認為你的技術(shù)落后,你會怎么回答

      數(shù)據(jù)庫知識題
      17.使用什么工具來調(diào)用存儲過程
      18.SQL Server的兩種索引是何形式?索引的作用?索引的優(yōu)缺點?
      19.觸發(fā)器的作用

      其它知識題及問題
      20.什么是Web Service?
      21.什么是XML?
      22.Socket怎么實現(xiàn)?


      原文地址:【.NET面試題】C#系列2

      【.NET面試題】C#系列2 (轉(zhuǎn)載)
      2008-07-13 11:23

      值類型和引用類型的區(qū)別?

      net筆試題

      答:基于值類型的變量直接包含值。將一個值類型變量賦給另一個值類型變量時,將復(fù)制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復(fù)制對對象的引用,而不復(fù)制對象本身。所有的值類型均隱式派生自 System.ValueType。與引用類型不同,從值類型不可能派生出新的類型。但與引用類型相同的是,結(jié)構(gòu)也可以實現(xiàn)接口。與引用類型不同,值類型不可能包含 null 值。然而,可空類型功能允許將 null 賦給值類型。 每種值類型均有一個隱式的默認構(gòu)造函數(shù)來初始化該類型的默認值。

      值類型主要由兩類組成:結(jié)構(gòu)、枚舉

      結(jié)構(gòu)分為以下幾類:Numeric(數(shù)值)類型、整型、浮點型、decimal、bool、用戶定義的結(jié)構(gòu)。

      引用類型的變量又稱為對象,可存儲對實際數(shù)據(jù)的引用。聲明引用類型的關(guān)鍵字:class、interface、delegate、內(nèi)置引用類型: object、string

      如何理解委托

      答:委托類似于 C++ 函數(shù)指針,但它是類型安全的。委托允許將方法作為參數(shù)進行傳遞。委托可用于定義回調(diào)方法。委托可以鏈接在一起;例如,可以對一個事件調(diào)用多個方法。方法不需要與委托簽名精確匹配。有關(guān)更多信息,請參見協(xié)變和逆變。C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨定義的方法。

      C#中的接口和類有什么異同。

      答:異:不能直接實例化接口。接口不包含方法的實現(xiàn)。接口、類和結(jié)構(gòu)可從多個接口繼承。但是C# 只支持單繼承:類只能從一個基類繼承實現(xiàn)。類定義可在不同的源文件之間進行拆分。

      同:接口、類和結(jié)構(gòu)可從多個接口繼承。接口類似于抽象基類:繼承接口的任何非抽象類型都必須實現(xiàn)接口的所有成員。接口可以包含事件、索引器、方法和屬性。一個類可以實現(xiàn)多個接口。

      ASp.net的身份驗證方式有哪些

      答:Windows 身份驗證提供程序:

      提供有關(guān)如何將 Windows 身份驗證與 Microsoft Internet 信息服務(wù) (IIS) 身份驗證結(jié)合使用來確保 ASp.NET 應(yīng)用程序安全的信息。

      Forms 身份驗證提供程序:

      提供有關(guān)如何使用您自己的代碼創(chuàng)建應(yīng)用程序特定的登錄窗體并執(zhí)行身份驗證的信息。使用 Forms 身份驗證的一種簡便方法是使用 ASp.NET 成員資格和 ASp.NET 登錄控件,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據(jù)的方法。

      passport 身份驗證提供程序:

      提供有關(guān)由 Microsoft 提供的集中身份驗證服務(wù)的信息,該服務(wù)為成員站點提供單一登錄和核心配置

      活動目錄的作用

      答:Active Directory存儲了有關(guān)網(wǎng)絡(luò)對象的信息,并且讓管理員和用戶能夠輕松地查找和使用這些信息。Active Directory使用了一種結(jié)構(gòu)化的數(shù)據(jù)存儲方式,并以此作為基礎(chǔ)對目錄信息進行合乎邏輯的分層組織。

      解釋一下UDDI、WSDL的意義及其作用

      答:UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議(UDDI, Universa Description, Discovery and Integration)是一套基于Web的、分布式的、為Web服務(wù)提供的信息注冊中心的實現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web服務(wù)注冊以使得別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標(biāo)準(zhǔn)。UDDI 提供了一組基于標(biāo)準(zhǔn)的規(guī)范用于描述和發(fā)現(xiàn)服務(wù),還提供了一組基于因特網(wǎng)的實現(xiàn)。

      WSDL:WSDL描述Web服務(wù)的公共接口。這是一個基于XML的關(guān)于如何與Web服務(wù)通訊和使用的服務(wù)描述;

      服務(wù) URL 和命名空間 :

      網(wǎng)絡(luò)服務(wù)的類型(可能還包括 SOAp 的函數(shù)調(diào)用,正像我所說過的,WSDL 足夠自如地去描述網(wǎng)絡(luò)服務(wù)的廣泛內(nèi)容)。

      有效函數(shù)列表,每個函數(shù)的參數(shù),每個參數(shù)的類型 ,每個函數(shù)的返回值及其數(shù)據(jù)類型。什么是SOAp

      答:SOAp(Simpe Object Access protoco )簡單對象訪問協(xié)議是在分散或分布式的環(huán)境中交換信息并執(zhí)行遠程過程調(diào)用的協(xié)議,是一個基于XML的協(xié)議。使用SOAp,不用考慮任何特定的傳輸協(xié)議(最常用的還是HTTp協(xié)議),可以允許任何類型的對象或代碼,在任何平臺上,以任何一直語言相互通信。

      SOAp 是一種輕量級協(xié)議,用于在分散型、分布式環(huán)境中交換結(jié)構(gòu)化信息。 SOAp 利用 XML 技術(shù)定義一種可擴展的消息處理框架,它提供了一種可通過多種底層協(xié)議進行交換的消息結(jié)構(gòu)。這種框架的設(shè)計思想是要獨立于任何一種特定的編程模型和其他特定實現(xiàn)的語義。

      SOAp 定義了一種方法以便將 XML 消息從 A 點傳送到 B 點。為此,它提供了一種基于 XML且具有以下特性的消息處理框架:1) 可擴展,2) 可通過多種底層網(wǎng)絡(luò)協(xié)議使用,3) 獨立于編程模型。

      如何部署一個ASp.net頁面

      答:VS 2005和VS 2003都有發(fā)布機制。2003可以發(fā)布然后再復(fù)制部署。VS2005基本上可以直接部署到對應(yīng)位置。

      如何理解.net中的垃圾回收機制

      答:.NET Framework 的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放。每次您使用 new 運算符創(chuàng)建對象時,運行庫都從托管堆為該對象分配內(nèi)存。只要托管堆中有地址空間可用,運行庫就會繼續(xù)為新對象分配空間。但是,內(nèi)存不是無限大的。最終,垃圾回收器必須執(zhí)行回收以釋放一些內(nèi)存。垃圾回收器優(yōu)化引擎根據(jù)正在進行的分配情況確定執(zhí)行回收的最佳時間。當(dāng)垃圾回收器執(zhí)行回收時,它檢查托管堆中不再被應(yīng)用程序使用的對象并執(zhí)行必要的操作來回收它們占用的內(nèi)存。

      概述.NET中的GC機制。

      答:GC的全稱是garbage collection,中文名稱垃圾回收,是.NET中對內(nèi)存管理的一種功能。垃圾回收器跟蹤并回收托管內(nèi)存中分配的對象,定期執(zhí)行垃圾回收以回收分配給沒有有效引用的對象的內(nèi)存。當(dāng)使用可用內(nèi)存不能滿足內(nèi)存請求時,GC會自動進行。

      在進行垃圾回收時,垃圾回收器會首先搜索內(nèi)存中的托管對象,然后從托管代碼中搜索被引用的對象并標(biāo)記為有效,接著釋放沒有被標(biāo)記為有效的對象并收回內(nèi)存,最后整理內(nèi)存將有效對象挪動到一起

      ASp.NET中常見內(nèi)置對象?

      答:Response、Request、Server、Session、Application、Cookie

      死鎖的必要條件?怎么克服?

      答:系統(tǒng)的資源不足,進程的推進的順序不合適,資源分配不當(dāng),一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,進程獲得資源時,未使用完前,不能強行剝奪。

      接口是否可以繼承接口?抽象類是否可以實現(xiàn)接口?抽象類是否可以繼承實體類?

      答:接口是可以繼承接口的,抽象類是可以實現(xiàn)接口的,抽象類可以繼承實體類,但是有個條件,條件是,實體類必須要有明確的構(gòu)造函數(shù)。

      構(gòu)造器Constructor是否可以被繼承?是否可以被Override?

      答:Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading).

      是否可以繼承String類?

      答:因為String類是final類所以不可以繼承string類。

      當(dāng)一個線程進入一個對象的方法后,其它線程是否可以進入該對象的方法?

      答:不可以,一個對象的方法只能由一個線程訪問。

      用最有效的方法算出2乘以8等于幾?

      答:2<<3.

      C#是否可以對內(nèi)存直接進行操作?

      答:C#是可以對內(nèi)存進行直接操作的,雖然很少用到指針,但是C#是可以使用指針的,在用的時候需要在前邊加unsafe,,在.net中使用了垃圾回收機制(GC)功能,它替代了程序員,不過在C#中不可以直接使用finalize方法,而是在析構(gòu)函數(shù)中調(diào)用基類的finalize()方法。

      數(shù)組有沒有Length()這和方法?string有沒有這個方法?

      答:數(shù)組中沒有這個方法,但有這個屬性,string中有這個方法。

      Error和Exception有是區(qū)別?

      答:error表示恢復(fù)不是不可能,但是很困難,exception表示一種實際或?qū)崿F(xiàn)問題,它表示程序運行正常不可以發(fā)生的。

      HashMap和Hashtable區(qū)別?

      答:HashMap是Hashtable的輕量級實現(xiàn),非線程安全的實現(xiàn)他們都實現(xiàn)了map接口,主要區(qū)別是HashMap鍵值可以為空null,效率可以高于Hashtable。

      Collection和Collections的區(qū)別?

      答:Collection是集合類的上級接口,Collections是針對集合類的一個幫助類,它提供一系列靜態(tài)方法來實現(xiàn)對各種集合的搜索,排序,線程安全化操作。

      Override, Overload,的區(qū)別?

      答:Override是重寫的意思,它表示重寫基類的方法,而且方法的名稱,返回類型,參數(shù)類型,參數(shù)個數(shù)要與基類相同。

      Overload是重載是意思,它也表示重寫基類的方法,但是只要方法名相同,別的可以不同。

      在一個BS結(jié)構(gòu)中需要傳遞變量值時,不能使用session,cookie,application,你有幾中方法?

      答:this.server.Transfer,Querystring.

      C#種索引器實現(xiàn)過程,是否只能根據(jù)數(shù)字索引?

      答:不是的,可以是任意類型。

      Const和ReadOnly?

      答:Const用來申明編程時申明常量,ReadOnly用來申明運行時常量。

      UDp和TCp連接有和異同?

      答:TCp是傳輸控制協(xié)議,提供的是面向連接的,是可靠的,字節(jié)流服務(wù),當(dāng)用戶和服務(wù)器彼此進行數(shù)據(jù)交互的時候,必須在他們數(shù)據(jù)交互前要進行TCp連接之后才能傳輸數(shù)據(jù)。TCp提供超時重撥,檢驗數(shù)據(jù)功能。

      UDp是用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報的傳輸協(xié)議,是不可靠的連接。

      進程和線程分別該怎么理解?

      答:進程是比線程大的程序運行單元,都是由操作系統(tǒng)所體會的系統(tǒng)運行單元,一個程序中至少要有一個進程,有一個進程中,至少要有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內(nèi)存單元,線程是共享內(nèi)存,從而極大的提高了程序的運行效率同一個進程中的多個線程可以并發(fā)執(zhí)行。

      在.NET中所有類的基類是?

      答:object。

      能用foreach遍歷訪問的對象需要實現(xiàn)?

      答:需要實現(xiàn)IEnumerable接口和GetEnumerator ()方法。

      Heap與stack的差別?

      答:Heap是堆,空間是由手動操作分配和釋放的,它的存儲區(qū)很大的自由存儲區(qū)。

      Stack是棧,是由是操作系統(tǒng)自動分配和釋放的,棧上的空間是有限的。程序在編譯期間變量和函數(shù)分配內(nèi)存都是在棧上進行的,且在運行時函數(shù)調(diào)用時的參數(shù)的傳遞也是在棧上進行的。

      請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty?

      答:foreach (System.Windows.Forms.Control control in this.Controls)

      {

      if (control is System.Windows.Forms.TextBox)

      {

      System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ;

      }

      }



      原文地址:【.NET面試題】.NET牛人應(yīng)該知道些什么?

      【.NET面試題】.NET牛人應(yīng)該知道些什么?
      2008-07-13 11:32

      .NET牛人應(yīng)該知道些什么?

      A、任何一個使用.NET的人

      1、描述線程與進程的區(qū)別?
      2、什么是Windows服務(wù),它的生命周期與標(biāo)準(zhǔn)的EXE程序有什么不同 ?
      3、Windows上的單個進程所能訪問的最大內(nèi)存量是多少?它與系統(tǒng)的最大虛擬內(nèi)存一樣嗎?這對于系統(tǒng)設(shè)計有什么影響?
      4、EXE和DLL之間的區(qū)別是什么?
      5、什么是強類型,什么是弱類型?哪種更好些?為什么?
      6、pID是什么?在做系統(tǒng)的故障排除時如何使用它?
      7、單個TCp/Ip端口上能夠偵聽多少個進程?
      8、什么是GAC?它解決了什么問題?

      B、中級.NET開發(fā)人員

      1、闡述面向接口、面向?qū)ο、面向方面編程的區(qū)別
      2、什么是Interface?它與Class有什么區(qū)別?
      3、什么是反射?
      4、使用ASMX的XML Web服務(wù)與使用SOAp的.NET Remoting的區(qū)別?
      5、類型系統(tǒng)是由XMLSchema表示的嗎?CLS是XMLSchema表示的嗎?
      6、從概念上闡述前期綁定(early-binding)和后期綁定(late-binding)的區(qū)別?
      7、調(diào)用Assembly.Load算靜態(tài)引用還是動態(tài)引用?
      8、何時使用Assembly.LoadFrom?何時使用Assembly.LoadFile?
      9、什么叫Assembly Qualified Name?它是一個文件名嗎?它有什么不同? Assembly.Load(\"foo.dll\"); 這句話是否正確?
      10、做強簽名的assembly與不做強簽名的assembly有什么不同?
      11、DateTime是否可以為null?
      12、什么叫JIT?什么是NGEN?它們分別有什么限制和好處?
      13、.NET CLR中一代的垃圾收集器是如何管理對象的生命周期的?什么叫非確定性終結(jié)? Finalize()和Dispose()之間的區(qū)別?
      14、using() 語法有用嗎?什么是IDisposable?它是如何實現(xiàn)確定性終結(jié)的。
      15、tasklist /m \"mscor*\" 這句命令是干嘛的?
      16、in-proc和out-of-proc的區(qū)別 .NET里的哪一項技術(shù)能夠?qū)崿F(xiàn)out-of-proc通訊?
      17、當(dāng)你在ASp.NET中運行一個組件時,它在Windows Xp, Windows 2000, Windows 2003上分別跑在哪個進程里面?

      C、高級開發(fā)人員/架構(gòu)師

      1、DateTime.parse(myString); 這行代碼有什么問題?
      2、pDB是什么東西? 在調(diào)試中它應(yīng)該放在哪里?
      3、什么叫圈復(fù)雜度(cyclomatic complexity)?為什么它很重要?
      4、寫一個標(biāo)準(zhǔn)的lock(),在訪問變量的前后創(chuàng)建臨界區(qū),要有\(zhòng)"雙重檢查\", 什么叫FullTrust?放入GAC的assembly是否是FullTrust的?
      代碼加上需要安全權(quán)限的特性有什么好處?
      5、gacutil /l &brvbar; find /i \"Corillian\" 這句命令的作用是什么? sn -t foo.dll 這句命令是干嘛的?
      6、DCOM需要防火墻打開哪些端口?端口135是干嘛用的?
      7、對比OOp和SOA,它們的目的分別是什么?
      8、XmlSerializer是如何工作的?使用這個類的進程需要什么ACL權(quán)限?
      9、為什么不提倡catch(Exception)? Debug.Write和Trace.Write有什么不同?何時應(yīng)該使用哪一個? Debug Build和Release Build的區(qū)別,是否會有明顯的速度變化?請說明理由。
      10、JIT是以assembly為單位發(fā)生還是以方法為單位發(fā)生?這對于工作區(qū)有何影響?
      11、對比抽象基類和接口的使用 a.Equals(b)和a == b一樣嗎? 在對象比較中,對象一致和對象相等分別是指什么? 12、在.NET中如何實現(xiàn)深拷貝(deep copy)? 請解釋一下IClonable 什么叫裝箱?
      string是值類型還是引用類型?
      13、XmlSerializer使用的針對屬性的模式有什么好處?解決了什么問題?
      14、為什么不應(yīng)該在.NET中使用out參數(shù)?它究竟好不好? 特性能夠放到某個方法的參數(shù)上?如果可以,這有什么用?

      D、C# 組件開發(fā)人員

      1、什么時候使用override?什么時候使用new? 什么叫shadowing?
      2、解釋virtual、sealed、override和abstract的區(qū)別 Foo.Bar, Version=2.0.205.0, Culture=neutral, publicKeyToken=593777ae2d274679d 解釋這個字符串每個部分的重要性和作用
      3、解釋public、protected、private和internal的區(qū)別 使用primary Interop Assembly (pIA)有什么好處?
      4、NUnit是通過什么機制獲知需要測試哪些方法的? 5、catch(Exception e){throw e;}和catch(Exception e){throw;}的區(qū)別
      6、typeof(foo)和myFoo.GetType()的區(qū)別?
      7、public class c{ public c(string a) : this() {;}; public c() {;} } 解釋第一個構(gòu)造函數(shù)中發(fā)生了什么? 這個構(gòu)造函數(shù)有什么用? 8、this是干嘛用的?能夠用在static方法中?


      E、ASp.NET (UI)開發(fā)人員

      1、闡述一個基于瀏覽器的Form pOST如何變成一個服務(wù)器端的事件,如Button1_OnClick。
      2、什么是postBack? 什么是ViewState? 它是否被編碼過? 是否被加密過?誰會使用ViewState?
      3、 <machinekey>元素是干嘛用的?它用于哪兩項ASp.NET技術(shù)?
      4、說出ASp.NET 1.1中的3種Session State提供程序以及它們的優(yōu)缺點?
      5、什么叫Web Gardening? 在設(shè)計中如何使用它? 假設(shè)有一個ASp.NET應(yīng)用程序,那么單獨一個進程中允許多少應(yīng)用程序?qū)ο?那兩個進程呢?啟用了Web Gardening的2個進程呢?這對設(shè)計有何影響?
      6、ASp.NET會重用多個請求之間的線程嗎?是否每個HttpRequest都有自己的線程?
      7、你是否應(yīng)該用ASp.NET的Thread Local存儲? [ThreadStatic]屬性在ASp.NET中有用嗎?它有沒有副作用?是好是壞?
      8、如何使用HttpHandler簡化現(xiàn)有的為.aspx頁面提供驗證圖片的設(shè)計 HttpModule訂閱的是什么類型的事件? 這對于實現(xiàn)有何影響?如果不打算重新編譯ASp.NE應(yīng)用程序,應(yīng)該怎么做?
      9、說出表示任意一個終端(URL)的方式,以及ASp.NET中把請求路由到那個終點的方式 解釋cookie的工作原理。給出一個濫用Cookie的例子。 10、解釋HttpRequest.ValidateInput()的重要性? 哪些數(shù)據(jù)是通過HTTp Header傳遞的? 對比HTTp動詞GET和pOST?
      11、什么是HEAD? 說出至少6個HTTp狀態(tài)碼以及它們的含義
      12、if-not-modified-since的工作原理是什么? 用ASp.NET如何實現(xiàn)它?
      13、解釋 <@OutputCache%>和如何使用VaryByparam、VaryByHeader. VaryByCustom是如何工作的?
      14、如何通過q=? (除了q=5)來實現(xiàn)ASp.NET HTML輸出緩沖和緩沖過期(比如http://localhost/page.aspx?q=5)?

      F、XML開發(fā)人員

      1、XML命名空間的作用? 何時適合使用DOM?何時不適合?有沒有尺度限制? 什么是WS-I基本配置?它重要在哪里? 寫一個小XML文檔,其中使用的是默認的命名空間,以及一個合法的(前綴)命名空間,其中要有分別屬性這兩個命名空間的元素 元素和特性的基本區(qū)別在哪里? 格式完好的XML和有效的XML有什么區(qū)別?
      2、.NET中如何驗證XML?
      3、myXmlDocument.SelectNodes(\"http://mynode\"); 為什么這句代碼不好?什么時候它是好的?
      4、拉式解析(XmlReader)與事件讀取器(Sax)的區(qū)別 XpathDocument和XmlDocument的區(qū)別? 在何種情況下應(yīng)該用哪一個?
      5、“XML片斷”與“XML文檔”有什么區(qū)別 什么叫格式規(guī)范的XML?
      6、XML InfoSet規(guī)范與Xml DOM有什么不同? InfoSet是要解決什么問題? 比較DTD和XSD,它們的相似點與區(qū)別分別是什么?哪個更好些?為什么?
      7、System.Xml支持DTD嗎?如果支持,如何使用? XML Schema能夠表示為對象圖?對象圖能夠表示為XML Schema?

      原文地址:t_sql中的COUNT函數(shù)

      1 count函數(shù)的定義
      count函數(shù)的定義可見MSDN。定義如下:
      view source
      print?

      COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )



      view source
      print?

      那么COUNT 有兩種使用方式COUNT(expression)和COUNT(*),它返回一個對一個表按某列計數(shù)的值。



      view source
      print?

      COUNT(*)返回表的行數(shù)。它不會過濾null和重復(fù)的行。



      view source
      print?

      COUNT(expression)會過濾掉null值,所以值null行不會加入到計數(shù)當(dāng)中,但如果不在expression前面加上distinct關(guān)鍵字,它是會過濾掉重復(fù)行的。



      view source
      print?

      以此可以得出一個結(jié)論:count(*)返回值總是大于或等于count(expression)的返回值。



      view source
      print?

      在應(yīng)用中,好多人喜歡使用COUNT(1),這里面的1其實就是一個expression,因為你的表中沒有列名為1的列,那么它的返回結(jié)果是和COUNT(*)一模一樣的,



      view source
      print?

      個人覺得效率也是沒有差別的。



      view source
      print?

      ;WITH cte1(c1,c2, Description) AS(

      SELECT 1, 1, \This is a fox\ UNION ALL

      SELECT 2, NULL, \Firefox\ UNION All

      SELECT NULL, 2, \people consider foxes as clever but sly animals\ UNION All

      SELECT NULL, NULL, NULL UNION ALL

      SELECT 3, NULL, \This is me\ UNION ALL

      SELECT 3, 3, \Fox on the run\)



      結(jié)果如下:

      如結(jié)果所示,COUNT(*),COUNT(2)和COUNT(3)是一模一樣的。而COUNT(c1)顯然過濾掉了NULL值。
      注意,COUNT 的參數(shù)expression可以為常量(像上面的2,3…),表的列,函數(shù),還可以是語句,具體可見MSDN的定義。下面展示了這個應(yīng)用。
      如果想為cte1中列Description中有字符串\fox’進行計數(shù),典型的做法是:
      view source
      print?

      SELECT COUNT(*) FROM cte1

      WHERE pATINDEX(\%fox%\,cte1.Description) <> 0



      這種做法是where中過濾,另外一種方式是在expression中定義查找條件:
      view source
      print?

      SELECT COUNT(NULLIF(pATINDEX(\%fox%\, cte1.Description), 0))

      FROM cte1



      如果description列中沒有字符串\fox\那么pATINDEX函數(shù)返回的是0,NULLIF函數(shù)因為兩個參數(shù)相等,那么結(jié)果是NULL,因為NULL不會參與計數(shù),所以列中沒有\(zhòng)fox’的行不會
      參與計數(shù),達到了查找的目的。
      當(dāng)然,我們還可在expression中使用case表達式:
      view source
      print?

      SELECT COUNT(CASE

      WHEN pATINDEX(\%fox%\,cte1.Description) <> 0 THEN 1

      ELSE <STRONG>NULL</STRONG> END)

      FROM cte1



      注意ELSE語句后面必須是NULL,如果是非NULL,ELSE語句也會參與COUNT計數(shù)的。
      2 在count函數(shù)后接聚合窗口函數(shù)OVER。注意聚合窗口函數(shù)中是不能有ORDER BY,ORDER BY只能出現(xiàn)在排名函數(shù)的over子句中。OVER字句的定義見MSDN。
      view source
      print?

      SELECT c.*, COUNT(*) OVER(pARTITION BY c.c1) \c1 * count\,

      COUNT(c1) OVER(pARTITION BY c.c1) \c1 c1 count\,

      COUNT(*) OVER(pARTITION BY c.c2) \c2 count\,

      COUNT(CASE

      WHEN LEFT(c.Description, 1) IN (\T\) THEN 1

      ELSE NULL END) OVER(pARTITION BY LEFT(c.Description, 1)) \start with T\,

      COUNT(CASE

      WHEN LEFT(c.Description, 1) IN (\T\, \F\, \p\) THEN 1

      ELSE NULL END) OVER(pARTITION BY LEFT(c.Description, 1)) \start with T, F OR p\

      FROM cte1 c



      view source
      print?

      注意OVER字句不能為OVER(pARTITION BY c.c1 ORDER BY c.c1),這是因為count不是排名函數(shù)。



      view source
      print?

      以上的運行結(jié)果為:



      view source
      print?

      <A href=\"blogs_com/fgynew/WindowsLiveWriter/t_sqlcount_11359/result333_4.png\"><IMG style=\"BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISpLAY: inline; BORDER-TOp: 0px; BORDER-RIGHT: 0px\" title=result333 border=0 alt=result333 src=\"blogs_com/fgynew/WindowsLiveWriter/t_sqlcount_11359/result333_thumb_1.png\" width=804 height=183></A>




      可以看出,在使用OVER子句時候,COUNT還是遵循了最基本的準(zhǔn)則,COUNT(*)會對null行計數(shù),而COUNT(expression)則不會。
      以上在COUNT 的expression中設(shè)置條件顯然不是一種很優(yōu)化的方式,因為這種方式會首先讀取表中的所有數(shù)據(jù),是對表進行掃描,而在where子句中設(shè)置條件進行過濾是一種很好的方式。因為從邏輯上講,where先于select執(zhí)行,所有數(shù)據(jù)庫引擎只會讀取部分數(shù)據(jù),不是讀取所有數(shù)據(jù)。如果要對以表中c1列的null進行統(tǒng)計,可以有兩種方式:
      view source
      print?

      SELECT COUNT(*)

      FROM cte1

      WHERE c1 IS NULL



      或者:
      view source
      print?

      SELECT COUNT(CASE

      WHEN c1 IS NULL THEN \x\

      ELSE NULL END)

      FROM cte1

      【net筆試題】相關(guān)文章:

      大班筆的教案12-22

      筆的世界教學(xué)反思02-19

      《各種各樣的筆》教案03-08

      各種各樣的筆教案03-27

      數(shù)字筆試題04-06

      C 筆試題04-06

      筆試題(循環(huán))04-06

      筆的世界教學(xué)反思8篇02-26

      國網(wǎng)筆試題04-06

      職場禮儀試題及答案03-28