.NET筆試題集(一)

來源:互聯網
上載者:User

標籤:ever   over   prot   建立類型   sql   約束   dom   類修飾符   lan   

 

題目來源於傳智播客和各大互連網,複習、重新整理貼出來。

1、簡述 private、 protected、 public、 internal、protected internal 訪問修飾符和存取權限

private : 私人成員, 在類的內部才可以訪問。

protected : 保護成員,該類內部和繼承類中可以訪問。

public : 公用成員,完全公開,沒有訪問限制。

internal: 當前程式集內可以訪問。

protected internal: 訪問僅限於當前程式集或從包含類派生的類型。

不帶修飾符的類是預設internal。

 

2、簡述abstract、sealed類修飾符

abstract:可以被指示一個類只能作為其它類的基類。

sealed:指示一個類不能被繼承。

 

3、簡述C#成員修飾符

abstract:指示該方法或屬性沒有實現。

const:指定域或局部變數的值不能被改動。

event:聲明一個事件。

extern:指示方法在外部實現。

override:對由基類繼承成員的新實現。

readonly:指示一個域只能在聲明時以及相同類的內部被賦值。

static:指示一個成員屬於類型本身,而不是屬於特定的對象。

virtual:指示一個方法或存取器的實現可以在繼承類中被覆蓋。

 

4、ADO.NET中的五個主要對象

Connection:主要是開啟程式和資料庫之間的串連。沒有利用連線物件將資料庫開啟,是無法從資料庫中取得資料的。Close和Dispose的區別,Close以後還可以Open,Dispose以後則不能再用。

Command:主要可以用來對資料庫發出一些指令,例如可以對資料庫下達查詢、新增、修改、刪除資料等指令,以及調用存在資料庫中的預存程序等。這個對象是架構在Connection 對象上,也就是Command: 對象是通過在Connection對象串連到資料來源。

DataAdapter:主要是在資料來源以及DataSet 之間執行資料轉送的工作,它可以透過Command 對象下達命令後,並將取得的資料放入DataSet 對象中。這個對象是架構在Command對象上,並提供了許多配合DataSet 使用的功能。

DataSet:這個對象可以視為一個暫存區(Cache),可以把從資料庫中所查詢到的資料保留起來,甚至可以將整個資料庫顯示出來,DataSet是放在記憶體中的。DataSet 的能力不只是可以儲存多個Table 而已,還可以透過DataAdapter對象取得一些例如主鍵等的資料表結構,並可以記錄資料表間的關聯。DataSet 對象可以說是ADO.NET 中重量級的對象,這個對象架構在DataAdapter對象上,本身不具備和資料來源溝通的能力;也就是說我們是將DataAdapter對象當做DataSet 對象以及資料來源間傳輸資料的橋樑。DataSet包含若干DataTable、DataTableTable包含若干DataRow。

DataReader:當我們只需要循序的讀取資料而不需要其它操作時,可以使用DataReader 對象。DataReader對象只是一次一次向下循序的讀取資料來源中的資料,這些資料是存在資料庫伺服器中的,而不是一次性載入到程式的記憶體中的,只能(通過遊標)讀取當前行的資料,而且這些資料是唯讀,並不允許作其它的操作。因為DataReader 在讀取資料的時候限制了每次唯讀取一條,而且只能唯讀,所以使用起來不但節省資源而且效率很好。使用DataReader 對象除了效率較好之外,因為不用把資料全部傳回,故可以降低網路的負載。

ADO.NET 使用Connection 對象來串連資料庫,使用Command 或DataAdapter對象來執行SQL語句,並將執行的結果返回給DataReader 或 DataAdapter ,然後再使用取得的DataReader 或DataAdapter 對象操作資料結果。

 

5、列舉ASP.NET 頁面之間傳遞值的幾種方式和優缺點

1.使用QueryString, 如....?id=1; response. Redirect():  傳遞的參數會顯示在url中,不安全並且不能傳遞數組或對象。

2.使用Session變數:簡單,但易丟失 作用於使用者個人,過量的儲存會導致伺服器記憶體資源的耗盡。

3.使用Server.Transfer:流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,資料庫穩定,安全,但效能相對弱。

4.Cookie傳值:簡單,但可能不支援,可能被偽造 Cookie是存放在用戶端的,而session是存放在伺服器端的。而且Cookie的使用要配合ASP.NET內建對象Request來使用

5.Application傳值:對象的作用範圍是整個全域,也就是說對所有使用者都有效。其常用的方法用Lock和UnLock 

6.PreviosPage:這個一般比較少用。

Server.Transfer和Response.Redirect的區別:Server.Transfer是伺服器內部的轉接,瀏覽器不知道;Response.Redirect是有瀏覽器參與的,所以在地址欄中可以看到地址的變化。

 

6、C#中的委託是什嗎?事件是不是一種委託?事件和委託的關係

委託可以把一個方法作為參數代入另一個方法。

委託可以理解為指向一個函數的指標。

