C#面試題大全
C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。
今天學習啦小編要與大家分享的是:C#面試題大全;內(nèi)容僅供閱讀參考,希望對大家有所幫助;
C#面試題
1.維護數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務邏輯?為什么?
答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實現(xiàn),這種方式的效率最好;其次用觸發(fā)器,這種方式可以保證無論何種業(yè)務系統(tǒng)訪問數(shù)據(jù)庫都能維持數(shù)據(jù)庫的完整性、一致性;最后再考慮用自寫業(yè)務邏輯實現(xiàn),但這種方式效率最低、編程最復雜,當為下下之策。
2.什么是事務?什么是鎖?
答:事務是指一個工作單元,它包含了一組數(shù)據(jù)操作命令,并且所有的命令作為一個整體一起向系統(tǒng)提交或撤消請求操作,即這組命令要么都執(zhí)行,要么都不執(zhí)行。
鎖是在多用戶環(huán)境中對數(shù)據(jù)的訪問的限制。SqlServer自動鎖定特定記錄、字段或文件,防止用戶訪問,以維護數(shù)據(jù)安全或防止并發(fā)數(shù)據(jù)操作問題,鎖可以保證事務的完整性和并發(fā)性。
3.什么是索引,有什么優(yōu)點?
答:索引象書的目錄類似,索引使數(shù)據(jù)庫程序無需掃描整個表,就可以在其中找到所需要的數(shù)據(jù),索引包含了一個表中包含值的列表,其中包含了各個值的行所存儲的位置,索引可以是單個或一組列,索引提供的表中數(shù)據(jù)的邏輯位置,合理劃分索引能夠大大提高數(shù)據(jù)庫性能。
4.視圖是什么?游標是什么?
答:視圖是一種虛擬表,虛擬表具有和物理表相同的功能,可以對虛擬表進行增該查操作;
視圖通常是一個或多個表的行或列的子集;
視圖的結(jié)果更容易理解(修改視圖對基表不影響),獲取數(shù)據(jù)更容易(相比多表查詢更方便),限制數(shù)據(jù)檢索(比如需要隱藏某些行或列),維護更方便。
游標對查詢出來的結(jié)果集作為一個單元來有效的處理,游標可以定位在結(jié)果集的特定行、從結(jié)果集的當前位置檢索一行或多行、可以對結(jié)果集中當前位置進行修改、
5.什么是存儲過程?有什么優(yōu)點?
答:存儲過程是一組予編譯的SQL語句
它的優(yōu)點:1.允許模塊化程序設(shè)計,就是說只需要創(chuàng)建一次過程,以后在程序中就可以調(diào)用該過程任意次。
2.允許更快執(zhí)行,如果某操作需要執(zhí)行大量SQL語句或重復執(zhí)行,存儲過程比SQL語句執(zhí)行的要快。
3.減少網(wǎng)絡流量,例如一個需要數(shù)百行的SQL代碼的操作有一條執(zhí)行語句完成,不需要在網(wǎng)絡中發(fā)送數(shù)百行代碼。
4.更好的安全機制,對于沒有權(quán)限執(zhí)行存儲過程的用戶,也可授權(quán)他們執(zhí)行存儲過程。
6.什么是觸發(fā)器?
答:觸發(fā)器是一種特殊類型的存儲過程,出發(fā)器主要通過事件觸發(fā)而被執(zhí)行的,
觸發(fā)器的優(yōu)點:1.強化約束,觸發(fā)器能夠提供比CHECK約束;
2.跟蹤變化,觸發(fā)器可以跟蹤數(shù)據(jù)庫內(nèi)的操作,從而不允許未經(jīng)允許許可的更新和變化;
3.聯(lián)級運算,比如某個表上的觸發(fā)器中包含對另一個表的數(shù)據(jù)操作,而該操作又導致該表上的觸發(fā)器被觸發(fā)
7.簡單介紹下ADO.NET和ADO主要有什么改進?
答:ADO以Recordset存儲,而ADO.NET則以DataSet表示,ADO.NET提供了數(shù)據(jù)集和數(shù)據(jù)適配器,有利于實現(xiàn)分布式處理,降低了對數(shù)據(jù)庫服務器資源的消耗。
7.1 ASP.NET與ASP相比,主要有哪些進步?
答:ASP.NET實現(xiàn)了面向?qū)ο缶幊?,預編譯的服務器端代碼而不像ASP那樣解釋執(zhí)行提高了性能,代碼分離易于管理,可訂制和擴展性,功能強大的開發(fā)工作,更好的安全機制。
7.2 C#中的委托是什么?事件是不是一種委托?
答:委托本質(zhì)上是一種“方法接口”,它相當于C/C++中的函數(shù)指針,當然它比函數(shù)指針安全,在C#中通常用于事件處理。事件不是委托,不過由于事件的性質(zhì)決定了處理它的程序邏輯能訪問的參數(shù),因此,在C#中處理事件的邏輯都包裝為委托。
8.如何把一個array復制到arrayist里
答:foreach( object arr in array)arrayist.Add(arr);
8.1 列舉ADO.NET中的五個主要對象,并簡單描述
答:Connection連接對象,Command執(zhí)行命令和存儲過程,DataReader向前只讀的數(shù)據(jù)流,DataAdapter適配器,支持增刪查詢,DataSet數(shù)據(jù)級對象,相當與內(nèi)存里的一張或多張表。
9.概述三層結(jié)構(gòu)體系
答:表示層(UI),業(yè)務邏輯層(BLL),數(shù)據(jù)訪問層(DAL)
10.什么是裝箱和拆箱?什么是重載?
答:裝箱就是把值類型轉(zhuǎn)成引用類型,拆箱相反把引用轉(zhuǎn)換成值類型。
重載就是指一個方法名相同,參數(shù)個數(shù)不相同,返回值可以相同的方法。
11.簡述WebService
答:WebService服務可以描述為可以在web上部署并可以被任何應用程序或其他服務調(diào)用的功能。所謂服務就是系統(tǒng)提供一組接口,并通過接口使用系統(tǒng)提供的功能,WebService服務可以提供任何企業(yè)到客戶,企業(yè)到企業(yè),點對點或部門對部門通訊所需的服務,比如一個公司可以通過網(wǎng)絡連接到另一個公司的服務,從而直接傳遞訂購單。
12.面向?qū)ο蟮乃枷胫饕ㄊ裁?
答:繼承、封裝、多態(tài)
13.列舉一下你所了解的XM技術(shù)及其應用
答:xml可以用來做網(wǎng)頁(xslt)、可以當作數(shù)據(jù)庫、可以用來保存對象的系列化(web服務好象是基于這個的)。
14.C#中的接口和類有什么異同。
答:接口,是可以多繼承,類只有單繼承.接口強調(diào)了你必須實現(xiàn),而沒有具本實現(xiàn)的方法和虛類有點相似。
15.new 關(guān)鍵字用法
答:(1)new 運算符 用于創(chuàng)建對象和調(diào)用構(gòu)造函數(shù)。
(2)new 修飾符 用于向基類成員隱藏繼承成員。
(3)new 約束 用于在泛型聲明中約束可能用作類型參數(shù)的參數(shù)的類型。
14.DataGrid的Datasouse可以連接什么數(shù)據(jù)源
答:DataTabe,DataView,DataSet,DataViewManager,任何實現(xiàn)IListSource接口的組件,任何實現(xiàn)IList接口的組件
15.概述反射和序列化
答:反射:公共語言運行庫加載器管理應用程序域。這種管理包括將每個程序集加載到相應的應用程序域以及控制每個程序集中類型層次結(jié)構(gòu)的內(nèi)存布局。程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態(tài)地創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性。
序列化:序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的是反序列化,它將流轉(zhuǎn)換為對象。這兩個過程結(jié)合起來,可以輕松地存儲和傳輸數(shù)據(jù)。
16.概述O/R Mapping 的原理
答:利用反射,配置將對象和數(shù)據(jù)庫表映射。
17.可訪問性級別有哪幾種
答:pubic 訪問不受限制。
protected 訪問僅限于包含類或從包含類派生的類型。
internal 訪問僅限于當前程序集。
protected internal 訪問僅限于從包含類派生的當前程序集或類型。
private 訪問僅限于包含類型。
18.sealed修飾符有什么特點
答:sealed 修飾符可以應用于類、實例方法和屬性。
密封類不能被繼承;
密封方法會重寫基類中的方法,但其本身不能在任何派生類中進一步重寫。當應用于方法或?qū)傩詴r,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ū)別
答:string str=""初始化對象分配空間,而stringstr=null初始化對象
21.詳述.NET里class和struct的異同
答:結(jié)構(gòu)與類共享幾乎所有相同的語法,但結(jié)構(gòu)比類受到的限制更多:盡管結(jié)構(gòu)的靜態(tài)字段可以初始化,結(jié)構(gòu)實例字段聲明還是不能使用初始值設(shè)定項。
結(jié)構(gòu)不能聲明默認構(gòu)造函數(shù)(沒有參數(shù)的構(gòu)造函數(shù))或析構(gòu)函數(shù)。
結(jié)構(gòu)的副本由編譯器自動創(chuàng)建和銷毀,因此不需要使用默認構(gòu)造函數(shù)和析構(gòu)函數(shù)。實際上,編譯器通過為所有字段賦予默認值(參見默認值表)來實現(xiàn)默認構(gòu)造函數(shù)。
結(jié)構(gòu)不能從類或其他結(jié)構(gòu)繼承。
結(jié)構(gòu)是值類型 -- 如果從結(jié)構(gòu)創(chuàng)建一個對象并將該對象賦給某個變量,變量則包含結(jié)構(gòu)的全部值。復制包含結(jié)構(gòu)的變量時,將復制所有數(shù)據(jù),對新副本所做的任何修改都不會改變舊副本的數(shù)據(jù)。
由于結(jié)構(gòu)不使用引用,因此結(jié)構(gòu)沒有標識 -- 具有相同數(shù)據(jù)的兩個值類型實例是無法區(qū)分的。C# 中的所有值類型本質(zhì)上都繼承自ValueType,后者繼承自 Object。編譯器可以在一個稱為裝箱的過程中將值類型轉(zhuǎn)換為引用類型。
結(jié)構(gòu)具有以下特點:
結(jié)構(gòu)是值類型,而類是引用類型。
向方法傳遞結(jié)構(gòu)時,結(jié)構(gòu)是通過傳值方式傳遞的,而不是作為引用傳遞的。
與類不同,結(jié)構(gòu)的實例化可以不使用 new 運算符。
結(jié)構(gòu)可以聲明構(gòu)造函數(shù),但它們必須帶參數(shù)。
一個結(jié)構(gòu)不能從另一個結(jié)構(gòu)或類繼承,而且不能作為一個類的基。所有結(jié)構(gòu)都直接繼承自 System.ValueType,后者繼承自 System.Object。
結(jié)構(gòu)可以實現(xiàn)接口。
在結(jié)構(gòu)中初始化實例字段是錯誤的。
22.什么叫應用程序域?什么是托管代碼?什么是強類型系統(tǒng)?什么是裝箱和拆箱?什么是重載? CTS、CLS和CLR分別作何解釋?
答:應用程序域:應用程序域為安全性、可靠性、版本控制以及卸載程序集提供了隔離邊界。應用程序域通常由運行庫宿主創(chuàng)建,運行庫宿主負責在運行應用程序之前引導公共語言運行庫。應用程序域提供了一個更安全、用途更廣的處理單元,公共語言運行庫可使用該單元提供應用程序之間的隔離。
托管代碼:使用基于公共語言運行庫的語言編譯器開發(fā)的代碼稱為托管代碼;托管代碼具有許多優(yōu)點,例如:跨語言集成、跨語言異常處理、增強的安全性、版本控制和部署支持、簡化的組件交互模型、調(diào)試和分析服務等。
強類型:C# 是強類型語言;因此每個變量和對象都必須具有聲明類型。
裝箱和拆箱:裝箱和拆箱使值類型能夠被視為對象。對值類型裝箱將把該值類型打包到 Object 引用類型的一個實例中。這使得值類型可以存儲于垃圾回收堆中。拆箱將從對象中提取值類型。
重載:每個類型成員都有一個唯一的簽名。方法簽名由方法名稱和一個參數(shù)列表(方法的參數(shù)的順序和類型)組成。只要簽名不同,就可以在一種類型內(nèi)定義具有相同名稱的多種方法。當定義兩種或多種具有相同名稱的方法時,就稱作重載。
CTS通用類型系統(tǒng) (common type system) :一種確定公共語言運行庫如何定義、使用和管理類型的規(guī)范。
CLR公共語言運行庫:.NET Framework 提供了一個稱為公共語言運行庫的運行時環(huán)境,它運行代碼并提供使開發(fā)過程更輕松的服務。
CLS公共語言規(guī)范:要和其他對象完全交互,而不管這些對象是以何種語言實現(xiàn)的,對象必須只向調(diào)用方公開那些它們必須與之互用的所有語言的通用功能。為此定義了公共語言規(guī)范 (CLS),它是許多應用程序所需的一套基本語言功能。
23.值類型和引用類型的區(qū)別?
答:基于值類型的變量直接包含值。將一個值類型變量賦給另一個值類型變量時,將復制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復制對對象的引用,而不復制對象本身。
所有的值類型均隱式派生自 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
24.如何理解委托
答:委托類似于 C++ 函數(shù)指針,但它是類型安全的。委托允許將方法作為參數(shù)進行傳遞。委托可用于定義回調(diào)方法。委托可以鏈接在一起;例如,可以對一個事件調(diào)用多個方法。方法不需要與委托簽名精確匹配。有關(guān)更多信息,請參見協(xié)變和逆變。C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨定義的方法。
25.C#中的接口和類有什么異同?
答:異:不能直接實例化接口。
接口不包含方法的實現(xiàn)。
接口、類和結(jié)構(gòu)可從多個接口繼承。但是C#類只支持單繼承:類只能從一個基類繼承實現(xiàn)。類定義可在不同的源文件之間進行拆分。
同:接口、類和結(jié)構(gòu)可從多個接口繼承。
接口類似于抽象基類:繼承接口的任何非抽象類型都必須實現(xiàn)接口的所有成員。
接口可以包含事件、索引器、方法和屬性。
26.ASP.net的身份驗證方式有哪些?
答:Windows 身份驗證提供程序:提供有關(guān)如何將Windows 身份驗證與Microsoft Internet 信息服務 (IIS) 身份驗證結(jié)合使用來確保 ASP.NET 應用程序安全的信息。
Forms 身份驗證提供程序:提供有關(guān)如何使用您自己的代碼創(chuàng)建應用程序特定的登錄窗體并執(zhí)行身份驗證的信息。使用 Forms 身份驗證的一種簡便方法是使用 ASP.NET 成員資格和 ASP.NET 登錄控件,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據(jù)的方法。
Passport 身份驗證提供程序:提供有關(guān)由Microsoft 提供的集中身份驗證服務的信息,該服務為成員站點提供單一登錄和核心配置
27.活動目錄的作用
答:Active Directory存儲了有關(guān)網(wǎng)絡對象的信息,并且讓管理員和用戶能夠輕松地查找和使用這些信息。
Active Directory使用了一種結(jié)構(gòu)化的數(shù)據(jù)存儲方式,并以此作為基礎(chǔ)對目錄信息進行合乎邏輯的分層組織。
28.解釋一下UDDI、WSDL的意義及其作用
答:UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議(UDDI, Universa Description, Discovery and Integration)是一套基于Web的、分布式的、為Web服務提供的信息注冊中心的實現(xiàn)標準規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web服務注冊以使得別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標準。UDDI 提供了一組基于標準的規(guī)范用于描述和發(fā)現(xiàn)服務,還提供了一組基于因特網(wǎng)的實現(xiàn)。
WSDL:WSDL描述Web服務的公共接口。這是一個基于XML的關(guān)于如何與Web服務通訊和使用的服務描述;
作用: 服務 URL 和命名空間 :網(wǎng)絡服務的類型(可能還包括SOAP 的函數(shù)調(diào)用,正像我所說過的,WSDL足夠自如地去描述網(wǎng)絡服務的廣泛內(nèi)容)。有效函數(shù)列表,每個函數(shù)的參數(shù),每個參數(shù)的類型 ,每個函數(shù)的返回值及其數(shù)據(jù)類型。
29.什么是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)絡協(xié)議使用,3) 獨立于編程模型。
30.如何部署一個ASP.net頁面?
答:VS 2005和VS 2003都有發(fā)布機制。2003可以發(fā)布然后再復制部署。VS2005基本上可以直接部署到對應位置。
31.如何理解.net中的垃圾回收機制?
答:.NETFramework 的垃圾回收器管理應用程序的內(nèi)存分配和釋放。每次您使用 new 運算符創(chuàng)建對象時,運行庫都從托管堆為該對象分配內(nèi)存。只要托管堆中有地址空間可用,運行庫就會繼續(xù)為新對象分配空間。但是,內(nèi)存不是無限大的。最終,垃圾回收器必須執(zhí)行回收以釋放一些內(nèi)存。垃圾回收器優(yōu)化引擎根據(jù)正在進行的分配情況確定執(zhí)行回收的最佳時間。當垃圾回收器執(zhí)行回收時,它檢查托管堆中不再被應用程序使用的對象并執(zhí)行必要的操作來回收它們占用的內(nèi)存。
32.概述.NET中的GC機制。
答:GC的全稱是garbage collection,中文名稱垃圾回收,是.NET中對內(nèi)存管理的一種功能。垃圾回收器跟蹤并回收托管內(nèi)存中分配的對象,定期執(zhí)行垃圾回收以回收分配給沒有有效引用的對象的內(nèi)存。當使用可用內(nèi)存不能滿足內(nèi)存請求時,GC會自動進行。
在進行垃圾回收時,垃圾回收器會首先搜索內(nèi)存中的托管對象,然后從托管代碼中搜索被引用的對象并標記為有效,接著釋放沒有被標記為有效的對象并收回內(nèi)存,最后整理內(nèi)存將有效對象挪動到一起
33.ASP.NET中常見內(nèi)置對象?
答:Response、Request、Server、Session、Application、Cookie
34.死鎖的必要條件?怎么克服?
答:系統(tǒng)的資源不足,進程的推進的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,進程獲得資源時,未使用完前,不能強行剝奪。
35.接口是否可以繼承接口?抽象類是否可以實現(xiàn)接口?抽象類是否可以繼承實體類?
答:接口是可以繼承接口的,抽象類是可以實現(xiàn)接口的,抽象類可以繼承實體類,但是有個條件,條件是,實體類必須要有明確的構(gòu)造函數(shù)。
36.構(gòu)造器Constructor是否可以被繼承?是否可以被Override?
答:Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading).
37.是否可以繼承String類?
答:因為String類是final類所以不可以繼承string類。
38.當一個線程進入一個對象的方法后,其它線程是否可以進入該對象的方法?
答:不可以,一個對象的方法只能由一個線程訪問。
39.用最有效的方法算出2乘以8等于幾?
答:2<<3.
40.C#是否可以對內(nèi)存直接進行操作?
答:C#是可以對內(nèi)存進行直接操作的,雖然很少用到指針,但是C#是可以使用指針的,在用的時候需要在前邊加unsafe,,在.net中使用了垃圾回收機制(GC)功能,它替代了程序員,不過在C#中不可以直接使用finalize方法,而是在析構(gòu)函數(shù)中調(diào)用基類的finalize()方法。
41.數(shù)組有沒有Length()這和方法?string有沒有這個方法?
答:數(shù)組中沒有這個方法,但有這個屬性,string中有這個方法。
42.Error和Exception有是區(qū)別?
答:error表示恢復不是不可能,但是很困難,exception表示一種實際或?qū)崿F(xiàn)問題,它表示程序運行正常不可以發(fā)生的。
43.HashMap和Hashtable區(qū)別?
答:HashMap是Hashtable的輕量級實現(xiàn),非線程安全的實現(xiàn)他們都實現(xiàn)了map接口,主要區(qū)別是HashMap鍵值可以為空null,效率可以高于Hashtable。
44.Collection和Collections的區(qū)別?
答:Collection是集合類的上級接口,Collections是針對集合類的一個幫助類,它提供一系列靜態(tài)方法來實現(xiàn)對各種集合的搜索,排序,線程安全化操作。
45.Override, Overload,的區(qū)別?
答:Override是重寫的意思,它表示重寫基類的方法,而且方法的名稱,返回類型,參數(shù)類型,參數(shù)個數(shù)要與基類相同。
Overload是重載是意思,它也表示重寫基類的方法,但是只要方法名相同,別的可以不同。
46.在一個BS結(jié)構(gòu)中需要傳遞變量值時,不能使用session,cookie,application,你有幾中方法?
答:this.server.Transfer,Querystring.
47.C#種索引器實現(xiàn)過程,是否只能根據(jù)數(shù)字索引?
答:不是的,可以是任意類型。
48.Const和ReadOnly?
答:Const用來申明編程時申明常量,ReadOnly用來申明運行時常量。
49.UDP和TCP連接有和異同?
答:TCP是傳輸控制協(xié)議,提供的是面向連接的,是可靠的,字節(jié)流服務,當用戶和服務器彼此進行數(shù)據(jù)交互的時候,必須在他們數(shù)據(jù)交互前要進行TCP連接之后才能傳輸數(shù)據(jù)。TCP提供超時重撥,檢驗數(shù)據(jù)功能。
UDP是用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報的傳輸協(xié)議,是不可靠的連接。
50.進程和線程分別該怎么理解?
答:進程是比線程大的程序運行單元,都是由操作系統(tǒng)所體會的系統(tǒng)運行單元
一個程序中至少要有一個進程,有一個進程中,至少要有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內(nèi)存單元,線程是共享內(nèi)存,從而極大的提高了程序的運行效率同一個進程中的多個線程可以并發(fā)執(zhí)行。
51.在.NET中所有類的基類是?
答:object。
52.能用foreach遍歷訪問的對象需要實現(xiàn)?
答:需要實現(xiàn)IEnumerable接口和GetEnumerator()方法。
53.Heap與stack的差別?
答:Heap是堆,空間是由手動操作分配和釋放的,它的存儲區(qū)很大的自由存儲區(qū)。
Stack是棧,是由是操作系統(tǒng)自動分配和釋放的,棧上的空間是有限的。程序在編譯期間變量和函數(shù)分配內(nèi)存都是在棧上進行的,且在運行時函數(shù)調(diào)用時的參數(shù)的傳遞也是在棧上進行的。
54.請編程遍歷頁面上所有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.請編程實現(xiàn)一個冒泡排序算法?
答: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.求以下表達式的值,寫出您想到的一種或幾種實現(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.什么叫應用程序域?
答:應用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小。
58.什么是受管制的代碼?
答:unsafe:非托管代碼。不經(jīng)過CLR運行。
59.在.net中,配件的意思是?
答:程序集。(中間語言,源數(shù)據(jù),資源,裝配清單)
60.常用的調(diào)用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項
61. .net Remoting 的工作原理是什么?
答:服務器端向客戶端發(fā)送一個進程編號,一個程序域編號,以確定對象的位置。
62.根據(jù)線程安全的相關(guān)知識,分析以下代碼,當調(diào)用test方法時i>10時是否會引起死鎖?并簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發(fā)生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現(xiàn)死鎖。但如果把int換做一個object,那么死鎖會發(fā)生)
C#面試題大全
上一篇:大學生學生會紀檢部面試常見問題
下一篇:C#習題大全