面试(2)
又面臨找工作了,記下些之前沒(méi)有記住的問(wèn)題,希望能找到一個(gè)自己滿意的工作,加油。
?
一些基礎(chǔ)問(wèn)題的了解:
?
應(yīng)用程序域?:
應(yīng)用程序域 (application domain) (AppDomain) 一種邊界,它由公共語(yǔ)言運(yùn)行庫(kù)圍繞同一應(yīng)用程序范圍內(nèi)創(chuàng)建的對(duì)象建立(即,從應(yīng)用程序入口點(diǎn)開(kāi)始,沿著對(duì)象激活的序列的任何位置)。應(yīng)用程序域有助于將在一個(gè)應(yīng)用程序中創(chuàng)建的對(duì)象與在其他應(yīng)用程序中創(chuàng)建的對(duì)象隔離,以使運(yùn)行時(shí)行為可以預(yù)知。在一個(gè)單獨(dú)的進(jìn)程中可以存在多個(gè)應(yīng)用程序域。
?
?
?
?
以前的類似應(yīng)用程序域是通過(guò)進(jìn)程來(lái)實(shí)現(xiàn),即要達(dá)到這種效果,需要多個(gè)線程來(lái)實(shí)現(xiàn)。
?
CLR?
CLR常用簡(jiǎn)寫(xiě)詞語(yǔ),CLR是公共語(yǔ)言運(yùn)行時(shí),Common Language Runtime)和Java虛擬機(jī)一樣也是一個(gè)運(yùn)行時(shí)環(huán)境,它負(fù)責(zé)資源管理(內(nèi)存分配和垃圾收集),并保證應(yīng)用和底層操作系統(tǒng)之間必要的分離。
?
?
?
CTS:
公共類型系統(tǒng)(又叫通用系統(tǒng)類型) Common Type System
?
CLS
?????公用語(yǔ)言規(guī)范,可以保證C#組件與其他語(yǔ)言組件間的互操作性. Common Language Specification
?
受管制的代碼
?
最簡(jiǎn)單的說(shuō)呢,受托管的代碼不能直接寫(xiě)內(nèi)存,是安全的,而非托管代碼是非安全代碼,可以使用指針操作內(nèi)存。
?
?
?
?
什么叫應(yīng)用程序域?什么是受管制的代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?
?
?
答案:應(yīng)用程序域:一種邊界,它有公共語(yǔ)言運(yùn)行庫(kù)圍繞同一應(yīng)用程序范圍內(nèi)創(chuàng)建的對(duì)象建立(即,從應(yīng)用程序入口點(diǎn)開(kāi)始,沿著對(duì)象激活的序列的任何位置)。應(yīng)用程序域有助于將在一個(gè)應(yīng)用程序中建立的對(duì)象在其他應(yīng)用程序中創(chuàng)建的對(duì)象隔離,以使運(yùn)行時(shí)行為可以預(yù)知。在一個(gè)單獨(dú)的進(jìn)程中可以存在多個(gè)應(yīng)用程序域。以前使用進(jìn)程邊界來(lái)隔離在同一臺(tái)計(jì)算機(jī)上運(yùn)行的應(yīng)用程序。每一個(gè)應(yīng)程序被加載到單獨(dú)的進(jìn)程中,這樣就將該應(yīng)用程序與同一臺(tái)計(jì)算機(jī)上運(yùn)行的其他應(yīng)用程序相隔離。隔離這些應(yīng)用程序的原因在于內(nèi)存地址是與進(jìn)程相關(guān)的;在目標(biāo)進(jìn)程中,不能通過(guò)任何有意義的方式使用一個(gè)進(jìn)程傳遞到另一個(gè)進(jìn)程的內(nèi)存指針。此外,您不能在兩個(gè)進(jìn)程間進(jìn)行直接調(diào)用。您必須代之以使用代理,它提供一頂程度的餓間接性。托管代碼必須先通過(guò)一個(gè)驗(yàn)證過(guò)程,然后才能運(yùn)行(除非管理員已授權(quán)跳過(guò)該驗(yàn)證)。次驗(yàn)證過(guò)程以下內(nèi)容:這些代碼是否會(huì)嘗試訪問(wèn)無(wú)效的內(nèi)存地址?是否會(huì)嘗試執(zhí)行某些導(dǎo)致進(jìn)程(該代碼運(yùn)行時(shí)所在的進(jìn)程)無(wú)法正常進(jìn)行的其他操作?通過(guò)次驗(yàn)證測(cè)試的代碼將被人是類型安全的。由于公共語(yǔ)言運(yùn)行庫(kù)嫩能夠夠驗(yàn)證代碼是否為類型安全的代碼,所以它可以提供與進(jìn)程邊界一樣大的隔離級(jí)別,而其性能開(kāi)銷在則要低得多。應(yīng)用程序域提供安全而通用的處理單元,公共語(yǔ)言運(yùn)行庫(kù)可使用它來(lái)提供應(yīng)用程序之間的隔離。您可以在具有同等隔離級(jí)別(存在于單獨(dú)的進(jìn)程中)的但個(gè)進(jìn)程中運(yùn)行幾個(gè)應(yīng)用程序域,而不會(huì)造成進(jìn)程間切換等方面的額外開(kāi)銷。在一個(gè)進(jìn)程內(nèi)運(yùn)行多個(gè)應(yīng)用程序的能力顯著增強(qiáng)了服務(wù)器的可伸縮性。隔離應(yīng)用程序?qū)τ趹?yīng)用程序安全也是十分重要。例如,您可以在單個(gè)瀏覽器進(jìn)程中運(yùn)行幾個(gè)Web應(yīng)用程序的控件,同時(shí)使這些控件不能訪問(wèn)彼此的餓數(shù)據(jù)和資源。
應(yīng)用程序域所提供的隔離具有以下優(yōu)點(diǎn):在一個(gè)應(yīng)用程序中出現(xiàn)的錯(cuò)誤不會(huì)影響其他以內(nèi)功用程序。因?yàn)轭愋桶踩拇a不會(huì)導(dǎo)致內(nèi)存錯(cuò)誤,所以使用應(yīng)用程序宇可以確保在一個(gè)域中運(yùn)行的代碼不會(huì)影響進(jìn)程中的其他應(yīng)用程序。能夠在不停止整個(gè)進(jìn)程的情況下停止單個(gè)應(yīng)用程序。使用應(yīng)用程序域使您可以卸載在單個(gè)應(yīng)用程序中運(yùn)行的代碼。注意 不能卸載單個(gè)程序集或類型。只能卸載整個(gè)域。在一個(gè)應(yīng)用程序中運(yùn)行的代碼不能直接訪問(wèn)其他應(yīng)用程序中代碼或資源。為了強(qiáng)制實(shí)施此隔離,公共語(yǔ)言運(yùn)行庫(kù)禁止在不同應(yīng)用程序域中的對(duì)象之間進(jìn)行直接調(diào)用。要在個(gè)域之間傳遞對(duì)象,可以復(fù)制這些對(duì)象,或通過(guò)代理訪問(wèn)這些對(duì)象。如果復(fù)制對(duì)象,那么對(duì)該對(duì)象的調(diào)用為本地調(diào)用。也就是說(shuō),調(diào)用方和被引用的對(duì)象位于同一應(yīng)用程序域中。如果通過(guò)代理訪問(wèn)對(duì)象,那么對(duì)該對(duì)象的調(diào)用為遠(yuǎn)程調(diào)用。在此情況下,調(diào)用方和被引用的對(duì)象位于不同的應(yīng)用程序域中。域間調(diào)用所采用遠(yuǎn)程調(diào)用結(jié)構(gòu)與兩個(gè)進(jìn)程間的調(diào)用或兩臺(tái)計(jì)算機(jī)間的調(diào)用結(jié)構(gòu)相同。代碼行為的作用范圍由它行為所在的應(yīng)用程序決定。換言之,應(yīng)用程序域?qū)⑻峁?yīng)用程序版本策略等配置設(shè)置、它所訪問(wèn)的任意遠(yuǎn)程程序集的位置,以及加載到該域中的程序集的位置信息。受管制的代碼:在CLR虛擬機(jī)中運(yùn)行的代碼。強(qiáng)類型語(yǔ)言:如c/c++就是各種變量在各自的餓作用域使用之前都要由開(kāi)發(fā)者定義類型,并交由編譯器分配內(nèi)存空間。裝箱,就是把值轉(zhuǎn)為引用類型。反之應(yīng)用轉(zhuǎn)為值
?
?
什么是重載?CTS、CLS和CLR分別做何解釋
?
?
答案:重載,是指允許存在多個(gè)同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個(gè)數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。
CTS:類似于COM定義的標(biāo)準(zhǔn)二進(jìn)制格式,.net定義了一個(gè)稱為通用類型系統(tǒng) Common Type System (CTS)的類型標(biāo)準(zhǔn)。這個(gè)類型不但實(shí)現(xiàn)COM的變量兼容,而且還定義了通過(guò)用戶自定義類型的方式進(jìn)行類型擴(kuò)展。任何類型的方式進(jìn)行類型擴(kuò)展。任何以.net平臺(tái)作為目標(biāo)的語(yǔ)言必須建立它的數(shù)據(jù)類型與CTS的類型間的影射。所有,net語(yǔ)言共享這一類型系統(tǒng),實(shí)現(xiàn)他們之間無(wú)縫的互操作。該方案還提供了語(yǔ)言之間的繼承性。
CLS:.net通過(guò)定義公共語(yǔ)言規(guī)范(CLS:Common Language Specification),限制了由這些不同引發(fā)的互操作性問(wèn)題。CLS指定了一種以.net平臺(tái)為目標(biāo)的語(yǔ)言所必須支持的最小特征,以及該語(yǔ)言與其他.net語(yǔ)言之間實(shí)現(xiàn)互操作性所需要的完備特征。CLS是CTS的餓一個(gè)餓子集。之間和就意味著一種語(yǔ)言特征可能符合CTS標(biāo)準(zhǔn),但又超出CLS的范疇。
CLR: 公共語(yǔ)言運(yùn)行庫(kù)Common Language Runtime(CLR).CLR是CTS的實(shí)現(xiàn),也就是說(shuō),CLR是應(yīng)用程序的執(zhí)行引擎和功能齊全的類庫(kù),該類庫(kù)嚴(yán)格按照CTS規(guī)范實(shí)現(xiàn)。作為程序執(zhí)行引擎,CLR負(fù)責(zé)安全地載入和運(yùn)行用戶程序代碼,包括對(duì)不同對(duì)象的垃圾揮手和安全檢查。CLR監(jiān)控之下運(yùn)行的代碼,稱為托管代碼(managed code)。
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/30763402/archive/2011/06/21/2086445.html
總結(jié)
- 上一篇: C#操作word文档(二)
- 下一篇: 【转】#ifndef作用