委託和事件沒有可比性,因為委託是類型,事件是對象,下面說的是委託的對象(用委託方式實現的事件)和(標準的event方式實現)事件的區別。事件的內部是用委託實現的。因為對於事件來講,外部只能“註冊自己+=、登出自己-=”,外界不可以登出其他的註冊者,外界不可以主動觸發事件,因此如果用Delegate就沒法進行上面的控制,因此誕生了事件這種文法。事件是用來閹割委託執行個體的,類比用一個自訂類閹割List。事件只能add、remove自己,不能賦值。事件只能+=、-=,不能= 。加分的補充回答:事件內部就是一個private的委託和add、remove兩個方法。

 

7、重寫(override)與重載(overload)的區別

override 是進行基類中函數的重寫。override是物件導向的概念。override 方法提供從基類繼承的成員的新實現。通過 override 聲明重寫的方法稱為重寫基方法。重寫的基方法必須與 override 方法具有相同的簽名

重載是方法的名稱相同。參數個數或參數類型不同,進行多次重載以適應不同的需要。重載(overload)是面向過程的概念。

 

8、C#中索引器是否只能根據數字進行索引?是否允許多個索引器參數?

參數的個數和類型都是任意的。用reflector反編譯可以看出,索引器的內部本質上就是set_item、get_item方法。

 

9、屬性和public欄位的區別是什嗎?調用set方法為一個屬性設值,然後用get方法讀取出來的值一定是set進去的值嗎?

屬性可以對設值、取值的過程進行非法值控制,比如年齡禁止設值負數,而欄位則不能進行這樣的設定。雖然一般情況下get讀取的值就是set設定的值,但是可以讓get讀取的值不是set設定的值的,極端的例子。Public Age{get{return 100;}set{}}。用reflector反編譯可以看出,屬性內部本質上就是set_***、get_***方法。

        class Person        {            public int Age            {                get                {                    return 3;                }            }        }        static void Main(string[] args)        {            Person p1 = new Person();            p1.Age = 30;            p1.Age++;            Console.Write(p1.Age);//輸出3
       Console.ReadKey(); }

 

10、三層架構

通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、商務邏輯層(BLL)、資料訪問層(DAL)。

區分層次的目的即為了“高內聚,低耦合”的思想。

表現層(UI):通俗講就是展現給使用者的介面,即使用者在使用一個系統的時候的所見所得。

商務邏輯層(BLL):針對具體問題的操作,也可以說是對資料層的操作,對資料商務邏輯處理。

資料訪問層(DAL):該層所做事務直接操作資料庫,針對資料的增添、刪除、修改、更新、尋找等每層之間是一種垂直的關係。

三層結構是N層結構的一種,一般來說,層次之間是向下依賴的,下層代碼未確定其介面(契約)前,上層代碼是無法開發的,下層代碼介面(契約)的變化將使上層的代碼一起變化。

優點: 分工明確,條理清晰,易於調試,而且具有可擴充性。

缺點: 增加成本。

 

11、MVC模式

MVC(Model View Controller)模型-視圖-控制器

aspx就是View,視圖;Model:DataSet、Reader、對象;Controller:cs代碼。

MVC是典型的平行關係,沒有說誰在上誰在下的關係,模型負責業務領域的事情,視圖負責顯示的事情,控制器把資料讀取出來填充模型後把模型交給視圖去處理。而各種驗證什麼的應該是在模型裡處理了。它強制性的使應用程式的輸入、處理和輸出分開。MVC最大的好處是將邏輯和頁面分離。

 

12、什麼是裝箱(boxing)和拆箱(unboxing)?

裝箱:從實值型別轉換到參考型別。

拆箱:從參考型別轉換到實值型別。

object obj = null;//參考型別

obj = 1;//裝箱,boxing。把實值型別封裝為參考型別。

int i1 = (int)obj;//拆箱。unboxing

 

13、什麼叫應用程式定義域(AppDomain) 

一種邊界,它由公用語言運行庫圍繞同一應用程式範圍內建立的對象建立(即,從應用程式進入點開始,沿著對象啟用的序列的任何位置)。

應用程式定義域有助於將在一個應用程式中建立的對象與在其他應用程式中建立的對象隔離,以使運行時行為可以預知。

在一個單獨的進程中可以存在多個應用程式定義域。應用程式定義域可以理解為一種輕量級進程。起到安全的作用。佔用資源小。

 

14、CTS、CLS、CLR分別作何解釋

CTS:Common Type System 通用系統類別型。Int32、Int16→int、String→string、Boolean→bool

CLS:Common Language Specification 通用語言規範。不同語言文法的不同。

CLR:Common Language Runtime 通用語言執行平台,就是.Net提供的那些類

 

15、在dotnet中類(class)與結構(struct)的異同?

Class可以被執行個體化,屬於參考型別,是分配在記憶體的堆上的。類是引用傳遞的。

Struct屬於實值型別,是分配在記憶體的棧上的。結構體是複製傳遞的。

 

16、堆和棧的區別?

棧是編譯期間就分配好的記憶體空間,因此你的代碼中必須棧的大小有明確的定義;局部實值型別變數、實值型別參數等都在棧記憶體中。

