c#面試筆試題

第一套:

1.c#中的三元運算符是_____?

2.當整數a賦值給一個object對象時,整數a將會被_____?

3.類成員有_____種可訪問形式?

4.public static const int A=1;這段代碼有錯誤麼?是什麼?

5.float f=-123.567F;

int i=(int)f;

i的值現在是_____?

6.利用operator聲明且僅聲明瞭==,有什麼錯誤麼?

7.委託聲明的關鍵字是______?

8.用sealed修飾的類有什麼特點?

9.在Asp.net中所有的自定義用戶控件都必須繼承自________?

10.在.Net中所有可序列化的類都被標記爲_____?

11.在.Net託管代碼中我們不用擔心內存漏洞,這是因爲有了______?

12.下面的代碼中有什麼錯誤嗎?_______

using System;

class A

{

public virtual void F(){

Console.WriteLine("A.F");

}

}

abstract class B:A

{

public abstract override void F();

}

13.當類T只聲明瞭私有實例構造函數時,則在T的程序文本外部,______(可以 or 不可以)從T

派生出新的類,____(可以 or 不可以)直接創建T的任何實例。

14.下面這段代碼有錯誤麼?

switch (i){

case():

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault;

CaseTwo();

break;

}

15.在.Net中,類System.Web.UI.Page 可以被繼承麼?

二.簡答題

1.在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?

2.在下面的例子裏

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的實例時,產生什麼輸出?

3.下面的例子中

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);

}

}

產生的輸出結果是什麼?

4.談談類和結構的區別?

5.一個長度爲10000的字符串,通過隨機從a-z中抽取10000個字符組成。請用c#語言編寫主要程

序來實現。

6.對於這樣的一個枚舉類型:

enum Color:byte{

Red,

Green,

Blue,

Orange

}

試寫一段程序顯示出枚舉類型中定義的所有符號名稱以及它們對應的數值。

7.您瞭解設計模式麼?請列出您所知道的設計模式的名稱。

8.請在SQL Server中設計表來保存一個樹狀結構的組織結構圖(假設結構圖中只有名稱這一項內容

需要保存),如果我想查詢某一職位下的所有職位,用一個存儲過程來實現,你有什麼思路?

9.什麼叫做SQL注入,如何防止?請舉例說明。

10.下面這段代碼輸出什麼?爲什麼?

int i=5;

int j=5;

if (Object.ReferenceEquals(i,j))

Console.WriteLine("Equal");

else

Console.WriteLine("Not Equal");

 

答案:

1 ?:

2 裝箱

3 3種

4 const成員都是static所以應該去掉static

5 -123

6 要同時修改Equale和GetHash() ? 重載了"==" 就必須重載 "!="

7 delegate

8 不可被繼承

9 System.Web.UI.UserControl

10 [serializable]

11 gC

12 abstract override 是不可以一起修飾

13 不可以,不可以

14 case():不行 default;

15 可以

1 Using 引入一個名子空間,或在使用了一個對像後自動調用其IDespose,New 實例化一個對

像,或修飾一個方法,表此方法完全重寫此方法,

2 X=1,Y=0

3 x=1,y=2

4 最大區別一個是引用類型,一個是值類型 默認成員訪問爲public是另外一個區別

第二套:

一、選擇填空題(每空2分,共60分)

第三套:

1、C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裏?

    property和attribute漢語都稱之爲屬性。不過property是指類向外提供的數據區域。而attribute則是描述對象在編譯時或運行時屬性的。這兩者是有本質區別的。

2、講一講你理解的web service,在dot net framework中,怎麼很好的結合xml?(講概念就行了)

    從表面上看,Web Service就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。這就是說,你能夠用編程的方法通過Web調用來實現某個功能的應用程序。從深層次上看,Web Service是一種新的Web應用程序分支,它們是自包含、自描述、模塊化的應用,可以在網絡(通常爲Web)中被描述、發佈、查找以及通過Web來調用。可擴展的標記語言XML是Web Service平臺中表示數據的基本格式。除了易於建立和易於分析外,XML主要的優點在於它既與平臺無關,又與廠商無關。XML是由萬維網協會(W3C)創建,W3C制定的XML SchemaXSD定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型。Web Service平臺是用XSD來作爲數據類型系統的。當你用某種語言如VB.NET或C#來構造一個Web Service時,爲了符合Web Service標準,所有你使用的數據類型都必須被轉換爲XSD類型。如想讓它使用在不同平臺和不同軟件的不同組織間傳遞,還需要用某種東西將它包裝起來。這種東西就是一種協議,如 SOAP。

 3. C#, Java 和 c++的特點,有什麼相同的地方,不同的地方,C#分別從c++和java中吸取了他們那些優點?

    C#看起來與Java有着驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的 過程.但是C#與Java有着明顯的不同,它借鑑了Delphi的一個特點,與COM(組件對象模型)是直接集成。

