1.三層架構
表現層(UI)
業務邏輯層(BLL):對數據層的操作,對數據業務邏輯處理
數據訪問層(DAL):該層所做事務直接操作數據庫
3.類(class)與結構(struct)的異同
Class可以實例化,屬於引用類型,是分配在內存中的堆上的。類是引用傳遞
Struct 屬於值類型,是分配在內存的棧上。結構是復制傳遞
4.堆跟棧的區別
棧是在編譯期間就分配好的內存空間,局部值類型變量、值類型參數等都在棧內存中
堆是程序運行期間動態分配的內存空間,你可以根據程序的運行情況確定要堆內存的大小
5.String s = new String("xyz");創建了幾個String Object?
兩個對象,一個是“xyz”,一個是指向“xyz”的引用對象。
6.C#中的接口和類有什么異同。
不同點:1.不能直接實例化接口;2.接口不包括方法的實現;3.接口可以多繼承,類只能單繼承
相同點:1.接口、類和結構都可以從多個接口繼承;接口類似於抽象基類:
2.繼承接口的任何非抽象類型都必須實現接口的所有成員;
3.接口和類都可以包含事件、索引器、方法和屬性;
7.抽象類和接口有什么區別?
相同點:都不能被直接實例化,都可以通過繼承實現其抽象方法
不同點:1.接口支持多繼承,抽象類不支持多繼承;接口只定義行為,抽象類既可以定義行為,還可能提供實現;
2.接口只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的簽名,但不能定義字段和包含實現方法;
3.抽象類可以定義字段、屬性、包含實現方法
8.new關鍵字的用法
new 運算符 用於創建對象和調用構造函數
new 修飾符 用於向基類成員隱藏繼承成員
9.線程與進程的區別
進程定義的是應用程序與應用程序的邊界,不同的進程不能共享代碼和數據空間;
線程定義的是代碼執行堆棧和執行上下文的邊界
10.using關鍵字有什么用?什么是IDisposable?
using可以聲明namespace的引入,還可以實現非托管資源的釋放,實現了IDisposiable的類在using中創建,using結束后會自動調用該對象的Dispose方法,釋放資源,等價於try... catch
11.string str = null 與 string str = “”說明其中的區別
string str=null是不給它分配內存空間的,而string str="" 給它分配長度為空字符串的內存空間。string str=null沒有string對象,string str=""有一個字符對象
13.什么是code-Behind技術。
就是代碼隱藏,在ASP.NET中通過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的創建
14.如果設treeView1=new TreeView(),則treeView1.Nodes.Add("根節點")返回的是一個TreeNode類型
15.StringBuilder 和 String 的區別?
String 在進行運算時(如賦值、拼接)會產生一個實例,而StringBuilder則不會。所以在大量字符串拼接或頻繁對某一字符串進行操作時最好使用StringBuilder
16.const與readonly的區別:
const字段只能在該字段的聲明初始化,readonly可以在聲明或構造函數中初始化
17.ViewState是保持狀態的一種機制,EnableViewState屬性設置為false即可禁用
18.在什么情況下會用到虛方法?它與接口有什么不同?
子類重新定義父類的某個方法時,必須把父類的方法定義為virtual
在定義接口中不能有方法體,虛方法可以
實現時,子類可以不重新定義虛方法,如果一個類繼承接口,必須實現該接口
19.DataReader和DataSet的異同?
DataReader使用時始終占用SqlConnection,在線操作數據庫,每次只在內存中加載一條數據,所以占用的內存很小
DataSet則是將數據一次性加載在內存中,拋棄數據庫連接,讀取完畢即放棄數據庫連接,將數據全部加載在內存中,所以比較耗內存
20.內存泄露是指一個不再被程序使用的對象或變量一直被占據在內存中