不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦>創(chuàng)業(yè)指南>職場(chǎng)>面試題>

C#面試題大全

時(shí)間: 文樺657 分享

  C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。

  今天學(xué)習(xí)啦小編要與大家分享的是:C#面試題大全;內(nèi)容僅供閱讀參考,希望對(duì)大家有所幫助;

C#面試題

  1.維護(hù)數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?

  答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實(shí)現(xiàn),這種方式的效率最好;其次用觸發(fā)器,這種方式可以保證無論何種業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都能維持?jǐn)?shù)據(jù)庫的完整性、一致性;最后再考慮用自寫業(yè)務(wù)邏輯實(shí)現(xiàn),但這種方式效率最低、編程最復(fù)雜,當(dāng)為下下之策。

  2.什么是事務(wù)?什么是鎖?

  答:事務(wù)是指一個(gè)工作單元,它包含了一組數(shù)據(jù)操作命令,并且所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤消請(qǐng)求操作,即這組命令要么都執(zhí)行,要么都不執(zhí)行。

  鎖是在多用戶環(huán)境中對(duì)數(shù)據(jù)的訪問的限制。SqlServer自動(dòng)鎖定特定記錄、字段或文件,防止用戶訪問,以維護(hù)數(shù)據(jù)安全或防止并發(fā)數(shù)據(jù)操作問題,鎖可以保證事務(wù)的完整性和并發(fā)性。

  3.什么是索引,有什么優(yōu)點(diǎn)?

  答:索引象書的目錄類似,索引使數(shù)據(jù)庫程序無需掃描整個(gè)表,就可以在其中找到所需要的數(shù)據(jù),索引包含了一個(gè)表中包含值的列表,其中包含了各個(gè)值的行所存儲(chǔ)的位置,索引可以是單個(gè)或一組列,索引提供的表中數(shù)據(jù)的邏輯位置,合理劃分索引能夠大大提高數(shù)據(jù)庫性能。

  4.視圖是什么?游標(biāo)是什么?

  答:視圖是一種虛擬表,虛擬表具有和物理表相同的功能,可以對(duì)虛擬表進(jìn)行增該查操作;

  視圖通常是一個(gè)或多個(gè)表的行或列的子集;

  視圖的結(jié)果更容易理解(修改視圖對(duì)基表不影響),獲取數(shù)據(jù)更容易(相比多表查詢更方便),限制數(shù)據(jù)檢索(比如需要隱藏某些行或列),維護(hù)更方便。

  游標(biāo)對(duì)查詢出來的結(jié)果集作為一個(gè)單元來有效的處理,游標(biāo)可以定位在結(jié)果集的特定行、從結(jié)果集的當(dāng)前位置檢索一行或多行、可以對(duì)結(jié)果集中當(dāng)前位置進(jìn)行修改、

  5.什么是存儲(chǔ)過程?有什么優(yōu)點(diǎn)?

  答:存儲(chǔ)過程是一組予編譯的SQL語句

  它的優(yōu)點(diǎn):1.允許模塊化程序設(shè)計(jì),就是說只需要?jiǎng)?chuàng)建一次過程,以后在程序中就可以調(diào)用該過程任意次。

  2.允許更快執(zhí)行,如果某操作需要執(zhí)行大量SQL語句或重復(fù)執(zhí)行,存儲(chǔ)過程比SQL語句執(zhí)行的要快。

  3.減少網(wǎng)絡(luò)流量,例如一個(gè)需要數(shù)百行的SQL代碼的操作有一條執(zhí)行語句完成,不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。

  4.更好的安全機(jī)制,對(duì)于沒有權(quán)限執(zhí)行存儲(chǔ)過程的用戶,也可授權(quán)他們執(zhí)行存儲(chǔ)過程。

  6.什么是觸發(fā)器?

  答:觸發(fā)器是一種特殊類型的存儲(chǔ)過程,出發(fā)器主要通過事件觸發(fā)而被執(zhí)行的,

  觸發(fā)器的優(yōu)點(diǎn):1.強(qiáng)化約束,觸發(fā)器能夠提供比CHECK約束;

  2.跟蹤變化,觸發(fā)器可以跟蹤數(shù)據(jù)庫內(nèi)的操作,從而不允許未經(jīng)允許許可的更新和變化;

  3.聯(lián)級(jí)運(yùn)算,比如某個(gè)表上的觸發(fā)器中包含對(duì)另一個(gè)表的數(shù)據(jù)操作,而該操作又導(dǎo)致該表上的觸發(fā)器被觸發(fā)

  7.簡單介紹下ADO.NET和ADO主要有什么改進(jìn)?

  答:ADO以Recordset存儲(chǔ),而ADO.NET則以DataSet表示,ADO.NET提供了數(shù)據(jù)集和數(shù)據(jù)適配器,有利于實(shí)現(xiàn)分布式處理,降低了對(duì)數(shù)據(jù)庫服務(wù)器資源的消耗。

  7.1 ASP.NET與ASP相比,主要有哪些進(jìn)步?

  答:ASP.NET實(shí)現(xiàn)了面向?qū)ο缶幊蹋A(yù)編譯的服務(wù)器端代碼而不像ASP那樣解釋執(zhí)行提高了性能,代碼分離易于管理,可訂制和擴(kuò)展性,功能強(qiáng)大的開發(fā)工作,更好的安全機(jī)制。

  7.2 C#中的委托是什么?事件是不是一種委托?

  答:委托本質(zhì)上是一種“方法接口”,它相當(dāng)于C/C++中的函數(shù)指針,當(dāng)然它比函數(shù)指針安全,在C#中通常用于事件處理。事件不是委托,不過由于事件的性質(zhì)決定了處理它的程序邏輯能訪問的參數(shù),因此,在C#中處理事件的邏輯都包裝為委托。

  8.如何把一個(gè)array復(fù)制到arrayist里

  答:foreach( object arr in array)arrayist.Add(arr);

  8.1 列舉ADO.NET中的五個(gè)主要對(duì)象,并簡單描述

  答:Connection連接對(duì)象,Command執(zhí)行命令和存儲(chǔ)過程,DataReader向前只讀的數(shù)據(jù)流,DataAdapter適配器,支持增刪查詢,DataSet數(shù)據(jù)級(jí)對(duì)象,相當(dāng)與內(nèi)存里的一張或多張表。

  9.概述三層結(jié)構(gòu)體系

  答:表示層(UI),業(yè)務(wù)邏輯層(BLL),數(shù)據(jù)訪問層(DAL)

  10.什么是裝箱和拆箱?什么是重載?

  答:裝箱就是把值類型轉(zhuǎn)成引用類型,拆箱相反把引用轉(zhuǎn)換成值類型。

  重載就是指一個(gè)方法名相同,參數(shù)個(gè)數(shù)不相同,返回值可以相同的方法。

  11.簡述WebService

  答:WebService服務(wù)可以描述為可以在web上部署并可以被任何應(yīng)用程序或其他服務(wù)調(diào)用的功能。所謂服務(wù)就是系統(tǒng)提供一組接口,并通過接口使用系統(tǒng)提供的功能,WebService服務(wù)可以提供任何企業(yè)到客戶,企業(yè)到企業(yè),點(diǎn)對(duì)點(diǎn)或部門對(duì)部門通訊所需的服務(wù),比如一個(gè)公司可以通過網(wǎng)絡(luò)連接到另一個(gè)公司的服務(wù),從而直接傳遞訂購單。

  12.面向?qū)ο蟮乃枷胫饕ㄊ裁?

  答:繼承、封裝、多態(tài)

  13.列舉一下你所了解的XM技術(shù)及其應(yīng)用

  答:xml可以用來做網(wǎng)頁(xslt)、可以當(dāng)作數(shù)據(jù)庫、可以用來保存對(duì)象的系列化(web服務(wù)好象是基于這個(gè)的)。

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

  答:接口,是可以多繼承,類只有單繼承.接口強(qiáng)調(diào)了你必須實(shí)現(xiàn),而沒有具本實(shí)現(xiàn)的方法和虛類有點(diǎn)相似。

  15.new 關(guān)鍵字用法

  答:(1)new 運(yùn)算符 用于創(chuàng)建對(duì)象和調(diào)用構(gòu)造函數(shù)。

  (2)new 修飾符 用于向基類成員隱藏繼承成員。

  (3)new 約束 用于在泛型聲明中約束可能用作類型參數(shù)的參數(shù)的類型。

  14.DataGrid的Datasouse可以連接什么數(shù)據(jù)源

  答:DataTabe,DataView,DataSet,DataViewManager,任何實(shí)現(xiàn)IListSource接口的組件,任何實(shí)現(xiàn)IList接口的組件

  15.概述反射和序列化

  答:反射:公共語言運(yùn)行庫加載器管理應(yīng)用程序域。這種管理包括將每個(gè)程序集加載到相應(yīng)的應(yīng)用程序域以及控制每個(gè)程序集中類型層次結(jié)構(gòu)的內(nèi)存布局。程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對(duì)象。您可以使用反射動(dòng)態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對(duì)象,或從現(xiàn)有對(duì)象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性。

  序列化:序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。與序列化相對(duì)的是反序列化,它將流轉(zhuǎn)換為對(duì)象。這兩個(gè)過程結(jié)合起來,可以輕松地存儲(chǔ)和傳輸數(shù)據(jù)。

  16.概述O/R Mapping 的原理

  答:利用反射,配置將對(duì)象和數(shù)據(jù)庫表映射。

  17.可訪問性級(jí)別有哪幾種

  答:pubic 訪問不受限制。

  protected 訪問僅限于包含類或從包含類派生的類型。

  internal 訪問僅限于當(dāng)前程序集。

  protected internal 訪問僅限于從包含類派生的當(dāng)前程序集或類型。

  private 訪問僅限于包含類型。

  18.sealed修飾符有什么特點(diǎn)

  答:sealed 修飾符可以應(yīng)用于類、實(shí)例方法和屬性。

  密封類不能被繼承;

  密封方法會(huì)重寫基類中的方法,但其本身不能在任何派生類中進(jìn)一步重寫。當(dāng)應(yīng)用于方法或?qū)傩詴r(shí),sealed 修飾符必須始終與 override一起使用。

  19.列舉ADO.NET中的共享類和數(shù)據(jù)庫特定類

  答:共享類:DataSet,DataTable,DataRow,DataColumn,DataRealtion,Constraint,DataColumnMapping,DataTableMapping

  特定類:(x)Connection,(x)Command,(x)CommandBuilder,(x)DataAdapter,(x)DataReader,(x)Parameter,(x)Transaction

  20.C#中,string str = null 與 string str ="",請(qǐng)盡量用文字說明區(qū)別

  答:string str=""初始化對(duì)象分配空間,而stringstr=null初始化對(duì)象

  21.詳述.NET里class和struct的異同

  答:結(jié)構(gòu)與類共享幾乎所有相同的語法,但結(jié)構(gòu)比類受到的限制更多:盡管結(jié)構(gòu)的靜態(tài)字段可以初始化,結(jié)構(gòu)實(shí)例字段聲明還是不能使用初始值設(shè)定項(xiàng)。

  結(jié)構(gòu)不能聲明默認(rèn)構(gòu)造函數(shù)(沒有參數(shù)的構(gòu)造函數(shù))或析構(gòu)函數(shù)。

  結(jié)構(gòu)的副本由編譯器自動(dòng)創(chuàng)建和銷毀,因此不需要使用默認(rèn)構(gòu)造函數(shù)和析構(gòu)函數(shù)。實(shí)際上,編譯器通過為所有字段賦予默認(rèn)值(參見默認(rèn)值表)來實(shí)現(xiàn)默認(rèn)構(gòu)造函數(shù)。

  結(jié)構(gòu)不能從類或其他結(jié)構(gòu)繼承。

  結(jié)構(gòu)是值類型 -- 如果從結(jié)構(gòu)創(chuàng)建一個(gè)對(duì)象并將該對(duì)象賦給某個(gè)變量,變量則包含結(jié)構(gòu)的全部值。復(fù)制包含結(jié)構(gòu)的變量時(shí),將復(fù)制所有數(shù)據(jù),對(duì)新副本所做的任何修改都不會(huì)改變舊副本的數(shù)據(jù)。

  由于結(jié)構(gòu)不使用引用,因此結(jié)構(gòu)沒有標(biāo)識(shí) -- 具有相同數(shù)據(jù)的兩個(gè)值類型實(shí)例是無法區(qū)分的。C# 中的所有值類型本質(zhì)上都繼承自ValueType,后者繼承自 Object。編譯器可以在一個(gè)稱為裝箱的過程中將值類型轉(zhuǎn)換為引用類型。

  結(jié)構(gòu)具有以下特點(diǎn):

  結(jié)構(gòu)是值類型,而類是引用類型。

  向方法傳遞結(jié)構(gòu)時(shí),結(jié)構(gòu)是通過傳值方式傳遞的,而不是作為引用傳遞的。

  與類不同,結(jié)構(gòu)的實(shí)例化可以不使用 new 運(yùn)算符。

  結(jié)構(gòu)可以聲明構(gòu)造函數(shù),但它們必須帶參數(shù)。

  一個(gè)結(jié)構(gòu)不能從另一個(gè)結(jié)構(gòu)或類繼承,而且不能作為一個(gè)類的基。所有結(jié)構(gòu)都直接繼承自 System.ValueType,后者繼承自 System.Object。

  結(jié)構(gòu)可以實(shí)現(xiàn)接口。

  在結(jié)構(gòu)中初始化實(shí)例字段是錯(cuò)誤的。

  22.什么叫應(yīng)用程序域?什么是托管代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么是重載? CTS、CLS和CLR分別作何解釋?

  答:應(yīng)用程序域:應(yīng)用程序域?yàn)榘踩浴⒖煽啃?、版本控制以及卸載程序集提供了隔離邊界。應(yīng)用程序域通常由運(yùn)行庫宿主創(chuàng)建,運(yùn)行庫宿主負(fù)責(zé)在運(yùn)行應(yīng)用程序之前引導(dǎo)公共語言運(yùn)行庫。應(yīng)用程序域提供了一個(gè)更安全、用途更廣的處理單元,公共語言運(yùn)行庫可使用該單元提供應(yīng)用程序之間的隔離。

  托管代碼:使用基于公共語言運(yùn)行庫的語言編譯器開發(fā)的代碼稱為托管代碼;托管代碼具有許多優(yōu)點(diǎn),例如:跨語言集成、跨語言異常處理、增強(qiáng)的安全性、版本控制和部署支持、簡化的組件交互模型、調(diào)試和分析服務(wù)等。

  強(qiáng)類型:C# 是強(qiáng)類型語言;因此每個(gè)變量和對(duì)象都必須具有聲明類型。

  裝箱和拆箱:裝箱和拆箱使值類型能夠被視為對(duì)象。對(duì)值類型裝箱將把該值類型打包到 Object 引用類型的一個(gè)實(shí)例中。這使得值類型可以存儲(chǔ)于垃圾回收堆中。拆箱將從對(duì)象中提取值類型。

  重載:每個(gè)類型成員都有一個(gè)唯一的簽名。方法簽名由方法名稱和一個(gè)參數(shù)列表(方法的參數(shù)的順序和類型)組成。只要簽名不同,就可以在一種類型內(nèi)定義具有相同名稱的多種方法。當(dāng)定義兩種或多種具有相同名稱的方法時(shí),就稱作重載。

  CTS通用類型系統(tǒng) (common type system) :一種確定公共語言運(yùn)行庫如何定義、使用和管理類型的規(guī)范。

  CLR公共語言運(yùn)行庫:.NET Framework 提供了一個(gè)稱為公共語言運(yùn)行庫的運(yùn)行時(shí)環(huán)境,它運(yùn)行代碼并提供使開發(fā)過程更輕松的服務(wù)。

  CLS公共語言規(guī)范:要和其他對(duì)象完全交互,而不管這些對(duì)象是以何種語言實(shí)現(xiàn)的,對(duì)象必須只向調(diào)用方公開那些它們必須與之互用的所有語言的通用功能。為此定義了公共語言規(guī)范 (CLS),它是許多應(yīng)用程序所需的一套基本語言功能。

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

  答:基于值類型的變量直接包含值。將一個(gè)值類型變量賦給另一個(gè)值類型變量時(shí),將復(fù)制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復(fù)制對(duì)對(duì)象的引用,而不復(fù)制對(duì)象本身。

  所有的值類型均隱式派生自 System.ValueType。與引用類型不同,從值類型不可能派生出新的類型。但與引用類型相同的是,結(jié)構(gòu)也可以實(shí)現(xiàn)接口。

  與引用類型不同,值類型不可能包含 null 值。然而,可空類型功能允許將null 賦給值類型。 每種值類型均有一個(gè)隱式的默認(rèn)構(gòu)造函數(shù)來初始化該類型的默認(rèn)值。

  值類型主要由兩類組成:結(jié)構(gòu)、枚舉; 結(jié)構(gòu)分為以下幾類:Numeric(數(shù)值)類型、整型、浮點(diǎn)型、decimal、bool、用戶定義的結(jié)構(gòu)。

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

  24.如何理解委托

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

  25.C#中的接口和類有什么異同?

  答:異:不能直接實(shí)例化接口。

  接口不包含方法的實(shí)現(xiàn)。

  接口、類和結(jié)構(gòu)可從多個(gè)接口繼承。但是C#類只支持單繼承:類只能從一個(gè)基類繼承實(shí)現(xiàn)。類定義可在不同的源文件之間進(jìn)行拆分。

  同:接口、類和結(jié)構(gòu)可從多個(gè)接口繼承。

  接口類似于抽象基類:繼承接口的任何非抽象類型都必須實(shí)現(xiàn)接口的所有成員。

  接口可以包含事件、索引器、方法和屬性。

  26.ASP.net的身份驗(yàn)證方式有哪些?

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

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

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

  27.活動(dòng)目錄的作用

  答:Active Directory存儲(chǔ)了有關(guān)網(wǎng)絡(luò)對(duì)象的信息,并且讓管理員和用戶能夠輕松地查找和使用這些信息。

  Active Directory使用了一種結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)方式,并以此作為基礎(chǔ)對(duì)目錄信息進(jìn)行合乎邏輯的分層組織。

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

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

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

  作用: 服務(wù) URL 和命名空間 :網(wǎng)絡(luò)服務(wù)的類型(可能還包括SOAP 的函數(shù)調(diào)用,正像我所說過的,WSDL足夠自如地去描述網(wǎng)絡(luò)服務(wù)的廣泛內(nèi)容)。有效函數(shù)列表,每個(gè)函數(shù)的參數(shù),每個(gè)參數(shù)的類型 ,每個(gè)函數(shù)的返回值及其數(shù)據(jù)類型。

  29.什么是SOAP?

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

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

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

  30.如何部署一個(gè)ASP.net頁面?

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

  31.如何理解.net中的垃圾回收機(jī)制?

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

  32.概述.NET中的GC機(jī)制。

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

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

  33.ASP.NET中常見內(nèi)置對(duì)象?

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

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

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

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

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

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

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

  37.是否可以繼承String類?

  答:因?yàn)镾tring類是final類所以不可以繼承string類。

  38.當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的方法后,其它線程是否可以進(jìn)入該對(duì)象的方法?

  答:不可以,一個(gè)對(duì)象的方法只能由一個(gè)線程訪問。

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

  答:2<<3.

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

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

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

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

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

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

  43.HashMap和Hashtable區(qū)別?

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

  44.Collection和Collections的區(qū)別?

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

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

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

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

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

  答:this.server.Transfer,Querystring.

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

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

  48.Const和ReadOnly?

  答:Const用來申明編程時(shí)申明常量,ReadOnly用來申明運(yùn)行時(shí)常量。

  49.UDP和TCP連接有和異同?

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

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

  50.進(jìn)程和線程分別該怎么理解?

  答:進(jìn)程是比線程大的程序運(yùn)行單元,都是由操作系統(tǒng)所體會(huì)的系統(tǒng)運(yùn)行單元

  一個(gè)程序中至少要有一個(gè)進(jìn)程,有一個(gè)進(jìn)程中,至少要有一個(gè)線程,線程的劃分尺度要比進(jìn)程要小,進(jìn)程擁有獨(dú)立的內(nèi)存單元,線程是共享內(nèi)存,從而極大的提高了程序的運(yùn)行效率同一個(gè)進(jìn)程中的多個(gè)線程可以并發(fā)執(zhí)行。

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

  答:object。

  52.能用foreach遍歷訪問的對(duì)象需要實(shí)現(xiàn)?

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

  53.Heap與stack的差別?

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

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

  54.請(qǐng)編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty?

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

  {

  if (control isSystem.Windows.Forms.TextBox)

  {

  System.Windows.Forms.TextBox tb =(System.Windows.Forms.TextBox)control ;

  tb.Text = String.Empty ;

  }

  }

  55.請(qǐng)編程實(shí)現(xiàn)一個(gè)冒泡排序算法?

  答:int [] array= new int [*] ;

  int temp = 0 ;

  for (int i = 0 ; i < array.Length - 1 ;i++)

  {

  for (int j = i + 1 ; j < array.Length ;j++)

  {

  if (array[j] < array[i])

  {

  temp = array[i] ;

  array[i] = array[j] ;

  array[j] = temp ;

  }

  }

  }

  56.求以下表達(dá)式的值,寫出您想到的一種或幾種實(shí)現(xiàn)方法: 1-2+3-4+……+m

  答:int Num =this.TextBox1.Text.ToString() ;

  int Sum = 0 ;

  for (int i = 0 ; i < Num + 1 ; i++)

  {

  if((i%2) == 1)

  {

  Sum += i ;

  }

  else

  {

  Sum = Sum - i ;

  }

  }

  Console.WriteLine(Sum.ToString());

  Console.ReadLine() ;

  57.什么叫應(yīng)用程序域?

  答:應(yīng)用程序域可以理解為一種輕量級(jí)進(jìn)程。起到安全的作用。占用資源小。

  58.什么是受管制的代碼?

  答:unsafe:非托管代碼。不經(jīng)過CLR運(yùn)行。

  59.在.net中,配件的意思是?

  答:程序集。(中間語言,源數(shù)據(jù),資源,裝配清單)

  60.常用的調(diào)用WebService的方法有哪些?

  答:1.使用WSDL.exe命令行工具。

  2.使用VS.NET中的Add Web Reference菜單選項(xiàng)

  61. .net Remoting 的工作原理是什么?

  答:服務(wù)器端向客戶端發(fā)送一個(gè)進(jìn)程編號(hào),一個(gè)程序域編號(hào),以確定對(duì)象的位置。

  62.根據(jù)線程安全的相關(guān)知識(shí),分析以下代碼,當(dāng)調(diào)用test方法時(shí)i>10時(shí)是否會(huì)引起死鎖?并簡要說明理由。

  public void test(int i)

  {

  lock(this)

  {

  if (i>10)

  {

  i--;

  test(i);

  }

  }

  }

  答:不會(huì)發(fā)生死鎖,(但有一點(diǎn)int是按值傳遞的,所以每次改變的都只是一個(gè)副本,因此不會(huì)出現(xiàn)死鎖。但如果把int換做一個(gè)object,那么死鎖會(huì)發(fā)生)