微軟c#語言定義主 要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點.C#在設計者從C++繼承的可選選項方面比Java要廣泛一些(比如說 structs),它還增加了自己新的特點(比方說源代碼版本定義).

C#從Java繼承而來的特點

類:在C#中類的申明與Java很相似。特點看起來與Java相比沒有變化.布爾運算:條件表達式的結果是布爾數據類型,布爾數據類型是這種語言中獨立的一種數據類型.從布爾類型到其他類型沒有 直接的轉換過程.布爾常量true和false是C#中的關鍵字.錯誤處理:如Java中那樣,通過拋出和捕捉異常對象來管理錯誤處理過程.內存管理:由 底層.NET框架進行自動內存垃圾回收.

C#從C和C++繼承的特點

編譯:程序直接編譯成標準的二進制可執行形式.

結構體:一個C#的結構體與C++的結構體是相似的,因爲它能夠包含數據申明和方法.但是,不象C++,C#結構體與類是不同的而且不支持繼承.但是,與Java相同的是,一個結構體可以實現界面.

預編譯:C#中存在預編譯指令支持條件編譯,警告,錯誤報告和編譯行控制. #error

C#獨有的特點

中間代碼:微軟在用戶選擇何時MSIL應該編譯成機器碼的時候是留了很大的餘地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機器碼.它也明 白許多--如果不是大多數的話--程序員認爲Java程序要不可避免的比C編寫的任何東西都要慢.而這種實現方式決定了基於MSIL的程序(指的是用 C#,Visual Basic,"Managed C++"--C++的一個符合CLS的版本--等語言編寫的程序)將在性能上超過"解釋性的"Java代碼.當然,這一點還需要得到事實證明,因爲C#和 其他生成MSIL的編譯器還沒有發佈.但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對相同.象"C#是編譯語言而Java是解釋性的,"之類的聲明只是商業技巧.Java的中間代碼和 MSIL都是中間的彙編形式的語言,它們在運行時或其它的時候被編譯成機器代碼.

命名空間中的申明:當你創建一個程序的時候,你在一個命名空間裏創建了一個或多個類.同在這個命名空間裏(在類的外面)你還有可能聲明界面,枚舉類型和結構體.必須使用using關鍵字來引用其他命名空間的內容.

基本的數據類型:C#擁有比C,C++或者Java更廣泛的數據類型.這些類型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一樣,所有這些類型都有一個固定的大小.又象C和C++一樣,每個數據類型都有有符號和無符號兩種類型.與 Java相同的是,一個字符變量包含的是一個16位的Unicode字符.C#新的數據類型是decimal數據類型,對於貨幣數據,它能存放28位10 進制數字.

兩個基本類:一個名叫object的類是所有其他類的基類.而一個名叫string的類也象object一樣是這個語言的一部分.作爲語言的一部分存在意味着編譯器有可能使用它--無論何時你在程序中寫入一句帶引號的字符串,編譯器會創建一個string對象來保存它.

參數傳遞:方法可以被聲明接受可變數目的參數.缺省的參數傳遞方法是對基本數據類型進行值傳遞.ref關鍵字可以用來強迫一個變量通過引用傳遞,這使得一個變量可以接受一個返回值.out關鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數並不需要初始值.

與COM 的集成:C#對Windows程序最大的賣點可能就是它與COM的無縫集成了,COM就是微軟的Win32組件技術.實際上,最終有可能在任何.NET語 言裏編寫COM客戶和服務器端.C#編寫的類可以子類化一個以存在的COM組件;生成的類也能被作爲一個COM組件使用,然後又能使用,比方說, JScript語言子類化它從而得到第三個COM組件.這種現象的結果是導致了一個運行環境的產生,在這個環境裏的組件是網絡服務,可用用任何.NET語 言子類化.

索引下標:一個索引與屬性除了不使用屬性名來引用類成員而是用一個方括號中的數字來匿名引用(就象用數組下標一樣)以外是相似的.

代理和反饋:一個代理對象包括了訪問一個特定對象的特定方法所需的信息.只要把它當成一個聰明的方法指針就行了.代理對象可以被移動到另一個地方,然後可以 通過訪問它來對已存在的方法進行類型安全的調用.一個反饋方法是代理的特例.event關鍵字用在將在事件發生的時候被當成代理調用的方法聲明中.

4、C#中的委託是什麼?事件是不是一種委託?

委託是一個可以對方法進行引用的類。與其他的類不同,委託類具有一個簽名,並且它只能對與其簽名匹配的方法進行引用。這樣,委託就等效於一個類型安全函數指針或一個回調。事件是一種委託。

5、ADO.NET相對於ADO等主要有什麼改進?

ADO以Recordset存儲,而ADO.NET則以DataSet表示。Recordset看起來更像單表,如果讓Recordset以多表的方式表示就必須在SQL中進行多表連接。反之,DataSet可以是多個表的集合。ADO 的運作是一種在線方式,這意味着不論是瀏覽或更新數據都必須是實時的。ADO.NET則使用離線方式,在訪問數據的時候ADO.NET會利用XML製作數據的一份幅本,ADO.NET的數據庫連接也只有在這段時間需要在線。

由於ADO使用COM技術,這就要求所使用的數據類型必須符合COM規範,而ADO.NET基於XML格式,數據類型更爲豐富並且不需要再做COM編排導致的數據類型轉換,從而提高了整體性能。

6、接口和抽象類有什麼區別?你選擇使用接口和抽象類的依據是什麼?

 接口是一個純粹的抽象類,沒有任何實際的東西,只是定義了一個框架,而抽象類裏面可以有實際的一個方法,並不要求所有的方法都是抽象的。可以實現一個接口中的所有方法,也可以繼承一個抽象的類,然後覆寫其中的方法。接口一般只有方法,而沒有數據成員或屬性。抽象類有方法,也有數據成員或屬性,一般情況下,優先考慮用接口,只有當可能要訪問到數據成員或屬性時,用抽象類。

 7、談談final, finally, finalize的區別。

final 修飾符用於指定類不能擴展或者方法或屬性不能重寫。它將防止其他類通過重寫重要的函數來更改該類的行爲。帶有 final 修飾符的方法可以由派生類中的方法來隱藏或重載。

finally 塊用於清除在 try 塊中分配的任何資源。控制總是傳遞給 finally 塊,與 try 塊的存在方式無關。

finalize允許 Object 在“垃圾回收”回收 Object 之前嘗試釋放資源並執行其他清理操作。

第四套:

1.      填空:

        (1)面向對象的語言具有________性、_________性、________性。

        (2)能用foreach遍歷訪問的對象需要實現 ________________接口或聲明________________方法的類型。

        (3)列舉ADO.net中的五個主要對象_______________、_____________、_______________、_______________、_________________。

2. 不定項選擇:

(1) 以下敘述正確的是:

      A. 接口中可以有虛方法。     B. 一個類可以實現多個接口。
      C. 接口不能被實例化。       D. 接口中可以包含已實現的方法。

   (2) 從數據庫讀取記錄,你可能用到的方法有:

      A. ExecuteNonQuery            B. ExecuteScalar

      C. Fill                        D. ExecuteReader

3. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。


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


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


6. 寫出程序的輸出結果

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.寫出程序的輸出結果

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.      寫出程序的輸出結果:
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. 一列數的規則如下: 1、1、2、3、5、8、13、21、34......

   求第30位數是多少, 用遞歸算法實現。(C#語言)


10.  程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)

要求:  1.要有聯動性,老鼠和主人的行爲是被動的。

2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。


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

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

3. . private :   私有成員, 在類的內部纔可以訪問。
     protected : 保護成員,該類內部和繼承類中可以訪問。
     public :    公共成員,完全公開,沒有訪問限制。
     internal:   在同一命名空間內可以訪問。
評分標準:答對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)
    評分標準: 寫對即10分。(答案不唯一,datagrid 分頁可能需要用到)
 
