什麼叫應用程序域?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別作何解釋?IL分別是什麼含義.
應用程序域應用程序域爲安全性、可靠性、版本控制以及卸載程序集提供了隔離邊界。應用程序域通常由運行庫宿主創建,運行庫宿主負責在運行應用程序之前引導公共語言運行庫。應用程序域提供了一個更安全、用途更廣的處理單元, 公共語言運行庫可使用該單元提供應用程序之間的隔離。 託管代碼 使用基於公共語言運行庫的語言編譯器開發的代碼稱爲託管代碼;託管代碼具有許多優點,例如:跨語言集成、跨語言異常處理、增強的安全性、版本控制和部署支持、簡化的組件交互模型、調試和分析服務等。
裝箱和拆箱 裝箱和拆箱使值類型能夠被視爲對象。對值類型裝箱將把該值類型打包到 Object 引用類型的一個實例中。這使得值類型可以存儲於垃圾回收堆中。拆箱將從對象中提取值類型。
重載 每個類型成員都有一個唯一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。只要簽名不同,就可以在一種類型內定義具有相同名稱的多種方法。當定義兩種或多種具有相同名稱的方法時,就稱作重載。
CTS通用類型系統 (common type system)
一種確定公共語言運行庫如何定義、使用和管理類型的規範。
CLR公共語言運庫
.NET Framework 提供了一個稱爲公共語言運行庫的運行時環境,它運行代碼並提供使開發過程更輕鬆的服務。
CLS公共語言規範 要和其他對象完全交互,而不管這些對象是以何種語言實現的,對象必須只向調用方公開那些它們必須與之互用的所有語言的通用功能。爲此定義了公共語言規範 (CLS),它是許多應用程序所需的一套基本語言功能。
強類型 C# 是強類型語言;因此每個變量和對象都必須具有聲明類型。IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;所有.NET源代碼(不管用哪種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成爲機器碼,被解釋及執行。
6.net中讀寫數據庫需要用到那些類?他們的作用?
答:DataSet:數據存儲器。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用語填充。
7.ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:Windows身份驗證提供程序 提供有關如何將Windows 身份驗證與 Microsoft Internet 信息服務 (IIS) 身份驗證結合使用來確保ASP.NET 應用程序安全的信息。Forms身份驗證提供程序 提供有關如何使用您自己的代碼創建應用程序特定的登錄窗體並執行身份驗證的信息。使用 Forms 身份驗證的一種簡便方法是使用ASP.NET 成員資格和 ASP.NET 登錄控件,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據的方法。
Passport 身份驗證提供程序提供有關由 Microsoft 提供的集中身份驗證服務的信息,該服務爲成員站點提供單一登錄和核心配置
8.什麼是Code-Behind技術?答:代碼後植。
9.在.net中,配件的意思是?答:程序集。(中間語言,源數據,資源,裝配清單)
10.常用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜單選項
11..net Remoting 的工作原理是什麼?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置。
12.請詳述在dotnet中類(class)與結構(struct)的異同?
答:(Class可以被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的.)結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多:儘管結構的靜態字段可以初始化,結構實例字段聲明還是不能使用初始值設定項。結構不能聲明默認構造函數(沒有參數的構造函數)或析構函數。 結構的副本由編譯器自動創建和銷燬,因此不需要使用默認構造函數和析構函數。實際上,編譯器通過爲所有字段賦予默認值(參見默認值表)來實現默認構造函數。結構不能從類或其他結構繼承。結構是值類型 -- 如果從結構創建一個對象並將該對象賦給某個變量,變量則包含結構的全部值。複製包含結構的變量時,將複製所有數據,對新副本所做的任何修改都不會改變舊副本的數據。由於結構不使用引用,因此結構沒有標識
-- 具有相同數據的兩個值類型實例是無法區分的。C# 中的所有值類型本質上都繼承自 ValueType,後者繼承自 Object。 編譯器可以在一個稱爲裝箱的過程中將值類型轉換爲引用類型。
結構具有以下特點: l 結構是值類型,而類是引用類型。 2。向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作爲引用傳遞的。3.與類不同,結構的實例化可以不使用 new 運算符。4. 結構可以聲明構造函數,但它們必須帶參數。5 。 一個結構不能從另一個結構或類繼承,而且不能作爲一個類的基。所有結構都直接繼承自 System.ValueType,後者繼承自
System.Object。6 結構可以實現接口。 7 在結構中初始化實例字段是錯誤的。
13abstract class和interface有什麼區別?
答:聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的所有抽象方法提供實現,否則它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類可以在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然後,它可以在實現了該接口的類的任何對象上調用接口的方法。由於有抽象類,它允許使用接口名作爲引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof
運算符可以用來決定某對象的類是否實現了接口。 13.值類型和引用類型的區別?
基於值類型的變量直接包含值。將一個值類型變量賦給另一個值類型變量時,將複製包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只複製對對象的引用,而不復制對象本身。所有的值類型均隱式派生自 System.ValueType。 與引用類型不同,從值類型不可能派生出新的類型。但與引用類型相同的是,結構也可以實現接口。 與引用類型不同,值類型不可能包含 null 值。然而,可空類型功能允許將null 賦給值類型。 每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。 值類型主要由兩類組成:結構、枚舉 結構分爲以下幾類:Numeric(數值)類型、整型、浮點型、decimal、bool、用戶定義的結構。
引用類型的變量又稱爲對象,可存儲對實際數據的引用。聲明引用類型的關鍵字:class、inte***ce、delegate、內置引用類型:object、string
14.如何理解委託
委託類似於 C++函數指針,但它是類型安全的。委託允許將方法作爲參數進行傳遞。委託可用於定義回調方法。委託可以鏈接在一起;例如,可以對一個事件調用多個方法。方法不需要與委託簽名精確匹配。有關更多信息,請參見協變和逆變。C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作爲參數傳遞,以代替單獨定義的方法。
15.啓動一個線程是用run()還是start()?
答:啓動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味着它可以由JVM調度並執行。這並不意味着線程就會立即運行。run()方法可以產生必須退出的標誌來停止一個線程。
16.接口是否可繼承接口?抽象類是否可實現(implements)接口?抽象類是否可繼承實體類(concrete class)?
答:接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
17.構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
18.是否可以繼承String類? 答:String類是final類故不可以繼承。
19.try {}裏有一個return語句,那麼緊跟在這個try後的finally{}裏的code會不會被執行,什麼時候被執行,在return前還是後?
答:會執行,在return前執行。 20.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。
47.當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
48.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
49.List, Set, Map是否繼承自Collection接口? 答:List,Set是Map不是
50.Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用==還是equals()?它們有何區別?
答:Set裏的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,爲的是當兩個分離的對象的內容和類型相配的話,返回真值。
51.數組有沒有length()這個方法?String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法。
52.sleep() 和wait() 有什麼區別?
答:sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。這是因爲在那個時刻,其它線程可能正在運行而且沒有被調度爲放棄執行,除非(a)“醒來”的線程具有更高的優先級(b)正在運行的線程因爲其它原因而阻塞。wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。 54.談談final,finally, finalize的區別。
答:final—修飾符(關鍵字)如果一個類被聲明爲final,意味着它不能再派生出新的子類,不能作爲父類被繼承。因此 一個類不能既被聲明爲 abstract的,又被聲明爲final的。將變量或方法聲明爲final,可以保證它們在使用中 不被改變。被聲明爲final的變量必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明爲 final的方法也同樣只能使用,不能重載
finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會 執行,然後控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java 技術允許使用finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理 工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的 ,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
55.如何處理幾十萬條併發數據?
答:用存儲過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法併發的時候是不會有重複主鍵的..取得最大標識要有一個存儲過程來獲取.
56.Session有什麼重大BUG,微軟提出了什麼方法加以解決?
答:是iis中由於有進程回收機制,系統繁忙的話Session會丟失,可以用Sateserver或SQL Server數據庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。
57.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程可以有多個線程,這些線程共享這個進程的資源。
58.堆和棧的區別?
答:棧:由編譯器自動分配、釋放。在函數體中定義的變量通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內存函數分配得到的就是在堆上。
59.成員變量和成員函數前加static的作用?
答:它們被稱爲常成員變量和常成員函數,又稱爲類成員變量和類成員函數。分別用來反映類的狀態。比如類成員變量可以用來統計類實例的數量,類成員函數負責這種統計的動作。
60.ASP。NET與ASP相比,主要有哪些進步?答:asp解釋形,aspx編譯型,性能提高,有利於保護源碼。
66.軟件開發過程一般有幾個階段?每個階段的作用?答:需求分析,架構設計,代碼編寫,QA,部署
74.什麼是虛函數?什麼是抽象函數? |
5:Web頁面間傳值有幾種方法?(1)★Session (2)★Cookie (3)★Application (4)★URL地址中的參數(5)通過隱藏字段來傳遞數據 (6)★Server.Transfer (7)通過序列化對象
11:簡述B/S及C/S的本質區別1:C/S(Client/Server)客戶機和服務器結構,通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client 端和Server端來實現,降低了系統的通訊開銷。對客戶機的要求有限制,需要針對客戶機的系統而開發不同的版本,重用率低2:B/S(Browser/Server)結構即瀏覽器和服務器結構。用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在服務器端(Server)實現,這樣就大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。
C/S是美國Borland公司最早研發,B/S是美國微軟公司研發。
C/S架構軟件的優勢與劣勢(1)、應用服務器運行數據負荷較輕。 (2)、數據的儲存管理功能較爲透明。 (3)、C/S架構的劣勢是高昂的維護成本且投資大。
B/S架構軟件的優勢與劣勢(1)、維護和升級方式簡單。 (2)、成本降低,選擇更多。
(3)、應用服務器運行數據負荷較重。 3,C/S與B/S區別Client/Server是建立在局域網的基礎上的,Browser/Server是建立在廣域網的基礎上的。(1)、硬件環境不同: C/S一般建立在專用的網絡上,小範圍裏的網絡環境,局域網之間再通過專門服務器提供連接和數據交換服務。 B/S建立在廣域網之上的,不必是專門的網絡硬件環境,例如電話上網,租用設備,信息自己管理,有比C/S更強的適應範圍,一般只要有操作系統和瀏覽器就行。(2)、對安全要求不同
C/S一般面向相對固定的用戶羣,對信息安全的控制能力很強。一般高度機密的信息系統採用C/S結構適宜,可以通過B/S發佈部分可公開信息。 B/S建立在廣域網之上,對安全的控制能力相對弱,面向是不可知的用戶羣。(3)、對程序架構不同 C/S程序可以更加註重流程,可以對權限多層次校驗,對系統運行速度可以較少考慮。B/S對安全以及訪問速度的多重的考慮,建立在需要更加優化的基礎之上。比C/S有更高的要求,B/S結構的程序架構是發展的趨勢,從MS的.Net系列的BizTalk2000Exchange2000等,全面支持網絡的構件搭建的系統。SUN和IBM推的JavaBean構件技術等,使B/S更加成熟。
(4)、軟件重用不同C/S程序可以不可避免的整體性考慮,構件的重用性不如在B/S要求下的構件的重用性好。 B/S對的多重結構,要求構件相對獨立的功能。能夠相對較好的重用。就如買來的餐桌可以再利用,而不是做在牆上的石頭桌子。(5)、系統維護不同 系統維護是軟件生存週期中,開銷大,相當重要 8.請編程實現一個冒泡排序算法?
答: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 ;
}}}
4.NEW有幾種方法?答:第一種:new Class(); 第二種:覆蓋方法public new XXXX(){} ;第三種:new 約束指定泛型類聲明中的任何類型參數都必須有公共的無參數構造函數。 13.概述.NET中的GC機制。答:GC的全稱是garbage collection,中文名稱垃圾回收,是.NET中對內存管理的一種功能。垃圾回收器跟蹤並回收託管內存中分配的對象,定期執行垃圾回收以回收分配給沒有有效引用的對象的內存。當使用可用內存不能滿足內存請求時,GC會自動進行。在進行垃圾回收時,垃圾回收器會首先搜索內存中的託管對象,然後從託管代碼中搜索被引用的對象並標記爲有效,接着釋放沒有被標記爲有效的對象並收回內存,最後整理內存將有效對象挪動到一起 14.ASP.NET中常見內置對象?答:Resqponse、Request、Server、Session、Acclication、Cookie 17.什麼是強類型系統? 答:RTTI:類型識別系統。 4.概述反射和序列化 反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態地創建類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。然後,可以調用類型的方法或訪問其字段和屬性序列化:序列化是將對象轉換爲容易傳輸的格式的過程。例如,可以序列化一個對象,然後使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。 13. 請解釋web.config文件中的重要節點
appSettings包含自定義應用程序設置。system.web 系統配置compilation動態調試編譯設置
customErrors自定義錯誤信息設置authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization授權, 此節設置應用程序的授權策略.
9.在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?
Using 引入一個名子空間,或在使用了一個對像後自動調用其IDespose,New 實例化一個對像,或修飾一個方法,表此方法完全重寫此方法
2.如何把一個array複製到arrayList裏
foreach( object o in array )arrayList.Add(o);
3.datagrid.datasouse可以連接什麼數據源 [dataset,datatable,dataview]
dataset,datatable,dataview , Ilist
7.用sealed修飾的類有什麼特點sealed 修飾符用於防止從所修飾的類派生出其它類。如果一個密封類被指定爲其他類的基類,則會發生編譯時錯誤。密封類不能同時爲抽象類。sealed 修飾符主要用於防止非有意的派生,但是它還能促使某些運行時優化。具體說來,由於密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數成員的調用可以轉換爲非虛擬調用來處理。
1在.Net中所有可序列化的類都被標記爲__[serializable]___?