.net程序員面試機(jī)試題
.net工程師在面試中,做好準(zhǔn)備很重要,了解面試題目很有必要,你知道有哪些面試機(jī)試題呢?下面小編已經(jīng)為你們整理了.net程序員面試機(jī)試題,希望可以幫到你。
.net程序員面試機(jī)試題1
1. ADO與ADO.NET簡(jiǎn)介
ADO與ADO.NET既有相似也有區(qū)別,他們都能夠編寫(xiě)對(duì)數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行訪問(wèn)和操作的應(yīng)用程序,并且易于使用、高速度、低內(nèi)存支出和占用磁盤(pán) 空間較少,支持用于建立基于客戶端/服務(wù)器和 Web 的應(yīng)用程序的主要功能。但是ADO使用OLE DB接口并基于微軟的COM技術(shù),而ADO.NET擁有自己的ADO.NET接口并且基于微軟的.NET體系架構(gòu)。眾所周知.NET體系不同于COM體 系,ADO.NET接口也就完全不同于ADO和OLE DB接口,這也就是說(shuō)ADO.NET和ADO是兩種數(shù)據(jù)訪問(wèn)方式。
2. 數(shù)據(jù)訪問(wèn)方式的歷史
下面簡(jiǎn)單的回顧一下微軟的數(shù)據(jù)訪問(wèn)方式所走過(guò)的幾個(gè)階段。
ODBC – (Open Database Connectivity)是第一個(gè)使用SQL訪問(wèn)不同關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)技術(shù)。使用ODBC應(yīng)用程序能夠通過(guò)單一的命令操縱不同的數(shù)據(jù)庫(kù),而開(kāi)發(fā)人員需要做的僅僅只是針對(duì)不同的應(yīng)用加入相應(yīng)的ODBC驅(qū)動(dòng)。
DAO - (Data Access Objects)不像ODBC那樣是面向C/C++程序員的,它是微軟提供給Visual Basic開(kāi)發(fā)人員的一種簡(jiǎn)單的數(shù)據(jù)訪問(wèn)方法,用于操縱Access數(shù)據(jù)庫(kù)。
RDO – 在使用DAO訪問(wèn)不同的關(guān)系型數(shù)據(jù)庫(kù)的時(shí)候,Jet引擎不得不在DAO和ODBC之間進(jìn)行命令的轉(zhuǎn)化,導(dǎo)致了性能的下降,而RDO(Remote Data Objects)的出現(xiàn)就順理成章了。
OLE DB – 隨著越來(lái)越多的數(shù)據(jù)以非關(guān)系型格式存儲(chǔ),需要一種新的架構(gòu)來(lái)提供這種應(yīng)用和數(shù)據(jù)源之間的無(wú)縫連接,基于COM(Component Object Model)的OLE DB應(yīng)運(yùn)而生了。
ADO – 基于OLE DB之上的ADO更簡(jiǎn)單、更高級(jí)、更適合Visual Basic程序員,同時(shí)消除了OLE DB的多種弊端,取而代之是微軟技術(shù)發(fā)展的趨勢(shì)。
3. ADO與ADO.NET對(duì)照
在開(kāi)始設(shè)計(jì).NET體系架構(gòu)時(shí),微軟就決定重新設(shè)計(jì)數(shù)據(jù)訪問(wèn)模型,以便能夠完全的基于XML和離線計(jì)算模型。兩者的區(qū)別主要有:
ADO以Recordset存儲(chǔ),而ADO.NET則以DataSet表示。Recordset看起來(lái)更像單表,如果讓Recordset以多表的方式 表示就必須在SQL中進(jìn)行多表連接。反之,DataSet可以是多個(gè)表的集合。ADO 的運(yùn)作是一種在線方式,這意味著不論是瀏覽或更新數(shù)據(jù)都必須是實(shí)時(shí)的。ADO.NET則使用離線方式,在訪問(wèn)數(shù)據(jù)的時(shí)候ADO.NET會(huì)利用XML制作數(shù) 據(jù)的一份幅本,ADO.NET的數(shù)據(jù)庫(kù)連接也只有在這段時(shí)間需要在線。
由于ADO使用COM技術(shù),這就要求所使用的數(shù)據(jù)類(lèi)型必須符合COM規(guī)范,而ADO.NET基于XML格式,數(shù)據(jù)類(lèi)型更為豐富并且不需要再做COM編排導(dǎo)致的數(shù)據(jù)類(lèi)型轉(zhuǎn)換,從而提高了整體性能。
.net程序員面試機(jī)試題2
1.重載(Overload )和覆寫(xiě)(override)的區(qū)別
答:
方法重載:當(dāng)類(lèi)包含兩個(gè)名稱(chēng)相同但簽名不同(方法名相同,參數(shù)列表不相同)的方法時(shí)發(fā)生方法重載。用方法重載來(lái)提供在語(yǔ)義上完成相同而功能不同的方法。
覆寫(xiě):在類(lèi)的繼承中使用,通過(guò)覆寫(xiě)子類(lèi)方法可以改變父類(lèi)虛方法的實(shí)現(xiàn)。
2.接口與繼承的區(qū)別?什么時(shí)候使用接口,什么時(shí)候使用繼承?
答:
(1) 接口定義一個(gè)類(lèi)型需要實(shí)現(xiàn)的方法,屬性,索引和事件,包括可能的參數(shù)類(lèi)型和返回值類(lèi)型,而把具體的實(shí)現(xiàn)交由相應(yīng)的類(lèi)或結(jié)構(gòu)來(lái)做,從而為組件提供多態(tài)能力。
(2) 繼承常用于在一個(gè)現(xiàn)有父類(lèi)的基礎(chǔ)上的功能擴(kuò)展,往往是我們將幾個(gè)類(lèi)中相同的成員提取出來(lái)放在父類(lèi)中實(shí)現(xiàn),然后在各自的子類(lèi)中加以繼承。
(3) 接口可以實(shí)現(xiàn)多接口繼重,而繼承只能實(shí)現(xiàn)單繼承。
(4) 實(shí)現(xiàn)繼承可繼承父類(lèi)型的實(shí)現(xiàn),由于接口中沒(méi)有定義方法的實(shí)現(xiàn),因此必須實(shí)現(xiàn)繼承后該接口的所有方法。
(5) 為父類(lèi)型添加方法可能不影響使用繼承自該類(lèi)型實(shí)現(xiàn)的用戶,而為接口添加方法導(dǎo)致用戶必須為新方法添加實(shí)現(xiàn)。
(6) 當(dāng)派生類(lèi)和基類(lèi)是is-a的關(guān)系是使用"繼承",典型案例"蘋(píng)果 is-a 水果",存在can-do的關(guān)系時(shí)使用"接口"
3.ado,ado.net的區(qū)別
答:
您可以通過(guò)將 ADO.NET 的各項(xiàng)功能與 ActiveX 數(shù)據(jù)對(duì)象 (ADO) 的特定功能進(jìn)行比較來(lái)理解 ADO.NET 的功能。
數(shù)據(jù)的內(nèi)存中表示形式
在 ADO 中,數(shù)據(jù)的內(nèi)存中表示形式為記錄集。在 ADO.NET 中,它為數(shù)據(jù)集。它們之間有重要的差異。
表的個(gè)數(shù)
記錄集看起來(lái)像單個(gè)表。如果記錄集將包含來(lái)自多個(gè)數(shù)據(jù)庫(kù)表的數(shù)據(jù),則它必須使用 JOIN 查詢,將來(lái)自各個(gè)數(shù)據(jù)庫(kù)表的數(shù)據(jù)組合到單個(gè)結(jié)果表中。
.net程序員面試機(jī)試題3
1. 簡(jiǎn)要說(shuō)一下.Net的編譯過(guò)程.
ASP.NET 必須首先將代碼編譯成一個(gè)或多個(gè)程序集。 程序集即文件擴(kuò)展名為 .dll 的文件。 您可以采用多種不同的語(yǔ)言來(lái)編寫(xiě) ASP.NET 代碼,如 Visual Basic、C#、J# 和其他語(yǔ)言。 當(dāng)在編譯代碼時(shí),會(huì)將代碼翻譯成一種名為 Microsoft 中間語(yǔ)言 (MSIL) 的與語(yǔ)言和 CPU 無(wú)關(guān)的表示形式。 運(yùn)行時(shí),MSIL 將運(yùn)行在 .NET Framework 的上下文中,.NET Framework 會(huì)將 MSIL 翻譯成 CPU 特定的指令,以便計(jì)算機(jī)上的處理器運(yùn)行應(yīng)用程序。
2. ASP.NET與ASP的區(qū)別
01.開(kāi)發(fā)語(yǔ)言不同
ASP僅局限于使用non-type腳本語(yǔ)言來(lái)開(kāi)發(fā),用戶給WEB頁(yè)中添加ASP代碼的方法與客戶端腳本中添加代碼的方法相同,導(dǎo)致代碼雜亂。
ASP.NET允許用戶選擇并使用功能完善的strongly-type編程語(yǔ)言,也允許使用潛加巨大的.NET Framework。
02.運(yùn)行機(jī)制不同
ASP是解釋運(yùn)行的編程框架,所以執(zhí)行效率加較低。
ASP.NET是編譯性的編程框架,運(yùn)行是服務(wù)器上的編譯好的公共語(yǔ)言運(yùn)行時(shí)庫(kù)代碼,可以利用早期綁定,實(shí)施編譯來(lái)提高效率。
03.開(kāi)發(fā)方式
ASP把界面設(shè)計(jì)和程序設(shè)計(jì)混在一起,維護(hù)和重用困難。
ASP.NET把界面設(shè)計(jì)和程序設(shè)計(jì)以不同的文件分離開(kāi),復(fù)用性和維護(hù)性得到了提高。
3. 談一下ASP.NET頁(yè)面生命周期
ASP.NET 頁(yè)運(yùn)行時(shí),此頁(yè)將經(jīng)歷一個(gè)生命周期,在生命周期中將執(zhí)行一系列處理步驟。這些步驟包括初始化、實(shí)例化控件、還原和維護(hù)狀態(tài)、運(yùn)行事件處理程序代碼以及進(jìn)行呈現(xiàn)。了解頁(yè)生命周期非常重要,因?yàn)檫@樣做您就能在生命周期的合適階段編寫(xiě)代碼,以達(dá)到預(yù)期效果。此外,如果您要開(kāi)發(fā)自定義控件,就必須熟悉頁(yè)生命周期,以便正確進(jìn)行控件初始化,使用視圖狀態(tài)數(shù)據(jù)填充控件屬性以及運(yùn)行任何控件行為代碼。(控件的生命周期基于頁(yè)的生命周期,但是頁(yè)引發(fā)的控件事件比單獨(dú)的 ASP.NET 頁(yè)中可用的事件多。)
4. ASP.NET程序的運(yùn)行機(jī)制。可以從一個(gè)頁(yè)面的請(qǐng)求到返回的角度談
ASP.NET 頁(yè)運(yùn)行時(shí),此頁(yè)將經(jīng)歷一個(gè)生命周期,在生命周期中將執(zhí)行一系列處理步驟。 這些步驟包括初始化、實(shí)例化控件、還原和維護(hù)狀態(tài)、運(yùn)行事件處理程序代碼以及進(jìn)行呈現(xiàn)。 了解頁(yè)生命周期非常重要,因?yàn)檫@樣做您就能在生命周期的合適階段編寫(xiě)代碼,以達(dá)到預(yù)期效果。
看了“.net程序員面試機(jī)試題”