5.  1.使用QueryString,  如....?id=1; response. Redirect()....
    2.使用Session變量
    3.使用Server.Transfer
    ....
   評分標準: 答對1點得3分, 兩點7分, 3點10分。


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


7.  A
    B
A.Fun()
評分標準: 寫出A.B 得5分,寫出A.Fun()得5分,滿分10分。
(考查在繼承類中構造函數, 以及new 方法, )


8.  2
    5
    1
    6

評分標準: 答對一點得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);
        }
    }
評分標準: 寫出return Foo(i -1) + Foo(i - 2); 得5分。

 寫出if(i > 0 && i <= 2) return 1; 得5分。

           方法參數過多需要扣分(扣除分數 = 參數個數 - 1)

           不用遞歸算法扣5分

           (遞歸算法在樹結構建立等方面比較常用)

10          

 要點:1. 聯動效果,運行代碼只要執行Cat.Cryed()方法。2. 對老鼠和主人進行抽象
評分標準: <1>.構造出Cat、Mouse、Master三個類,並能使程序運行(2分)
            <2>從Mouse和Master中提取抽象(5分)
            <3>聯動效應,只要執行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。(3分)


    public interface Observer
    {
        void Response();    //觀察者的響應,如是老鼠見到貓的反映
    }
    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();
        }
    }