C#面試題大全

C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • 華爾街面試犀利問題大全
    華爾街面試犀利問題大全

    面試是一種經(jīng)過組織者精心設(shè)計(jì),在特定場(chǎng)景下,以考官對(duì)考生的面對(duì)面交談與觀察為主要手段,由表及里測(cè)評(píng)考生的知識(shí)、能力、經(jīng)驗(yàn)等有關(guān)素質(zhì)的考試

  • HR犀利的經(jīng)典面試題與回答思路
    HR犀利的經(jīng)典面試題與回答思路

    面試一般是你問我問的過程,這是公司挑選職工的一種重要方法。今天小編就給大家分享一些HR的經(jīng)典面試題,希望對(duì)大家有幫助。 HR犀利面試題 1、若領(lǐng)導(dǎo)

  • 大學(xué)生學(xué)生會(huì)紀(jì)檢部面試常見問題
    大學(xué)生學(xué)生會(huì)紀(jì)檢部面試常見問題

    學(xué)生會(huì)的紀(jì)檢部是專門負(fù)責(zé)一個(gè)組織的紀(jì)律的部門,要想進(jìn)入紀(jì)檢部需要先通過面試。今天小編就給大家?guī)硪恍┘o(jì)檢部面試的常見問題以及面試技巧,大

  • 學(xué)生會(huì)紀(jì)檢部競(jìng)選演講稿3篇
    學(xué)生會(huì)紀(jì)檢部競(jìng)選演講稿3篇

    紀(jì)檢部全稱紀(jì)律檢查部。是專門負(fù)責(zé)一個(gè)組織的紀(jì)律的部門。今天小編給大家?guī)淼氖菍W(xué)生會(huì)紀(jì)檢部競(jìng)選演講稿,歡迎大家查看。 學(xué)生會(huì)紀(jì)檢部競(jìng)選演講篇

288029