堆是程式運行期間動態分配的記憶體空間,你可以根據程式的運行情況確定要分配的堆記憶體的大小。

 

17、能用foreach遍曆訪問的對象的要求

需要實現IEnumerable介面或聲明GetEnumerator方法的類型。

 

18、GC是什麼? 為什麼要有GC?

GC是垃圾收集器。程式員不用擔心記憶體管理,因為垃圾收集器會自動進行管理。GC只能處理託管記憶體資源的釋放,對於非託管資源則不能使用GC進行回收,必須由程式員手工回收,一個例子就是FileStream或者SqlConnection需要程式員調用Dispose進行資源的回收。

要請求垃圾收集,可以調用下面的方法:GC.Collection()一般不需要手動調用GC.Collection()。

 

19、String s = new String("xyz");建立了幾個String Object?

兩個對象,一個是“xyz”,一個是指向“xyz”的引用對象。

 

20、實值型別和參考型別的區別?

1.將一個實值型別變數賦給另一個實值型別變數時,將複製包含的值。參考型別變數的賦值只複製對對象的引用,而不複製對象本身。

2.實值型別不可能派生出新的類型:所有的實值型別均隱式派生自 System.ValueType。但與參考型別相同的是,結構也可以實現介面。

3.實值型別不可能包含 null 值:然而,可空類型功能允許將 null 賦給實值型別。

4.每種實值型別均有一個隱式的預設建構函式來初始化該類型的預設值。

 

21、C#中的介面和類有什麼異同。

不同點:

不能直接執行個體化介面。

介面不包含方法的實現。

介面可以多繼承,類只能單繼承。

類定義可在不同的源檔案之間進行拆分。

相同點:

介面、類和結構都可以從多個介面繼承。

介面類似於抽象基類:繼承介面的任何非抽象類別型都必須實現介面的所有成員。

介面和類都可以包含事件、索引器、方法和屬性。

 

22、abstract class和interface有什麼區別?

相同點:

都不能被直接執行個體化,都可以通過繼承實現其抽象方法。

不同點:

介面支援多繼承;抽象類別不能實現多繼承。

介面只能定義行為;抽象類別既可以定義行為,還可能提供實現。

介面可以用於支援回調(CallBack);抽象類別不能實現回調,因為繼承不支援。

介面只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的簽名,但不能定義欄位和包含實現的方法;

抽象類別可以定義欄位、屬性、包含有實現的方法。

介面可以作用於實值型別(Struct)和參考型別(Class);抽象類別只能作用於參考型別。例如,Struct就可以繼承介面,而不能繼承類。

 

23、是否可以繼承String類?

String類是sealed類故不可以繼承。

 

24、try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行?

會執行,在return前執行。

public int QueryCount(){  try  {    return cmd.ExecuteScalar();  }  finally  {    cmd.Dispose();  }}

如果C#設計的是先執行cmd.Dispose()再執行return就會出現return執行失敗了,因為cmd已經Dispose了。

 

25、new 關鍵字用法

new 運算子 用於建立對象和調用建構函式。

new 修飾符 用於向基類成員隱藏繼承成員。

new 約束 用於在泛型聲明中約束可能用作型別參數的參數的類型。

 

26、如何把一個Array複製到ArrayList裡

實現1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);

實現2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);

 

27、描述線程與進程的區別?

1.線程(Thread)與進程(Process)二者都定義了某種邊界,不同的是進程定義的是應用程式與應用程式之間的邊界,不同的進程之間不能共用代碼和資料空間,而線程定義的是代碼執行堆棧和執行內容的邊界。

2.一個進程可以包括若干個線程,同時建立多個線程來完成某項任務,便是多線程。而同一進程中的不同線程共用代碼和資料空間。用一個比喻來說,如果一個家庭代表一個進程,在家庭內部,各個成員就是線程,家庭中的每個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也可以派出幾個成員來協同完成,而家庭之外的人則沒有辦法直接消費不屬於自己家庭的財產。

 

28、什麼是強型別,什麼是弱類型?哪種更好些?為什麼?

C#中

int i=3;

i="a";

不可以

JavaScript中

var i=3;

i="a";

可以

強型別是在編譯的時候就確定類型的資料,在執行時類型不能更改,而弱類型在執行的時候才會確定類型。

沒有好不好,二者各有好處,強型別安全,因為它事先已經確定好了,而且效率高。弱類型更靈活,但是效率低,而且出錯機率高

一般用於編譯型程式設計語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在啟動並執行時候容易出現錯誤,但它靈活,多用於解釋型程式設計語言,如javascript,vb等

 

29、什麼是反射?

程式集包含模組,而模組又包括類型,類型下有成員,反射就是管理程式集,模組,類型的對象,它能夠動態建立類型的執行個體,設定現有對象的類型或者擷取現有對象的類型,能調用類型的方法和訪問類型的欄位屬性。它是在運行時建立和使用類型執行個體。

 

30、int、DateTime、string是否可以為null?

int、DateTime不能,因為其為Struct類型,而結構屬於實值型別,實值型別不能為null,只有參考型別才能被賦值null。string可以為null。

.NET筆試題集(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.