//---------------------------------------------------------------------------------------------

設計方法二: 使用event -- delegate設計..
    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.在對SQL Server 數據庫操作時應選用()。

a)SQL Server .NET Framework 數據提供程序;

b)OLE DB .NET Framework 數據提供程序;

c)ODBC .NET Framework 數據提供程序;

d)Oracle .NET Framework數據提供程序;

2.下列選項中,()是引用類型。

a)enum類型

b)struct類型

c)string類型

d)int類型

3.關於ASP.NET中的代碼隱藏文件的描述正確的是()

a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的創建用於與窗體交互。編程邏輯唯一與用戶界面不同的文件中。該文件稱作爲“代碼隱藏”文件,如果用C#創建,該文件將具有“.ascx.cs”擴展名。

b)項目中所有Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。

c)項目中所有的Web窗體頁的代碼隱藏文件都被編譯成項目動態鏈接庫(.dll)文件。

d)以上都不正確。

4.以下描述錯誤的是()

a)在C++中支持抽象類而在C#中不支持抽象類。

b)C++中可在頭文件中聲明類的成員而在CPP文件中定義類的成員,在C#中沒有頭文件並且在同一處聲明和定義類的成員。

c)在C#中可使用 new 修飾符顯式隱藏從基類繼承的成員。

d)在C#中要在派生類中重新定義基類的虛函數必須在前面加Override。

5.C#的數據類型有()

a)值類型和調用類型;

b)值類型和引用類型;

c)引用類型和關係類型;

d)關係類型和調用類型;

6.下列描述錯誤的是()

a)類不可以多重繼承而接口可以;

b)抽象類自身可以定義成員而接口不可以;

c)抽象類和接口都不能被實例化;

d)一個類可以有多個基類和多個基接口;

7.在DOM中,裝載一個XML文檔的方法()

a)save方法

b)load方法

c)loadXML方法

d)send方法

8.下列關於構造函數的描述正確的是()

a)構造函數可以聲明返回類型。

b)構造函數不可以用private修飾

c)構造函數必須與類名相同

d)構造函數不能帶參數

9.以下是一些C#中的枚舉型的定義,其中錯誤的用法有()

a)public enum var1{ Mike = 100, Nike = 102, Jike }

b)public enum var1{ Mike = 100, Nike,  Jike }

c)public enum var1{ Mike=-1 , Nike, Jike }

d)public enum var1{ Mike , Nike , Jike }

10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。

a)9

b)2

c)6

d)越界

11.接口是一種引用類型,在接口中可以聲明(),但不可以聲明公有的域或私有的成員變量。

a)方法、屬性、索引器和事件;

b)方法、屬性信息、屬性;

c)索引器和字段;

d)事件和字段;

12.ASP.NET框架中,服務器控件是爲配合Web表單工作而專門設計的。服務器控件有兩種類型,它們是( )

a)HTML控件和Web控件

b)HTML控件和XML控件

c)XML控件和Web控件

d)HTML控件和IIS控件

13.ASP.NET中,在Web窗體頁上註冊一個用戶控件,指定該控件的名稱爲”Mike”,正確的註冊指令爲( )

a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>

b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>

c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>

d)以上皆非

14.在ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是()。

a)insert、update、delete等操作的Sql語句主要用ExecuteNonQuery()方法來執行;

b)ExecuteNonQuery()方法返回執行Sql語句所影響的行數。

c)Select操作的Sql語句只能由ExecuteReader()方法來執行;

d)ExecuteReader()方法返回一個DataReder對象;

15.下列ASP.NET語句(b)正確地創建了一個與SQL Server 2000數據庫的連接。

a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

16.Winform中,關於ToolBar控件的屬性和事件的描述不正確的是()。

a)Buttons屬性表示ToolBar控件的所有工具欄按鈕

b)ButtonSize屬性表示ToolBar控件上的工具欄按鈕的大小,如高度和寬度

c)DropDownArrows屬性表明工具欄按鈕(該按鈕有一列值需要以下拉方式顯示)旁邊是否顯示下箭頭鍵

d)ButtonClick事件在用戶單擊工具欄任何地方時都會觸發

