這篇“.net常見面試題有哪些”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“.net常見面試題有哪些”文章吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、普寧網(wǎng)站維護(hù)、網(wǎng)站推廣。1.什么是.NET?什么是CLI?什么是CLR?IL是什么?
(1).net用于代碼編譯和執(zhí)行的集成托管環(huán)境,換句話,它管理應(yīng)用程序運(yùn)行的方方面面,包括首次運(yùn)行的編譯,為程序分配內(nèi)存
存儲數(shù)據(jù)和指令,對于應(yīng)用程序授予或拒絕相應(yīng)的權(quán)限,并啟動管理應(yīng)用程序的執(zhí)行,剩余內(nèi)存的在分配。由于所有.net應(yīng)用程序
都是在.net framework上面執(zhí)行,所以開發(fā)人員只需考慮與.net framework打交道,而不必關(guān)系和底層操作系統(tǒng)上面的實(shí)現(xiàn)
包括CLR和BCL
(2).CLI(common language infrastructure)公共語言基礎(chǔ)結(jié)構(gòu),一項(xiàng)國際性的標(biāo)準(zhǔn),沒有規(guī)定標(biāo)準(zhǔn)具體如何實(shí)現(xiàn)。相反,它描述了一個
CLI平臺在符合標(biāo)準(zhǔn)的前提下應(yīng)該具有什么行為。包含了:運(yùn)行時(CLR),公共中間語言(CIL),公共類型系統(tǒng)(CTS),
公共語言規(guī)范(CLS),元數(shù)據(jù)(Metadata),框架(framework)
(3)CLR:公共語言運(yùn)行時,負(fù)責(zé)加載和運(yùn)行程序 IL:中間語言,C#編譯器將C#代碼轉(zhuǎn)換成IL,運(yùn)行時能夠理解IL,并編譯成機(jī)器碼
2.JIT是什么,它是如何工作的?GC是什么,簡述一下GC的工作方式?
JIT:Just in time,C#或者是VB.NET的代碼首先被編譯為IL存儲在本地,當(dāng)要運(yùn)行這些代碼的時候,CLR對IL進(jìn)行第二次編譯轉(zhuǎn)換成機(jī)器碼運(yùn)行。好處:可移植性,而且IL在加載到內(nèi)存中時將受到類型安全性方面檢查,這實(shí)現(xiàn)了更好的安全性和可靠性。
GC:垃圾回收(garbage collection),是根據(jù)程序的需要自動分配和回收內(nèi)存的過程。垃圾回收器處理的是引用對象,而且只回收堆上的內(nèi)存。這意味著假如維持對一個對象的引用,就會阻止GC重用對象使用的內(nèi)存。在.NET中,垃圾回收器采用的是mark-and-compact算法。在一次垃圾回收周期開始的時候,它要識別對象的所有跟引用,根據(jù)這個引用可以遍歷每個根引用所標(biāo)識的一個樹形結(jié)構(gòu),并遞歸確定所有引用指向的對象。這樣一來,垃圾回收器就可以識別所有可達(dá)的對象,在執(zhí)行回收的時候,GC不是枚舉所有訪問不到的對象,相反,通過壓縮所有相鄰的可達(dá)的對象來執(zhí)行垃圾回收。不可訪問的對象就會被覆蓋。垃圾回收的宗旨是提高內(nèi)存的利用率,它并不是用來清理文件句柄,和數(shù)據(jù)庫連接字符串,端口或者其他有限的資源(終接器finalizer,不能被顯示調(diào)用,不能傳遞任何參數(shù),即不能被重載,只有垃圾回收器才能調(diào)用終接器,使用Using語句進(jìn)行確定性終結(jié)
3.類(class)和結(jié)構(gòu)(struct)的區(qū)別是什么?它們對性能有影響嗎?
1. 值類型與引用類型
結(jié)構(gòu)是值類型:值類型在棧上分配地址,所有的基類型都是結(jié)構(gòu)類型,例如:int 對應(yīng)System.int32 結(jié)構(gòu),通過使用結(jié)構(gòu)可以創(chuàng)建更多的值類型
類是引用類型:引用類型在堆上分配地址堆棧的執(zhí)行效率要比堆的執(zhí)行效率高,可是堆棧的資源有限,不適合處理大的邏輯復(fù)雜的對象。所以結(jié)構(gòu)處理作為基類型對待的小對象,而類處理某個商業(yè)邏輯因?yàn)榻Y(jié)構(gòu)是值類型所以結(jié)構(gòu)之間的賦值可以創(chuàng)建新的結(jié)構(gòu),而類是引用類型,類之間的賦值只是復(fù)制引用
注:1.雖然結(jié)構(gòu)與類的類型不一樣,可是他們的基類型都是對象(object),c#中所有類型的基類型都是object
2.雖然結(jié)構(gòu)的初始化也使用了New 操作符可是結(jié)構(gòu)對象依然分配在堆棧上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段將保持未賦值狀態(tài),且對象不可用
2.繼承性
結(jié)構(gòu):不能從另外一個結(jié)構(gòu)或者類繼承,本身也不能被繼承,雖然結(jié)構(gòu)沒有明確的用sealed聲明,可是結(jié)構(gòu)是隱式的sealed .
類:完全可擴(kuò)展的,除非顯示的聲明sealed 否則類可以繼承其他類和接口,自身也能被繼承注:雖然結(jié)構(gòu)不能被繼承 可是結(jié)構(gòu)能夠繼承接口,方法和類繼承接口一樣
3.內(nèi)部結(jié)構(gòu):
結(jié)構(gòu): 沒有默認(rèn)的構(gòu)造函數(shù),但是可以添加構(gòu)造函數(shù)沒有析構(gòu)函數(shù)沒有 abstract 和 sealed(因?yàn)椴荒芾^承)不能有protected 修飾符可以不使用new 初始化在結(jié)構(gòu)中初始化實(shí)例字段是錯誤的
類: 有默認(rèn)的構(gòu)造函數(shù) 有析構(gòu)函數(shù) 可以使用 abstract 和 sealed 有protected 修飾符必須使用new 初始化
以上就是關(guān)于“.net常見面試題有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
當(dāng)前文章:.net常見面試題有哪些-創(chuàng)新互聯(lián)
文章鏈接:http://www.rwnh.cn/article10/cseido.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈、網(wǎng)站排名、App開發(fā)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容