17.在ADO.NET中執行一個存儲過程時,如果要設置輸出參數則必須同時設置參數的方向和( ),必要時還要設置參數尺寸。

a)大小;

b)上限;

c)初始值;

d)類型;

18.如果將窗體的FormBoderStyle設置爲None,則( )。

a)窗體沒有邊框並不能調整大小;

b)窗體沒有邊框但能調整大小;

c)窗體有邊框但不能調整大小;

d)窗體是透明的;

19.如果要將窗體設置爲透明的,則( )

a)要將FormBoderStyle屬性設置爲None;

b)要將Opacity屬性設置爲小於100%得值;

c)要將locked 屬性設置爲True;

d)要將 Enabled屬性設置爲True;

20.下列關於C#中索引器理解正確的是( )

a)索引器的參數必須是兩個或兩個以上

b)索引器的參數類型必須是整數型

c)索引器沒有名字

d)以上皆非

21.下面描述錯誤的是( )。

a)窗體也是控件;

b)窗體也是類;

c)控件是從窗體繼承來的;

d)窗體的父類是控件類;

22.要對註冊表進行操作則必須包含( )。

a)System.ComponentModel命名空間;

b)System.Collections命名空間;

c)System.Threading命名空間;

d)Microsoft.Win32命名空間;

23.要創建多文檔應用程序,需要將窗體的( )屬性設爲true。

a)DrawGrid;

b)ShowInTaskbar;

c)Enabled;

d)IsMdiContainer;

24.如果設treeView1=new TreeView(),則treeView1.Nodes.Add("根節點")返回的是一個 ()類型的值。

a)TreeNode;

b)int;

c)string;

d)TreeView;

25.下面關於XML的描述錯誤的是()。

a)XML提供一種描述結構化數據的方法;

b)XML 是一種簡單、與平臺無關並被廣泛採用的標準;

c)XML文檔可承載各種信息;

d)XML只是爲了生成結構化文檔;

26.  以下的C#代碼,試圖用來定義一個接口:

public interface IFile

{

      int A;

      int delFile()

      {

          A = 3;

      }

      void disFile();

}

關於以上的代碼,以下描述錯誤的是( )。

a)以上的代碼中存在的錯誤包括:不能在接口中定義變量,所以int A代碼行將出現錯誤;

b)以上的代碼中存在的錯誤包括:接口方法delFile是不允許實現的,所以不能編寫具體的實現函數;

c)代碼void disFile();聲明無錯誤,接口可以沒有返回值;

d)代碼void disFile();應該編寫爲void disFile(){};

27.在ASP.NET中有Button控件myButton,要是單擊控件時,導航到其他頁面http://www.abc.com/, 正確的代碼爲( )。

a)private void myButton_Click(object sender, System.EventArgs e){Redirect(“http://www.abc.com”);}

b)private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);}

c)private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(“http://www.abc.com”);}

d)private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);return true;}

28.XML文檔既包含數據同時也可包含( )。

a)元數據;

b)架構;

c)代碼;

d)圖片;

29.在C#中利用Socket進行網絡通信編程的一般步驟是:建立Socket偵聽、( )、利用Socket接收和發送數據。

a)建立Socket連接;

b)獲得端口號;

c)獲得IP地址;

d)獲得主機名;

30.聲明一個委託public delegate int myCallBack(int x); 則用該委託產生的回調方法的原型應該是( )。

a)void myCallBack(int x) ;

b)int receive(int num) ;

c)string receive(int x) ;

d)不確定的;

二、判斷題,對的打√錯的打×(每小題2分,共20分)

1.( )在C#中,裝箱操作是將值類型轉化成引用類型。

2.( )接口中的成員不可以有訪問域修飾符,但可以有其它修飾符。

3.( )在C#中,索引器是專門用來訪問對象中的數組信息的。

4.( )在C#中,接口可以被多重繼承而類不能。

5.( )在C#中,int[][]是定義一個int型的二維數組。

6.( )異常類對象均爲System.Exception類的對象。

7.( ) 當窗體最小化後,再次還原成爲活動窗體時將自動觸發Paint事件。

8.( ) ASP.NET中,使用驗證控件來驗證用戶輸入,要求用戶不可跳過該項輸入,並且用戶輸入值在0和1000之間,則適用RequiredFieldValidator和RangeValidator控件。

9.( ) 聲明委託實際上是聲明瞭一個方法。

10.( ) 任何事物都是對象。

三、簡述題(每小題10分,共20分)

1.請簡述一下用Socket進行同步通訊編程的詳細步驟 

2.   比較ADO 與ADO.NET 的不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章