1.什麼是CLR? javascript
答:CLR全稱Common Language Runtime,翻譯爲公共語言運行時/公共語言運行庫。由於 .Net 是一個多語言的平臺,任何符合這個平臺標準的編程語言編譯後均可以在這個平臺上運行,這些語言經過各自的編譯器編譯後生成中間代碼CIL。既然是「公共」語言運行時,顧名思義就是能夠被多種編程語言公共使用的。CLR提供了不少功能,好比內存管理(GC)、程序集加載、安全性、異常處理和線程同步等等功能。因此,基於CLR的編程語言都能使用這些功能。 php
2.什麼是應用程序域? css
應用程序域,英文Application Domain,通常簡寫爲AppDomain。原本在Windows NT操做系統上,只有進程(Process)和線程(Thread)的概念。微軟的 .Net 平臺是基於Windows的,對Windows的抽象,因此 .Net 除了支持在操做系統原生的Process和Thread的概念外,還多抽象了一個叫作AppDomain的東西。對了,準確來講,是 CLR 對操做系統的抽象。Windows NT 進程的出現是爲了把應用程序和其餘應用程序以及操做系統內核代碼隔離開來。經過怎麼隔離的呢,通常來講,一個程序是一個進程,每一個把程序的代碼和數據以及要用到的資源放在一個特定的內存區域[虛擬地址空間],這樣其餘程序(進程)就不能輕易的訪問到這個程序的數據,這個進程也不能輕易的訪問其餘程序的地址空間和Windows操做系統內核代碼所在的內存。這樣,Windows就在操做系統級別實現了程序之間和程序與OS內核之間資源的隔離。微軟的 .Net 平臺是基於Windows NT之上的抽象,因此Windows NT的不少東西都在 .Net平臺(準確來講是CLR)都有相關的抽象。Windows NT 的進程對應於CLR 的進程,CLR的進程和Windows NT進程同樣,也是爲了應用程序之間的資源的。 前面說了Windows NT 進程是爲了隔離程序與程序的,可是爲了可擴展性,每一個程序(進程)均可以加載第三方的DLL,這個DLL直接被加進了進程之中,成了進程的一部分,這個DLL能夠訪問進程裏的全部資源了,也能夠訪問的原進程所能訪問的全部資源了。這樣第三方DLL就可能會破壞程序的數據和代碼甚至會訪問原本無權訪問的資源。 而CLR在Windows NT基礎上增長了AppDomain來解決上面的問題。AppDomain能夠把第三方DLL放進程序所在的進程運行,可是卻不會破環進程的數據結構、代碼和其餘資源。不少時候,能夠把AppDomain理解爲.Net平臺上的縮小版進程。AppDomain還解決了一個問題,在一個Window NT進程裏有多個AppDomain,而每一個AppDomain均可以是一個應用程序。因此,.Net 平臺的一個進程能夠運行多個應用程序了,這也是AppDomain的功能之一。在IIS7裏,每一個工做進程w3wp.exe就經過運行多個AppDomain來運行多個Web應用程序的。這樣對於操做系統來講,只須要1個進程就能夠運行多個應用程序實例了,節省了資源,提升了系統健壯性。html
3.什麼是託管代碼? java
託管代碼和非託管代碼是兩個相對的概念。非託管代碼是指直接運行在操做系統上的代碼。而託管代碼顧名思義就是須要在某個東西委託管理它的代,這個東西在.Net平臺上就是CLR,說白了託管代碼就是受CLR管理的代碼,CLR[它的JIT編譯器]負責把這些代碼轉換成操做系統能執行使用的代碼。Java的中間代碼就至關於.Net的託管代碼,Java的虛擬機就至關於.Net的CLR。node
4.什麼是強類型系統? c++
語言是靜態類型是指:這門語言中每一個變量和大部分表達式都有一個特定的類型,並且這個類型是在編譯時已知的。而動態類型語言相反,某個變量的類型不但能夠改變,並且只能在運行的時候才知道是否正確。C#屬於靜態語言,C#4.0出現的dynamic關鍵字,讓C#具備了一部分動態語言的特性,C#再也不是一門純粹的靜態類型語言。在不少資料和文檔裏,強類型指的得就是靜態類型。強類型的定義是不明確的,在不少地方並不相同。因此我可是爲了嚴謹起見,我通常不說強類型/弱類型,而是說靜態類型/動態類型。git
5.什麼是重載? 程序員
重載,overload。重載就是容許在一個類型中有多個同名的語言構造,好比一個類中有多個同名的方法,一個類中有多個同名的索引器等。C#支持方法重載,實例構造函數重載,索引器重載和操做符重載。方法重載是指容許同一個類中存在同名的多個方法,只須要知足一個條件:這些方法具備不一樣的簽名。對於方法來講,簽名是:方法的名稱、參數的類型、個數和位置,不包括參數名、不包括返回值、不包括params修飾符,ref和out會被認爲是相同的。【順便說說,這是C#的規定,CLR是容許經過方法的返回值來區分同名方法的】 web
6.是否能夠繼承String類?
不能。.Net FCL中System.String類定義爲sealed,表示不可繼承。之因此會被定義爲sealed的是由於字符串太經常使用,太常見,CLR對它進行了特殊對待,好比拘留池和不可變性,若是String能夠被繼承的話,會打破CLR對它的一系列特殊對待和字符串的不可變性。
7.using關鍵字有什麼用?什麼是IDisposable?
①引入命名空間,這樣減輕敲代碼的工做量和代碼量。
②給名字衝突的類取別名,這樣就能夠區分不一樣命名空間裏的同名類。
③爲所包括的全部實現了IDisposable接口的類型變量表明的資源進行釋放。
本質是會自動生成一個try塊和finally塊,並在finally塊裏把變量轉換成IDisposable並調用Dispose方法。
IDisposable是一個接口,是爲使用了非託管資源的類銷燬資源準備的。若是某個類使用了非託管資源,就應該讓這個類實現這個接口,這是.Net的非託管資源銷燬的標準實現。IDisposable有一個Dispose方法,實現這個方法來銷燬須要銷燬的資源。
使用這個接口來銷燬非託管資源有3種方法,
①手動在finally塊調用這個方法。
②使用using包含這個變量,讓編譯器生成代碼幫咱們調用。
③若是大意之下,沒有調用這個方法,這個方法最終也會在終結器中被調用。
8.string str= null 和 string str="" 說明其中的區別?
前者僅僅聲明瞭一個字符串引用str,只是在線程棧上佔用了4個字節的空間,str引用指向進程的虛擬內存地址空間的0x00000000,也就是沒有指向任何對象。後者語句會在當前進程的字符串拘留池中查找,若是已經存在一個只爲 "" 的字符串,則直接把這個 "" 所在虛擬空間的首地址(4字節)賦值給str變量,若是當前進程的字符串拘留池中沒有 "" 這個字符串,則會在託管堆的GC堆裏建立這個字符串,而後這這個字符串對象所在的首地址賦值給變量str。說白了,前者只定義了一個字符串引用,後者不但定義了一個字符串引用,並且把這個引用執行了一個具體的對象。在前者上調用方法會出現null引用錯誤,後者則不會。
9.StringBuilder和String的區別?
System.String是對應於C#的string,是C#的基元類型,受到了CLR和C#編譯器的特殊對待,它是不可變字符串。每個String實例構造之後,都不能改動或增加,每次對String的改動操做,其實都不是在原String對象上執行的,都會生成一個新的字符串。因此,String不適合用在大規模的字符串操做(截斷、增加、替換等)上,這樣會生成不少的String對象,而致使內存增大和GC回收的壓力。而StringBuilder僅僅是萬千.Net FCL類型中的一個普通引用類型而已,若是說特殊的話,僅僅特殊在它表示的數據是字符串而已。若是須要頻繁對字符串進行變化操做的話,使用它比使用String能得到更行的性能。
10.什麼是虛函數?什麼是抽象函數?
虛函數只能能夠有子類重寫override,子類能夠選擇重寫仍是不重寫。抽象函數必須由子類重寫,子類沒有選擇權。虛函數能夠定義在普通類裏,也能夠定義在抽象類裏。而抽象函數只能定義在抽象類。
11.用sealed修飾的類有什麼特色?
sealed類不能被繼承。
12..Net的錯誤處理機制是什麼?
.Net的錯誤處理機制是基於Windows NT的「結構化異常實處理機制SEH」創建的。在C#中是使用try catch finally塊表示的。
13.C#的checked和unchecked的做用是什麼?
checked 和 unchecked是用來只是編譯器檢查或者不檢查包含着的代碼是否進行「算術計算溢出檢查」的。若是checked的話,包圍着的代碼在運行時,若是出現算術計算溢出時,則會拋出異常。若是unchecked的話,即便溢出,也不會拋出異常。既不checked,也不unchecked的時候,默認是unchecked。
14.C#中的三元操做符是什麼?
C#只有一個三元操做符,它就是:條件操做符,【?:】。 a?b:c 這個表達式的值是:若是a爲True,則表達式值爲b;若是a爲False,則表達式的值爲c。
15.C#的is和as運算符有什麼做用?
is:檢查對象的真實類型是否與給定類型兼容。兼容返回True,不兼容則返回False。as:把對象轉換爲給定的引用類型。能轉換則返回引用,不能轉換則返回null。is運算符既然檢查是否兼容與引用類型也能檢查是否兼容於值類型,可是不考慮用戶自定義轉換。as運算符只能把對象轉換爲引用類型,不能做用於值類型之上。
16.C#中如何利用DateTime獲取季度?
①經過DateTime.Now.Month屬性拿到當前月份 month。
②【month / 4 +1】就是季度數。
17.如何在DateTime時間追加工做日?
18.類和結構的區別是什麼?
類做爲引用類型的表明,結構做爲值類型的表明,他們之間的區別不少就是引用類型和值類型的區別。 值類型繼承自ValueType;而引用類型繼承自System.Object。值類型變量包含其實例數據,每一個變量保存了其自己的數據拷貝(副本),所以在默認狀況下,值類型的參數傳遞不會影響參數自己;而引用類型變量保存了其數據的引用地址,所以以值類型進行參數傳遞時會影響到參數自己,由於兩個變量會引用了內存中的同一塊地址。 值類型有兩種表示:裝箱與拆箱;引用類型只有裝箱一種形式。而引用類型一般只有一種形式:裝箱。值類型的內存不禁GC控制,做用域結束時,值類型會自行釋放,減小了託管堆的壓力,所以具備性能上的優點。值類型是密封的(sealed),所以值類型不能做爲其餘任何類型的基類,可是能夠單繼承或者多繼承接口;而引用類型通常都有繼承性。值類型不具備多態性;而引用類型有多態性。值類型變量不可爲null值,值類型都會自行初始化爲0值;而引用類型變量默認狀況下,建立爲null值,表示沒有指向任何託管堆的引用地址,因此會引起null引用異常。
19.如何進行DateTime和字符串時間之間的轉換?
DateTime => 字符串時間 :ToString()方法以及幾個重載,另外ToXxString方法。字符串時間 => DateTime :
① DateTime.Parse和DateTime.TryPase兩個靜態方法。
② Convert.ToDateTime("2013-03-21") 其實系統預約義的這些常見類型,好比Int3二、DateTime等,特定類型和字符串直接的相互轉換都有上面3種模式。
20.簡述C#中的虛方法?
C#的虛方法用 virtual 關鍵字修飾。虛方法表示這個方法能夠被子類重寫override,固然子類是否重寫由本身決定。虛方法是C#中實現多態的一種方式。當用一個父類型的變量調用虛方法時候,會根據這個變量指向的真實子類型調用子類的方法。
21.簡述C#的密封類和密封方法?
C#中,密封類和密封方法都是使用sealed修飾。密封類表示這個類不能被繼承。密封方法表示這個方法不能被重寫,和virtual方法相對。
22.請介紹C#靜態構造器的特色?靜態構造函數在任意一個實例構造函數執行以前執行。
①一個類型有0或1個靜態構造器,不定義則木有,要定義也只能定義1個。
②靜態構造器不能有參數。
③構造器是由CLR調用,而不是程序員調用的。
④由於是由CLR調用的,因此不能有任何訪問修飾符。
⑤靜態構造器的做用就是初始化類型的靜態字段,而且靜態構造器只能訪問靜態字段。
⑥靜態構造器會根據類型所在程序集的加載策略不一樣,而具備不一樣的性質。
若是類型所在的程序集屬於AppDomain中立加載,則即便在多個AppDomain中使用到了這個類型,也只會在進程第一個使用類型時候,靜態構造器執行一次。而若是這個類型所在程序集是以AppDomain私有的方法加載的話,則在使用到它的每一個AppDomain裏,都執行一次這個類型的靜態構造器。
23.簡述C#派生類中的構造函數?
C#的構造函數是不能繼承的,即便這個構造函數是public或者proteced的。可是能夠在派生類的構造函數後經過 base.父類構造器 調用父類構造器。其實不直接經過base顯式調用父類構造器,在new一個子類實例的時候,編譯器會默認往上調用父類的默認構造器,一層一層往上調用,知道System.Object的默認構造函數。
24.簡述接口以及接口繼承?
接口是一個或一組契約的合集,表示某個東西能作什麼。接口是表示一組函數成員[方法、屬性、事件、索引器]而不實現成員的引用類型。接口能夠繼承多個接口,接口也能夠被多個接口繼承。類和結構可以實現接口。
25.什麼是多播委託?
多播委託就是在一個委託變量上綁定多個方法。這個委託實例就是多播委託。若是這個委託變量被使用的話,會按綁定順序挨個觸發全部的方法。
26.列舉一個C#中的委託應用?
List<T>類的的Sort方法的其中一個重載,接受一個委託類型的參數。使用List<T>類的Sort方法時候,程序員能夠放入一個委託變量。 LINQ的基石之一,擴展IEnumerable<T>接口的Enumerable類的那幾十個方法,全是以委託爲參數的。
30.什麼是Web窗體,什麼是Web用戶控件?
Web窗體就是後綴爲 .ASPx 的東西,在這個頁面上,能夠經過聲明的方法定義控件,無論是HTML標籤、仍是HTML控件、仍是服務器端控件、或者用戶控件。Web窗體最後會被編譯器編譯成一個類,這個類派生自頁面後臺類,Web窗體上定義的那些控件最後並無在Web窗體類中,而是跑到父類[頁面後臺類]中了。Web用戶控件就是程序員自定義的控件,能夠經過組合多個服務器端控件實現,也能夠本身重頭寫而實現。寫Web用戶控件的目的就是爲了重用,能夠把Web用戶控件用在多個Web窗體上,而且Web用戶控件只能附屬於Web窗體,由於它不能被單獨訪問。而Web窗體是能夠被單獨訪問的。
31.簡述XML的優缺點?
XML通常是做爲一種數據交換格式使用。
優勢:可擴展性強,根據程序員的定義,幾乎能夠表示任何數據;
跨平臺:能夠跨多個異構平臺傳遞數據,這也是他的主要用處所在。
可讀性強:由於是樹狀的文本文檔。
缺點:數據冗餘,使用了不少標籤和屬性。 不容易解析,即便在.Net平臺上有LINQ to XML的存在。
上面兩個缺點就是在不少領域XML被JSON這種數據交換格式替代的主要緣由。JSON數據很輕量級,因此很容易傳輸,JSON無論是瀏覽器端的JavaScript仍是其餘端的其餘語言,均可以很容易的解析。
32.什麼是SOAP?SOAP協議由哪幾部分組成?
SOAP,簡單對象訪問協議,後來發展成已經不是簡簡單單的對象訪問了,SOAP經過XML文檔描述Web服務。 SOAP協議由 SOAP封裝、SOAP編碼規則、SOAP RPC表示、SOAP綁定4個部分組成。
33.什麼是WSDL語言?
WSDL:Web服務描述語言。其實就是用來描述Web服務的一種特殊格式的XML文檔。在這個XML文檔裏,定義了Web服務的地址和這個服務上能進行的操做。說嚴肅點,就是WSDL定義了服務的元數據,用這些元數據能夠在客戶端建立服務代理。
39.什麼是Web Service?
Web Service,就是Web服務。就是把服務經過一個特殊的URL來公開而不是像之前那樣經過組件來公開。 在.Net平臺上,如今是用的主要Web Service技術有兩種:ASP.Net XML Web Service和WCF。
55.什麼是WPF?
WinForm的下一次替換產品。用來編寫C/S軟件。
2、填空題
1.能用 foreach 遍歷訪問的對象的要求須要實現【IEnumerable或IEnumerable<T>】或者聲明【一個返回值類型是一個包含一個public的MoveNext()方法,一個public的Current屬性的public的GetEnumerator()方法】
2.Serializable
1.面向對象的思想主要包括什麼?
封裝,繼承,多態
2.什麼是ASP.Net 中的用戶控件
用戶控件就是 .ascx,複合控件就是.DLL
3.什麼叫應用程序域?什麼是受管制的代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載? CTS、CLS 和CLR分別做何解釋?
一個進程能夠有 N個Domain, 一個Domain能夠有 N個程序集, 他主要功用是分割程序的 ,
受管制代碼就是有CLR公共語言運行時控制的代碼 ! 這樣的代碼是類型安全的 ,
強類型就是有類型約束的好比說強類型 DataSet,
裝箱就是把值類型裝成引用類型 ,拆箱反之, 重載在同一個類中相同方法名不一樣參數 ,
CLR是公共語言運行時,CTS是通用類型系統 ,
4.列舉一下你所瞭解的XML技術及其應用
XML用的地方太多了若是非要說一個就說 WebService 或Ajax 這些東西火 !說了老闆開心
5.值類型和引用類型的區別?寫出 C#的樣例代碼。
值類型存在內存棧裏面,引用類型存在內存堆裏面
6.ADO.Net 中經常使用的對象有哪些?分別描述一下。
ADO.Net裏面的對象多了去了這裏就說 SQL系列的(oledb 和 odbc系列不說了)SqlConnection,SqlCommand,SqlAdapter,SqlParameter,DataSet也算一個 ,至於用法地球人都知道
7.如何理解委託?
委託的正確理解就是函數指針
8.C#中的接口和類有什麼異同。
接口只提供規則沒有實現 ,接口能夠多繼承,類不行
10.UDP 鏈接和TCP鏈接的異同。
UDP是無鏈接狀態的,TCP是有狀態的這個纔是他們的根本區別 ,也就是說TCP 比UDP可靠
11.ASP.Net 的身份驗證方式有哪些?分別是什麼原理?
ASP.Net驗證有WinDows嚴整,form驗證,PassPort驗證,Windows通常在作企業內部 OA的時候用的多一些,FORM通常是作網站用的多他是採用 Cookie機制來實現的,PassPort是微軟提供的一個WebService
12.進程和線程分別怎麼理解?
進程就是一個程序實例 ,而線程能夠理解爲功能實例 !也就是說進程包含線程
13.什麼是code-Behind 技術。
代碼後製 !地球人都知道!.ASPX頁面實際上是個繼承與 .CS文件類的類
14.活動目錄的做用。
活動目錄就是分佈試環境目錄服務 ,做用就是分佈試應用程序的中心 !它記錄程序各個部分的信息等等
15..Net 中讀寫XML的類都歸屬於哪些命名空間?
System.XML和System.Data
16.解釋一下UDDI 、WSDL的意義及其做用。
UDDI說白了就是咱們生活中114查號臺 ,WSDL就是這個服務的說明書
17.什麼是SOAP, 有哪些應用。
SOAP是簡單傳輸協議用處想牛毛同樣多!非要說一個就說WebService或開發Remoting程序用
18.如何部署一個ASP.Net頁面。
1. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
答 . private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,該類內部和繼承類中能夠訪問。
public : 公共成員,徹底公開,沒有訪問限制。
internal: 在同一命名空間內能夠訪問。
2 .列舉ASP.Net 頁面之間傳遞值的幾種方式。
答. 1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer
4.C#中的委託是什麼?事件是否是一種委託?
答 : 委託能夠把一個方法做爲參數代入另外一個方法。
委託能夠理解爲指向一個函數的引用。
是,是一種特殊的委託
5.override與重載的區別
答 :override 與重載的區別。重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要
Override 是進行基類中函數的重寫。爲了適應須要。
6.若是在一個B/S結構的系統中須要傳遞變量值,可是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答 :
this.Server.Transfer
9.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:不是。能夠用任意類型。
11.用.Net作B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:通常爲3層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層通常分爲二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層爲了與用戶交互例如用戶添加表單。
優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長成本。
18.Net中讀寫數據庫須要用到那些類?他們的做用?
答:DataSet:數據存儲器。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用語填充。
20.什麼是Code-Behind技術?
答:代碼後植。
22.經常使用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.Net中的Add Web Reference菜單選項
23..Net Remoting 的工做原理是什麼?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以肯定對象的位置。
24.在C#中,string str = null 與 string str = 「」 請儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度爲空字符串的內存空間。
25.請詳述在dotNet中類(class)與結構(struct)的異同?
答:Class能夠被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的.
26.根據委託(delegate)的知識,請完成如下用戶控件中代碼片斷的填寫:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//請在如下補齊代碼用來調用OnDBOperate委託簽名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
27.分析如下代碼,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j=
答:i=13,j=10
28.SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句得到最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根據線程安全的相關知識,分析如下代碼,當調用test方法時i>10時是否會引發死鎖?並簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,因此每次改變的都只是一個副本,所以不會出現死鎖。但若是把int換作一個object,那麼死鎖會發生)
30.簡要談一下您對微軟.Net 構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:WS主要是可利用HTTP,穿透防火牆。而Remoting能夠利用TCP/IP,二進制傳送提升效率。
31.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到如下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的全部行 (排序的方式如DataGrid類似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,包該列的ID取出,按照該ID排序後,在給綁定到ListView中。
32.給定如下XML文件,完成算法流程圖。
<FileSystem>
<DriverC>
<Dir DirName=」MSDOS622」>
<File FileName =」 Command.com」 ></File>
</Dir>
<File FileName =」MSDOS.SYS」 ></File>
<File FileName =」 IO.SYS」 ></File>
</DriverC>
</FileSystem>
請畫出遍歷全部文件名(FileName)的流程圖(請使用遞歸算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
35.能用foreach遍歷訪問的對象須要實現 ________________接口或聲明________________方法的類型。
答:IEnumerable 、 GetEnumerator。
36.GC是什麼? 爲何要有GC?
答:GC是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。要請求垃圾收集,能夠調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
37.String s = new String("xyz");建立了幾個String Object?
答:兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。
38.abstract class和interface有什麼區別?
答:聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。
39.啓動一個線程是用run()仍是start()?
答:啓動一個線程是調用start()方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。run()方法能夠產生必須退出的標誌來中止一個線程。
40.接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
答:接口能夠繼承接口。抽象類能夠實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
41.構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。
42.是否能夠繼承String類?
答:String類是final類故不能夠繼承。
43.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?
答:會執行,在return前執行。
44.兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?
答:不對,有相同的hash code。
45.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()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
53.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
答:short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化爲short型。可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
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會丟失,能夠用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。
57.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的資源。
58.堆和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量一般在棧上。
堆:通常由程序員分配釋放。用new、malloc等分配內存函數分配獲得的就是在堆上。
59.成員變量和成員函數前加static的做用?
答:它們被稱爲常成員變量和常成員函數,又稱爲類成員變量和類成員函數。分別用來反映類的狀態。好比類成員變量能夠用來統計類實例的數量,類成員函數負責這種統計的動做。
60.ASP.Net與ASP相比,主要有哪些進步?
答:ASP解釋形,ASPx編譯型,性能提升,有利於保護源碼。
62.DataReader與Dataset有什麼區別?
DataSet能夠離線處理,先後滾動 和進行數據更新.
DataReader不能離線處理,是個只讀向前的遊標,但速度會很快
DataSet能夠存儲數據庫各類對象的,好比表觸發器等,而DataReader只能存儲遊標記錄
什麼是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包來提供最新的WEB服務安全保證,目前最
新版本2.0。
110.大概描述一下ASP。Net服務器控件的生命週期
答:初始化 加載視圖狀態 處理回發數據 加載 發送回發更改通知 處理回發事件
概述反射和序列化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您能夠使用反射動態地建立類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。而後,能夠調用類型的方法或訪問其字段和屬性
序列化:序列化是將對象轉換爲容易傳輸的格式的過程。例如,能夠序列化一個對象,而後使用 HTTP 經過 InterNet 在客戶端和服務器之間
傳輸該對象。在另外一端,反序列化將從該流從新構造對象。
3.datagrid.datasouse能夠鏈接什麼數據源
[dataset,datatable,dataview,IList]等接口類型的對象
4. new有幾種用法
第一種:new Class(),新建一個類的對象,可是此類必須的又可訪問的構造函數
第二種:顯式覆蓋基類的方法:public new Menthod(){}
5.概述o/r mapping 的原理
利用反射,配置 將類於數據庫表映射O/RMapping(有學習曲線,沒有工具支持會至關大):存在的時間已經很長,我認爲它的最主要的做用是關係型數據庫的反設計——關係型數據庫的設計就是要把現實中的對象和對象間關係設計成實體和實體間的關係映射。而O/RMapping剛好相反,它是把實體和實體間的關係映射還原回對象和對象間的關係。
6.類成員有( )種可訪問形式
可訪問性:public ,protected ,private,internal可能還有其餘的訪問形式,具體的狀況視編碼須要而定
7.用sealed修飾的類有什麼特色
sealed 修飾符用於防止從所修飾的類派生出其它類。若是一個密封類被指定爲其餘類的基類,則會發生編譯時錯誤。密封類不能同時爲抽象類。sealed 修飾符主要用於防止非有意的派生,可是它還能促使某些運行時優化。具體說來,因爲密封類永遠不會有任何派生類,因此對密封類的實例的虛擬函數成員的調用能夠轉換爲非虛擬調用來處理。
8.列舉ADO.Net中的五個主要對象,並簡單描述
connection,command,dataReader,transaction,dataset ...其上對於各類對象,鏈接不一樣的數據庫將會有不一樣的對象變體
Connection: 數據庫的鏈接須要此對象
Command:執行數據表變化的命令
dataReader和dataset主要是對數據庫的表信息進行兩種不一樣方式的讀取,具體的讀取得區別,後面將會有講解。
9.執行下面代碼後:
String strTemp ="yyaccpx 某某某";
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
結果:i=(14 ) ;j=(11 )
i=(14 ) ;j=(11 ) 中文在內存中佔兩個字節
可是隻算是一個字符
10.C#中,string str = null 與 string str ="",請儘可能用文字說明區別。(要點:說明詳細的內存空間分配)
string str ="" 在棧中存取地址,在堆中存放對象的值而String str=null;僅僅在內存棧中分配了空間
11.詳述.Net裏class和struct的異同!
class:放在屬於引用類型,故其存放於內存的堆中
Struct屬於值類型,其存放於棧中,做爲參數傳遞的時候屬於值傳遞類與結構有不少類似之處:結構能夠實現接口,而且能夠具備與類相同的成員類型。然而,結構在幾個重要方面不一樣於類:結構爲值類型而不是引用類型,而且結構不支持繼承。結構的值存儲在「在堆棧上」或「內聯」。細心的程序員有時能夠經過聰明地使用結構來加強性能。
12.概述.Net裏對 remoting 和 webservice 兩項技術的理解和實際中的應用。
其實現的原理並無本質的區別,在應用開發層面上有如下區別:
1)、Remoting能夠靈活的定義其所基於的協議,若是定義爲HTTP,則與Web Service就沒有什麼區別了,通常都喜歡定義爲TCP,這樣
比Web Service稍爲高效一些
2)、Remoting不是標準,而Web Service是標準;
3)、Remoting通常須要經過一個WinForm或是Windows服務進行啓動,而Web Service則須要IIS進行啓動。
4)、在VS.Net開發環境中,專門對Web Service的調用進行了封裝,用起來比Remoting方便
我建議仍是採用Web Service好些,對於開發來講更容易控制Remoting通常用在C/S的系統中,Web Service是用在B/S系統中後者仍是各語言的通用接口相同之處就是都基於XML爲了能清楚地描述Web Service 和Remoting之間得區別,我打算從他們的體系結構上來講起:
Web Service大致上分爲5個層次:
1). Http傳輸信道
2). XML的數據格式
3). SOAP封裝格式
4). WSDL的描述方式
5). UDDI
整體上來說,.Net 下的 Web Service結構比較簡單,也比較容易理解和應用:通常來說在.Net結構下的WebService應用都是基於.Net framework以及IIS的架構之下,因此部署(Dispose)起來相對比較容易點。從實現的角度來說,首先WebService必須把暴露給客戶端的方法所在的類繼承於:System.Web.Services.WebService這個基類 其次所暴露的方法前面必須有[WebMethod]或者[WebMethodAttribute]
WebService的運行機理
首先客戶端從服務器的到WebService的WSDL,同時在客戶端聲稱一個代理類(Proxy Class) 這個代理類負責與WebService服務器進行Request 和Response 當一個數據(XML格式的)被封裝成SOAP格式的數據流發送到服務器端的時候,就會生成一個進程對象而且把接收到這個Request的SOAP包進行解析,而後對事物進行處理,處理結束之後再對這個計算結果進行SOAP包裝,而後把這個包做爲一個Response發送給客戶端的代理類(Proxy Class),一樣地,這個代理類也對這個SOAP包進行解析處理,繼而進行後續操做。 這就是WebService的一個運行過程。
下面對.Net Remoting進行歸納的闡述:
.Net Remoting 是在DCOM等基礎上發展起來的一種技術,它的主要目的是實現跨平臺、跨語言、穿透企業防火牆,這也是他的基本特色,與WebService有所不一樣的是,它支持HTTP以及TCP信道,並且它不只能傳輸XML格式的SOAP包,也能夠傳輸傳統意義上的二進制流,這使得它變得效率更高也更加靈活。並且它不依賴於IIS,用戶能夠本身開發(Development)並部署(Dispose)本身喜歡的宿主服務器,因此從這些方面上來說WebService其實上是.Net Remoting的一種特例。
ASP.Net Web 服務基礎結構經過將 SOAP 消息映射到方法調用,爲 Web 服務提供了簡單的 API。經過提供一種很是簡單的編程模型(基於將 SOAP 消息交換映射到方法調用),它實現了此機制。ASP.Net Web 服務的客戶端不須要了解用於建立它們的平臺、對象模型或編程語言。而服務也不須要了解向它們發送消息的客戶端。惟一的要求是:雙方都要承認正在建立和使用的 SOAP 消息的格式,該格式是由使用 WSDL 和 XML 架構 (XSD) 表示的 Web 服務合約定義來定義的。
.Net Remoting 爲分佈式對象提供了一個基礎結構。它使用既靈活又可擴展的管線向遠程進程提供 .Net 的徹底對象語義。ASP.Net Web 服務基於消息傳遞提供很是簡單的編程模型,而 .Net Remoting 提供較爲複雜的功能,包括支持經過值或引用傳遞對象、回調,以及多對象激活和生命週期管理策略等。要使用 .Net Remoting,客戶端須要瞭解全部這些詳細信息,簡而言之,須要使用 .Net 創建客戶端。.Net Remoting 管線還支持 SOAP 消息,但必須注意這並無改變其對客戶端的要求。若是 Remoting 端點提供 .Net 專用的對象語義,無論是否經過 SOAP,客戶端必須理解它們。
13.什麼是code-behind技術
對於每個ASPx文件能夠相對應一個CS文件類,ASPx繼承自對應的CodeBehind類,在編譯時,CodeBhind類編譯到webui工程對應的dll中,而ASPx頁面中的內含代碼和ASPx一塊兒編譯到temporary.dll中,被客戶端瀏覽器訪問。
14.概述三層結構體系
webUI層:封裝基本的頁面佈局形式,即表示層
DataAccess(DAO)層:數據訪問層,利用各類相關的技術,與底層數據庫進行交互
Business層:業務邏輯層,封裝整個程序的業務邏輯代碼,主要與DAO層相關聯
Model 層: 封裝程序領域對象,該層能夠在上面的三層之間進行很好的交互
這只是基本的三層架構設計,若是利用設計模式,則能夠在此基礎上進行靈活的變化
15.ASP.Net如何實現MVC模式,舉例說明!
在ASP.Net 中實現MVC模式,相對於 JAVA沒有那麼快捷,可是還是能夠實現的
且因爲代碼隱藏和事件驅動得引入,意義不時很大,具體的實現,能夠利用HttpHandler,如此,則應在Web.config文件中配置相關的節點
//Author:renfuming
<httpHandlers>
<add verb="*" path="SendTopic.ASPx" type="wyzBBS.Servers.SendRootHandler"/>
<add verb="*" path="SelectTopic.ASPx" type="wyzBBS.Servers.SelectTopicHandler"/>
<add verb="*" path="Question.ASPx" type="wyzBBS.Servers.QuestionHandler"/>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
16.值類型和引用類型的區別?
C# 支持兩種類型:「值類型」和「引用類型」。 值類型(如 char、int 和 float)、枚舉類型和結構類型。 引用類型包括類 (Class) 類型、接口類型、委託類型和數組類型。 值類型與引用類型的區別在於值類型的變量直接包含其數據,而引用類型的變量則存儲對象引用。對於引用類型,兩個變量可能引用同一個對象,所以對一個變量的操做可能影響另外一個變量所引用的對象。對於值類型,每一個變量都有本身的數據副本,對一個變量的操做不可能影響另外一個變量
17.瞭解程序集強簽名嗎?
用強名稱來給程序集簽名即謂之程序集強簽名! 經過簽發具備強簽名的程序集合,能夠確保名稱的全局惟一性!由於強名稱是依賴於惟一的密鑰對來確保名稱的惟一性,其餘人不會生成與你相同的程序集名稱(不一樣的私鑰產生的名稱不一樣) 強名稱保護程序集的版本沿襲,由於強名稱的惟一性可以確保沒有其餘人可以生成你的程序集的後續版本 強名稱提供可靠的完整性檢查,經過.Net Framework安全檢查後,能夠確保程序集內容在生成後未被更改過! 要注意的是,具備強名稱的程序集引用其餘程序集,若是這個程序集沒有強名稱,那麼具備強名稱的程序集所帶來的好處,並依舊會產生DLL衝突!所以具備強名稱的程序集只能引用其餘具備強名稱的程序集。
18. C#中接口和類有什麼區別?
接口是負責功能的定義,項目中經過接口來規範類,操做類以及抽象類的概念!而類是負責功能的具體實現!在類中也有抽象類的定義,抽象類與接口的區別在於:抽象類是一個不徹底的類,類裏面有抽象的方法,屬性,也能夠有具體的方法和屬性,須要進一步的專業化。但接口是一個行爲的規範,裏面的全部東西都是抽象的!
一個類只能夠繼承一個基類也就是父類,但能夠實現多個接口。
19.View State 的做用和實現方式?
設置是否要保存控件的狀態,其功能的實質是利用隱藏表單域實現 若是設爲false且在Page_Load中沒有從新綁定數據的話,只要頁面一刷新,控件的內容就沒了 若是設爲true,則頁面會保存控件的內容 在一些不須要保存狀態的頁面中最好把它設爲false,爲什設爲true會增長服務器的負擔隱藏域。
20.在ASP.Net中能夠利用哪些對象存儲狀態?幾種維持狀態的對象應用場合以及優缺點?
主要用Application,session,viewstate,cookie,cache。
Application:應用程序級別的共享變量,優勢是應用程序一開啓該站點都能訪問此變量。缺點:全部對此進行寫入操做要加鎖,由此共享變量鎖帶來的內存開銷只有此應用程序關閉才能結束。
Session:維護用戶我的的狀態信息,優勢:我的所從事活動,如登陸信息,購物車信息等較安全並且又服務器維護較穩定。缺點:維持http 鏈接的sessionID仍然有缺陷,同時爲每一個用戶維護狀態信息,服務器內存開銷很大。
Viewsate:如4所說,在一些場合能體現它的特色,但同時帶來的缺點:影響整個頁面的速度以及隱藏字段未加密。
Cookie:優勢是將狀態信息維護在客戶端的一個文本文件,不須要耗用服務器的內存,是目前各大網站主要採用的方式。 缺點:因爲其將狀態
信息存貯在客戶端,極可能由別人破解此文件而得到此人的我的隱私和機密信息。其受限大小爲4K.
Cache:優勢是提供的此功能很強大,如文件緩存依賴、API依賴、數據庫依賴以用於存貯數據變化而更換緩存狀態數據。提供存儲週期
從httpcontext到httpruntime。缺點:耗用服務器內存。Request
21.簡單說說 ASP.Net 中基於表單的身份驗證方式的用法?
配置文件提供對站點那些目錄的保護以及登陸頁面,當訪問該目錄的文件時,若是用戶未認證經過,將轉入登陸頁面,用戶輸入用戶名和密碼,將此參數傳入認證模塊authentication,該模塊負責認證,若是經過將isauthentication設置爲true,並返回用戶的identity對象,此時頁面將轉入初始請求頁,若是未經過,將不容許訪問此目錄。
22.是否瞭解 URL Rewrite?請簡要說明其原理和在 ASP.Net 中的實現方式?
通常放在httpmodule中applicatioin_request事情中,當每次http請求,將此URL定位到重寫的url函數中並返回重寫後的URL地址。主要用於當咱們站點板塊移動時因爲連接仍然指向舊地址,故能夠重定向到新的地址,固然查詢參數也能夠重寫。url-mapping配置
23. 在超過10萬條記錄的頁面顯示時,你如何處理分頁,有多少種替代方案?
通常根據頁面選擇的第幾頁PageIndex,以及服務端配置文件配置的每頁行數PageSize,經過傳入參數傳入存貯過程,由其返回相應行數pagesize的記錄。即每一頁數據都由服務端返回。能夠利用緩存Cache,將數據一次加載,在結合ASP.Net2.0中數據庫緩存方式,跟蹤數據庫表的信息的變化,自動更新緩存信息 對於數據分野頁,也能夠利用gridview的數據邦定控件的自動分頁的方式
24. DataReader和DataSet的異同?
Daatareader和datatset都是經過從數據源取數據。不一樣點:datareader提供只進行流的方式讀取數據。Dataset提供一種容器裏面主要由表以及表關係,由適配器來提供從數據源取得數據填充到此容器的表中。
DataReader和DataSet最大的區別在於,DataReader使用時始終佔用SqlConnection,在線操做數據庫..任何對SqlConnection的操做都會引起DataReader的異常..由於DataReader每次只在內存中加載一條數據,因此佔用的內存是很小的..由於DataReader的特殊性和高性能.因此DataReader是隻進的..你讀了第一條後就不能再去讀取第一條了..DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接..由於DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行回傳更新操做
25. 你會利用那些工具進行數據庫的性能分析及其優化?說說你以爲優化數據庫須要注意的方面。好比:如何設計優化查詢爲主、插入更新爲主的表。我主要經過執行計劃以及索引優化以及客戶統計和服務器跟蹤工具來檢測從SQL到索引、硬盤IO和時間等信息。 對於查詢爲主的表,首先對數據量的大小有必定的估計,當達到必定程度應採用水平分區,有的根據主鍵有的根據時間段來區分。因爲此表每每插入更新不是太快,可對適當字段採用索引而且填充因子能夠儘可能大。SQL優化等。 對於插入更新爲主的表,我以爲健壯性更重要,只要根據標準外部採用存貯過程就能夠了。
26. 數據庫某表主鍵自增,是很常見的情形。在ASP. Net或C#程序中,要求向該表插入一條記錄,並立刻從該表查出這條記錄。不能使用時間戳,請問你如何實現?
插入一條記錄會返回◎◎identity,經過它就是該記錄的主鍵,再select一下就能夠了
27.Xhtml的三種DOCTYPE分別有什麼含義?請說明。簡單說明各個狀況下,那些標籤能夠使用,那些不能夠使用?
XHTML 1.0 提供了三種DTD聲明可供選擇:W3C規範
過渡的(Transitional):要求很是寬鬆的DTD,它容許你繼續使用HTML4.01的標識(可是要符合xhtml的寫法)。完整代碼以下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">嚴格的(Strict):要求嚴格的DTD,你不能使用任何表現層的標識和屬性,例如<br>。完整代碼以下:<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
框架的(Frameset):專門針對框架頁面設計使用的DTD,若是你的頁面中包含有框架,須要採用這種DTD。完整代碼以下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
28.請舉例說明XHtml代碼規範,越多越好。
1).全部的標記都必需要有一個相應的結束標記之前在HTML中,你能夠打開許多標籤,例如<p>和<li>而不必定寫對應的</p>和</li>來關閉它們。但在XHTML中這是不合法的。XHTML要求有
嚴謹的結構,全部標籤必須關閉。若是是單獨不成對的標籤,在標籤最後加一個"/"來關閉它。例如:
<br /><img height="80" alt="網頁設計師" src="../images/logo_w3cn_200x80.gif" width="200" />
2).全部標籤的元素和屬性的名字都必須使用小寫
與HTML不同,XHTML對大小寫是敏感的,<title>和<TITLE>是不一樣的標籤。XHTML要求全部的標籤和屬性的名字都必須使用小寫。例
如:<BODY>必須寫成<body> 。大小寫夾雜也是不被承認的,一般dreamweaver自動生成的屬性名字"onMouseOver"也必須修改
成"onmouseover"。
3).全部的XML標記都必須合理嵌套
一樣由於XHTML要求有嚴謹的結構,所以全部的嵌套都必須按順序,之前咱們這樣寫的代碼:
<p><b></p></b>
必須修改成:
<p><b></b></p>
就是說,一層一層的嵌套必須是嚴格對稱。
4).全部的屬性必須用引號""括起來
在HTML中,你能夠不須要給屬性值加引號,可是在XHTML中,它們必須被加引號。例如:
<height=80>
必須修改成:
<height="80">
特殊狀況,你須要在屬性值裏使用雙引號,你能夠用",單引號能夠使用',例如:
<alt="say'hello'">
5).把全部<和&特殊符號用編碼表示
任何小於號(<),不是標籤的一部分,都必須被編碼爲& l t ;
任何大於號(>),不是標籤的一部分,都必須被編碼爲& g t ;
任何與號(&),不是實體的一部分的,都必須被編碼爲& a m p;
注:以上字符之間無空格。
6).給全部屬性賦一個值
XHTML規定全部屬性都必須有一個值,沒有值的就重複自己。例如:
<td nowrap> <input type="checkbox" name="shirt" value="medium" checked>
必須修改成:
<td nowrap="nowrap"> <input type="checkbox" name="shirt" value="medium" checked="checked">
7).不要在註釋內容中使「--」
「--」只能發生在XHTML註釋的開頭和結束,也就是說,在內容中它們再也不有效。例以下面的代碼是無效的:
<!--這裏是註釋-----------這裏是註釋-->
用等號或者空格替換內部的虛線。
<!--這裏是註釋============這裏是註釋-->
以上這些規範有的看上去比較奇怪,但這一切都是爲了使咱們的代碼有一個統1、惟一的標準,便於之後的數據再利用。
29. 客戶端與瀏覽器:若是讓你作一個TreeView控件,你的思路
我會採用javascript來作,主要採用htc。 數據經過XML. 經過htc操做XML並定義一些方法如:load、addnode、deletenode、updatenode、selectednode等方法一些屬性如對圖標、節點位置、節點前複選框等屬性,也會提供一些默認事件如修改節點先後刷新等。
30.談談論壇聊天室IM和各類網站程序的交互與刷新思路的差別與共同點。
IM交互式信息通訊 ajax刷新思路,對於集中刷新方式,應該有部分和所有刷新的區別這個但願你們上網去找詳細的資料
31.談談對WSE的認識。
目前Web Service普遍採用Https來保障安全,可是該方法也有不少的缺點,尤爲是應用於如今愈來愈複雜的Web Service安全需求。
1.Https提供的是點對點安全保護,而Web Service的特色就是消息每每就要通過多箇中介才能到達最終的服務提供方,每一箇中介還有可能對消息作出些處理,也就是說它須要的是端到端的保護。這顯然是Https所不能提供的。
2.Https是在傳輸層提供的安全,而不是在消息層面,也就是隻有在傳輸的過程當中纔有消息纔是安全的(加密的),而一旦到達了終點就是明文的了。好比能夠從消息隊列中將重要的信息竊取出來。
3.在Https的創建完共享密鑰後,傳遞消息的時候並無使用數字簽名技術,因此也就沒法獲得抗否定性的能力。而這又是在電子商務中不可豁缺的。
4.因爲Https提供的是傳輸層的安全,固然也就不可能達到消息安全所須要的靈活性的要求。好比加密消息中的部分元素;用不一樣的密鑰加密消息的不一樣部分,從而讓不一樣的消息接受者查看與之對應的信息。所以,爲了適應Web Service對安全的特殊要求,IBM和MS等公司共同制定了WS-Security規範。從新回顧安全問題的三個概念:Confidentiality(機密性), Integrity(完整性), Authentication(身份鑑別),在Web Service使用SOAP(XML 格式)做爲消息傳輸協議的背景下,分別產生了XML Digital Signature,XML Encryption和SAML(XML格式的Security Token), 而WS-Security則是如何將他們組合起來以知足Web Service安全需求的一套規範Web Services Enhancements 2.0 for Microsoft .Net (WSE)是一個用來建設Web服務的.Net類庫,它支持最新的Web服務協議,包括WS-Security、WS-SecureConversation、WS-Trust、WS-Policy、WS-SecurityPolicy、WS-Addressing和 WS-Attachments。 WSE可以使開發人員跨安全平臺建設可升級的、安全的Web服務。它支持用傳輸的方式發送SOAP消息,而不是HTTP。另外一個特色是具備創建SOAP路由器的功能,SOAP消息被髮送給SOAP路由器,路由器再將工做交付給託管該服務的Web服務器。
32. 你用過哪些版本控制工具
各位同窗兄弟能夠根據本身的實際狀況,談論一些本身在使用這些工具時所遇到的問題以及體會TFS(ASP.Net)、cvs、svn
33. 在開發中你利用那些工具進行單元測試和模塊測試NUNIT和PDM.頁面測試 httpunuit
34.如何進行Bug管理由一個BUG跟蹤平臺,提供該程序的各個模塊的BUG,以及級別,以及解決時間等信息
35. 如何生成和管理開發文檔通常用NDOC來生成文檔,大部分文檔主要仍是Word爲主。主要是各個模塊以及版本的控制等
37.若是你是一位軟件架構師,您將如何去搭建一個符合n-tie的架構?並請描述一下您搭建的每一層的做用。(注意:請您考慮項目中有WebService的狀況)
主要根據實際狀況來決定搭建的層數以及各層的規格。 通常狀況下,可以下搭:
數據層:主要提供數據服務,該層繼承實體的接口並定製本身的數據提取和存儲。並根據數據庫類型如sqlserver、oracle等來創建此層服務。執行邏輯我我的偏好採用存貯過程。
業務層:因爲定製的實體的屬性和操做實體的方法已由數據層得到和執行,故業務邏輯組件對此實體進行組合以知足上層對業務邏輯組件的調用,webservice也是建在此層,以用於提供數據服務和邏輯執行。
表示層:通常定製不一樣的容器控件,以用於加載從業務層不一樣類型的數據便於呈現。固然也要此層的風格以及各類顯示設置,webservice顯示頁面建在層,經過加載對指定目錄的webservice提供的方法用於呈現。
38.能否簡要的介紹ASP.Net 2.0 Membership,WebPart和C#的匿名函數和泛型等你認爲.Net 2.0本身感興趣的內容,但願能夠簡要地闡述其中的特色(本題很是的重要)
1) Membership:成員管理主要提供了一套對用戶信息、用戶角色、用戶配置信息的用戶系統。經過MembershipConfigHandler加載配置文件中公有的基礎信息,對配置文件中的信息進行了嚴格的邊界檢查和類型檢查。經過MembershipProvider提供了實現membership的抽象方法以及配置信息。由SqlMembershipProvider繼承MembershipProvider來實現sqlclient的數據提供服務。業務和實現相剝離,以利於擴展。固然裏面有不少特色也有不少細節等。
2) WebPart:主要提供頁面佈局和自定義以及換皮膚的功能。經過定義主題Theme來決定總體的佈局風格,以及版面經過設定不一樣的區域Zone來決定版面各塊的區域設置。經過不一樣的skin和css來肯定風格。讓用戶可以保存本身的我的設置以及回覆默認設置的功能。
3) 匿名函數:使用匿名方法能夠減小因實例化委託所須要的開銷,1.0中使用委託必須實例化委託而且必須將所調用的類和方法做爲參數傳入也即命名方法,固然若是所調用的委託具備多變性應該還採用命名方法。
4) 泛型:通常用於集合類。因爲之前集合類數據都由framework隱式轉化爲object類型,這種開銷很大。而用泛型,你就能夠指定傳入對象類型,而用於生成強類型的數據集,這樣各類操做就能夠使用指定類型的特性和優點了,天然速度也快了不少。固然接口、方法、類等都一樣使用這種方式
5) 編譯模型除了ASP.Net1.0支持的批編譯,也提供新的編譯模式。
6) 在httpmodule和httphander的處理速度要比之前1.0要快。
7) 在請求響應輸出中,將緩衝區由ASP.Net宿主進程移到本機內存,能夠消除資源瓶頸。
8) 其緩存模型提供了數據庫依賴和緩存後替功能。
9) 與IIS6.0集中能提供更好的性能,主要體如今緩存和緩衝操做上。
39.ASP.Net中的內建對象Page對象:Web Form 網頁在執行的時候會被編譯成Page 對象,Page對象通知來設置與網頁有關的屬性、方法和事件;
Response對象:用來決定服務器端在何時或如何輸出數據到客戶端;
Request對象:用來捕獲由客戶端返回服務器的數據;
Server對象:提供服務器端最基本的屬性和方法;
Application對象:用來記錄不擊客戶端共享的變量;
Session對象:用來記錄各客戶端的專用變量;
Cookies對象:爲Web應用程序保存訪問者相關信息.
40..Net具備跨平臺的性質嗎?如今是否能夠在UNIX平臺上普遍的應用?很是了不得的工具INet,實現.Net跨平臺!
執行摘要微軟的.Net是一套鏈接信息、人、系統、設備的軟件技術。此新一代的技術是基於Web服務和小模塊建立的應用,能夠使任何應用彼此互連而且能鏈接到InterNet上的其餘大型應用。.Net的基礎核心是集成開發設備(IDE), Visual Studio.Net和一種新的應用執行環境-Microsoft .Net開發框架。這些系統使開發人員可以像靈活使用 Visual Basic 和C#同樣開發強大的應用程序和Web服務。 可是有侷限的一點是:用.Net開發的應用程序必須運行於.Net服務器或者客戶端。若是全部的用戶都按照.Net運行環境技術標準化這也許可行,可是實際上固然不是這樣。成千上百萬臺電腦運行的是Linux、Unix,OS X 和其餘操做系統,而這種環境不是.Net應用程序的標準化運行環境。所以軟件開發組織須要考慮: 如何有效利用它們的 Microsoft開發人員和Visual Studio.Net的技術特徵和優點可是仍然能夠訪問非微軟服務器, PC機,手提電腦和移動設備?怎樣才能使他們用.Net編寫的程序運行時不受運行環境的侷限? Stryon公司開發的iNet解決了這一難題。iNet能夠使應用程序和Web服務在Visual Basic 和C#下開發,但發佈於任何支持Java的運行環境,網絡主機也從IBM網絡服務器擴展到Linux和Unix的服務器。有了iNet技術,開發人員既能夠利用Visual Studio .Net開發環境的優點,可是又不侷限於Microsoft的運行環境。
41.寫出global.asax文件的主要用途?
做用和ASP的global.asa同樣,它能夠使咱們執行ASP.Net應用程序一層事件的代碼,如:application_start等等,使你能夠在這些事件中做一些自定義的處理;也能夠定義應用程序一層的變量,如:Session等,這在整個ASP.Net應用程序中起做用。
42.列出web.config的經常使用的配置段,並對每一個配置段進行簡要的說明。
Web.config文件是一個XML文本文件,它用來儲存 ASP.Net Web 應用程序的配置信息(如最經常使用的設置ASP.Net Web 應用程序的身份驗證方式),它能夠出如今應用程序的每個目錄中。當你經過VB.Net新建一個Web應用程序後,默認狀況下會在根目錄自動建立一個默認的 Web.config文件,包括默認的配置設置,全部的子目錄都繼承它的配置設置。若是你想修改子目錄的配置設置,你能夠在該子目錄下新建一個Web.config文件。它能夠提供除從父目錄繼承的配置信息之外的配置信息,也能夠重寫或修改父目錄中定義的設置。在運行時對Web.config文件的修改不須要重啓服務就能夠生效(注:<processModel> 節例外)。固然Web.config文件是能夠擴展的。appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization受權, 此節設置應用程序的受權策略.
43.ASP.Net中的組件相對於ASP的組件部署方面有什麼優勢?
ASP.Net和ASP的最大區別在於編程思惟的轉換,而不只僅在於功能的加強。ASP使用vbs/js這樣的腳本語言混合html來編程,而那些腳本語言屬於弱類型、面向結構的編程語言,而非面向對象,這就明顯產生如下幾個問題:
1)、代碼邏輯混亂,難於管理:因爲ASP是腳本語言混合html編程,因此你很難看清代碼的邏輯關係,而且隨着程序的複雜性增長,使得代碼的管理十分困難,甚至超出一個程序員所能達到的管理能力,從而形成出錯或這樣那樣的問題。
2)、代碼的可重用性差:因爲是面向結構的編程方式,而且混合html,因此可能頁面原型修改一點,整個程序都須要修改,更別提代碼重用了。
3)、弱類型形成潛在的出錯可能:儘管弱數據類型的編程語言使用起來回方便一些,但相對於它所形成的出錯概率是遠遠得不償失的。
以上是語言自己的弱點,在功能方面ASP一樣存在問題,第一是功能太弱,一些底層操做只能經過組件來完成,在這點上是遠遠比不上php/jsp,其次就是缺少完善的糾錯/調試功能,這點上ASP/php/jsp差很少。那麼,ASP.Net有哪些改進呢? ASP.Net擺脫了之前ASP使用腳本語言來編程的缺點,理論上能夠使用任何編程語言包括c++ , vb,js等等,固然,最合適的編程語言仍是ms爲.Net frmaework專門推出的c#(讀csharp),它能夠看做是vc和java的混合體吧,儘管ms本身講c#內核中更多的象vc,但實際上我仍是認爲它和java更象一些吧。首先它是面向對象的編程語言,而不是一種腳本,因此它具備面向對象編程語言的一切特性,好比封裝性、繼承性、多態性等等,這就解決了剛纔談到的ASP的那些弱點。封裝性使得代碼邏輯清晰,易於管理,而且應用到ASP.Net上就能夠使業務邏輯和html頁面分離,這樣不管頁面原型如何改變,業務邏輯代碼都沒必要作任何改動;繼承性和多態性使得代碼的可重用性大大提升,你能夠經過繼承已有的對象最大限度保護你之前的投資。而且c#和c++、java同樣提供了完善的調試/糾錯體系
1)、 通過解釋的語言有兩個缺點,一是缺少強類型,二是缺少一個編譯環境,這將致使性能和伸縮性的問題
2)、ASP並無爲應用程序提供一個固有的結構,將代碼和頁面混合在一塊兒使代碼變得很複雜,源文件變的很大,結構和代碼複用很難,維護也很難。
3)、ASP中不管工做多簡單都必須在ASP中編寫代碼完成絕大多數工做,如驗證表單字段等,其餘還包括告訴緩存頁面內容,保持表單狀態等,甚至添加新HTML控件也須要寫原始HTML。
4)、瀏覽器兼容性。移動設備訪問站點,必須編寫代碼檢測這些設備,同時爲其提供合適內容。
5)、標準兼容性,XHTML被愈來愈多人接受,XML和XSL/T也獲得普遍應用,而且與移動設備進行通訊還應該支持WML,這意味着ASP應用不只要利用現有標準工做,還要易於升級以支持未來的標準 ASP.Net四個主要目標 使代碼更清晰 提升可部署性,可伸縮性,安全性以及可靠性 爲不一樣瀏覽器和設備提供更好的支持 支持一種全新的web應用程序。
44.簡述一下webservice技術,在何種場合下適合使用這項技術?
Web Service 是一種新的web應用程序分支,他們是自包含、自描述、模塊化的應用,能夠發佈、定位、經過web調用。Web Service能夠執行從簡單的請求到複雜商務處理的任何功能。一旦部署之後,其餘Web Service應用程序能夠發現並調用它部署的服務。Web Service是一種應用程序,它能夠使用標準的互聯網協議,像超文本傳輸協議(HTTP)和XML,將功能綱領性地體如今互聯網和企業內部網上。可將Web服務視做Web上的組件編程。P2P 跨平臺技術性應用 Web Services扮演什麼角色?Web services角度所預示的四個趨勢:
◆內容更加動態:一個web service必須能合併從多個不一樣源來的內容,能夠包括股票,天氣,新聞等,在傳統環境中的內容,如存貨水平,購物訂單或者目錄信息等,都從後端系統而來
◆帶寬更加便宜:web services能夠分發各類類型的內容(音頻,視頻流等)
◆存儲更便宜: web services必須能聰明地處理大量數據,意味着要使用數據庫,LDAP目錄,緩衝,和負載平衡軟件等技術保持可擴展能力
◆廣泛式計算更重要:web services不能要求客戶使用某一版本的windows的傳統瀏覽器,必須支持各類設備,平臺,瀏覽器類型,各類內容類型。兩種重要技術要達到這樣的目標,Web services要使用兩種技術:
◆XML XML是在web上傳送結構化數據的偉大方式,Web services要以一種可靠的自動的方式操做數據,HTML不會知足要求,而XML能夠使web services十分方便的處理數據,它的內容與表示的分離十分理想
◆SOAP SOAP使用XML消息調用遠程方法,這樣web services能夠經過HTTP協議的post和get方法與遠程機器交互,並且,SOAP更加健壯和靈活易用。
51.Params是什麼含義?
Params是C#中的關鍵字,採用此關鍵字能夠指定參數數目爲可變; 在方法聲明中的 params 關鍵字以後不容許任何其餘參數,而且在方
法聲明中只容許一個 params 關鍵字。
如:
public int fConvert(params int[] iParas)
{
}
52. C#中有沒有運算符重載?可否使用指針?
有,C#中也有運算符重載,如對運算符「+」進行重載;
C#中也能夠使用指針,但要聲明爲unsafe。
53.Internal修飾符有什麼含義?
internal數據訪問修飾符,表示對所修飾的成員在當前程序集內能夠進行沒有任何限制的訪問;但在當前程序集外部則不能進行訪問,其可訪問性級別低於public ,高於protected。
55. 私有程序集與共享程序集有什麼區別?
一個私有程序集一般爲單個應用程序所使用,而且存儲於這個應用程序所在的目錄之中,或此目錄下面的一個子目錄中。共享程序集一般存儲在全局程序集緩存(Global Assembly Cache)之中,這是一個由.Net運行時所維護的程序集倉庫。共享程序集一般是對許多應用程序都有用的代碼庫,好比.Net Framework類。
56. 請解釋進程與線程的區別?進程與程序的區別?
通常,一個應用程序對應於一個或多個進程,能夠把進程看做是該應用程序在操做系統中的標識;而一個進程一般由多個線程組成,而線程是操做系統爲該應用程序分配處理時間的最小單元。
57. CLR與IL分別是什麼含義?
CLR:公共語言運行時,相似於Java中的JVM,Java虛擬機;在.Net環境下,各類編程語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與操做系統進行通訊,而編程語言如C#.Net將盡可能避免直接與操做系統直接通訊,增強了程序代碼的執行安全性,能夠這樣看:CLR就是具體的編程語言如:C#.Net與操做系統之間的翻譯,同時它爲具體的編程語言提供了許多資源:
? 面向對象的編程模型(繼承、多態、異常處理和垃圾收集等)
? 安全模型
? 類型系統
? 全部.Net基類
? 許多.Net Framework類
? 開發、調試和評測(profiling)工具
? 執行和代碼管理
? IL到本地代碼(IL-to-native)轉換器和優化器IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;全部.Net源代碼(無論用哪一種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成爲機器碼,被解釋及執行。
58 .請解釋ASP。Net中以什麼方式進行數據驗證
Aps.Net 中有非空驗證,比較驗證,取值範圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另還有一個集中驗證信息處理控件
59(1).WEB控件能夠激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要使用自動傳回。
在web控件發生事件時,客戶端採用提交的形式將數據交回服務端,服務端先調用Page_Load事件,而後根據傳回的狀態信息自動調用服務端事件自動傳回是當咱們在點擊客戶端控件時,採用提交表單的形式將數據直接傳回到務端只有經過自動傳回才能實現服務端事件的機制,若是沒有自動回傳機制就只能調用客戶端事件,而不能調用服務端事件
59(2).WEB控件及HTML服務端控件可否調用客戶端方法?若是能,請解釋如何調用?
能夠調用
例如:<ASP:TextBox id="TextBox1" runat="server">
</ASP:TextBox>
<INPUT id="Button2" value="Button" name="Button2"
runat="server" >
59(3).請解釋ASP.Net中的web頁面與其隱藏類之間的關係?
一個ASP.Net頁面通常都對應一個隱藏類,通常都在ASP.Net頁面的聲明中指定了隱藏類例如一個頁面Tst1.ASPx的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.ASPx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.ASPx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類
61.請問: String類與StringBuilder類有什麼區別?爲何在.Net類庫中要同時存在這2個類?(簡答)
若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.Net框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
64.請敘述屬性與索引器的區別。
屬性 索引器
經過名稱標識。 經過簽名標識。
經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。
能夠爲靜態成員或實例成員。 必須爲實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表
65.請敘述const與readonly的區別。
每個class至多隻能夠定義一個static構造函數,而且不容許增長訪問級別關鍵字,參數列必須爲空。
爲了避免違背編碼規則,一般把static數據成員聲明爲private,而後經過statci property提供讀寫訪問。
const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。由於它是在編譯時就須要徹底評估。
const成員能夠使用另外一個const成員來初始化,前提是二者之間沒有循環依賴。readonly在運行期評估賦值,使咱們得以在確保「只讀訪問」的前提下,把object的初始化動做推遲到運行期進行。readonly 關鍵字與 const 關鍵字不一樣:const 字段只能在該字段的聲明中初始化。readonly 字段能夠在聲明或構造函數中初始化。所以,根據所使用的構造函數,readonly 字段可能具備不一樣的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。 readonly 只能在聲明時或者構造函數裏面初始化,而且不能在 static 修飾的構造函數裏面。
66.您須要建立一個ASP.Net應用程序,公司考慮使用Windows身份認證。全部的用戶都存在於AllWin這個域中。您想要使用下列認證規則來配置這個應用程序:
a、 匿名用戶不容許訪問這個應用程序。
b、 全部僱員除了Tess和King都容許訪問這個應用程序。
請問您應該使用如下哪個代碼段來配置這個應用程序?( A )
A. <authorization>
<deny users=」allwin\tess, allwin\king」>
<allow users=」*」>
<deny users=」?」>
</authorization〉
67.您要建立一個ASP.Net應用程序在DataGrid控件中顯示一個通過排序的列表。產品數據被存放於一個名爲PubBase的Microsoft SQL Server 數據庫。每一個產品的主鍵是ProductID,Numeric型而且每一個產品有一個字母描述字段,名爲ProductName。您使用一個SqlDataAdapter對象和一個SqlCommand對象經過調用一個存儲過程從數據庫中獲取產品數據。您將SqlCommand對象的CommandType屬性設置爲CommandType.StoredProcedure,並將它的CommandText屬性設置爲procProductList。您成功的獲取了一個DataTable對象
69. 列舉ASP.Net 頁面之間傳遞值的幾種方式。
1. 使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer
70. 請說明在.Net中經常使用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被僞造
input ttype="hidden" 簡單,可能被僞造
Url 參數簡單,顯示於地址欄,長度有限
數據庫穩定,安全,但性能相對弱Using 引入一個名子空間,或在使用了一個對像後自動調用其IDespose,New 實例化一個對像,或修飾一個方法,表此方法徹底重寫此方法
71.請簡述一下用Socket進行同步通信編程的詳細步驟
1)、在應用程序和遠程設備中使用協議和網絡地址初始化套接字
2)、在應用程序中經過指定端口和地址創建監聽
3)、遠程設備發出鏈接請求
4)、應用程序接受鏈接產生通訊scoket
5)、應用程序和遠程設備開始通信(在通信中應用程序將掛起直到通信結束)
6)、通信結束,關閉應用程序和遠程設備的Socket回收資源
72.什麼叫作SQL注入,如何防止?請舉例說明。
利用sql關鍵字對網站進行攻擊。過濾關鍵字'等 所謂SQL注入(SQL Injection),就是利用程序員對用戶輸入數據的合法性檢測不嚴或不檢測的特色,故意從客戶端提交特殊的代碼,從而收集程序及服務器的信息,從而獲取想獲得的資料。http://localhost/lawjia/show.ASP?ID=444 and user>0,這時,服務器運行Select * from 表名 where 字段=444 and user>0這樣的查詢,固然,這個語句是運行不下去的,確定出錯,錯誤信息以下:
?錯誤類型:Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)[Microsoft][ODBC SQL Server Driver][SQL Server]將 nvarchar 值 'sonybb' 轉換爲數據類型爲 int 的列時發生語法錯誤。
81.abstract class和interface有什麼區別?
答:聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。
82.啓動一個線程是用run()仍是start()?
答:啓動一個線程是調用start()方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。run()方法能夠產生必須退出的標誌來中止一個線程。
83.構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。
84.是否能夠繼承String類?
答:String類是final類故不能夠繼承。
85.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?
答:會執行,在return前執行。
86.swtich是否能做用在byte上,是否能做用在long上,是否能做用在String上?
答:switch(expr1)中,expr1是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能做用於swtich。
87.當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
88.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
89.List, Set, Map是否繼承自Collection接口?
答:List,Set是Map不是
161.Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==仍是equals()? 它們有何區別?
答:Set裏的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,爲的是當兩個分離的對象的內容和類型相配的話,返回真值。
90.數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法。
91.sleep() 和 wait() 有什麼區別?
答:sleep()方法是使線程中止一段時間的方法。在sleep 時間間隔期滿後,線程不必定當即恢復執行。這是由於在那個時刻,其它線程
一、簡述 private、 protected、 public、 internal 修飾符的訪問權限。
private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,該類內部和繼承類中能夠訪問。
public : 公共成員,徹底公開,沒有訪問限制。
internal: 當前程序集內能夠訪問。
二、ADO.Net中的五個主要對象
Connection:主要是開啓程序和數據庫之間的鏈接。沒有利用鏈接對象將數據庫打開,是沒法從數據庫中取得數據的。Close和Dispose的區別,Close之後還能夠Open,Dispose之後則不能再用。
Command:主要能夠用來對數據庫發出一些指令,例如能夠對數據庫下達查詢、新增、修改、刪除數據等指令,以及調用存在數據庫中的存儲過程等。這個對象是架構在Connection 對象上,也就是Command 對象是透過鏈接到數據源。
DataAdapter:主要是在數據源以及DataSet 之間執行數據傳輸的工做,它能夠透過Command 對象下達命令後,並將取得的數據放入DataSet 對象中。這個對象是架構在Command對象上,並提供了許多配合DataSet 使用的功能。
DataSet:這個對象能夠視爲一個暫存區(Cache),能夠把從數據庫中所查詢到的數據保留起來,甚至能夠將整個數據庫顯示出來,DataSet是放在內存中的。DataSet 的能力不僅是能夠儲存多個Table 而已,還能夠透過DataAdapter對象取得一些例如主鍵等的數據表結構,並能夠記錄數據表間的關聯。DataSet 對象能夠說是ADO.Net 中重量級的對象,這個對象架構在DataAdapter對象上,自己不具有和數據源溝通的能力;也就是說咱們是將DataAdapter對象當作DataSet 對象以及數據源間傳輸數據的橋樑。DataSet包含若干DataTable、DataTableTable包含若干DataRow。
DataReader:當咱們只須要循序的讀取數據而不須要其它操做時,能夠使用DataReader 對象。DataReader對象只是一次一筆向下循序的讀取數據源中的數據,這些數據是存在數據庫服務器中的,而不是一次性加載到程序的內存中的,只能(經過遊標)讀取當前行的數據,並且這些數據是隻讀的,並不容許做其它的操做。由於DataReader 在讀取數據的時候限制了每次只讀取一筆,並且只能只讀,因此使用起來不但節省資源並且效率很好。使用DataReader 對象除了效率較好以外,由於不用把數據所有傳回,故能夠下降網絡的負載。
ADO.Net 使用Connection 對象來鏈接數據庫,使用Command 或DataAdapter對象來執行SQL語句,並將執行的結果返回給DataReader 或 DataAdapter ,而後再使用取得的DataReader 或DataAdapter 對象操做數據結果。
三、列舉ASP.Net 頁面之間傳遞值的幾種方式。
1).使用QueryString, 如....?id=1; response. Redirect()....
2).使用Session變量
3).使用Server.Transfer
4).Cookie傳值
1三、在dotNet中類(class)與結構(struct)的異同?
Class能夠被實例化,屬於引用類型,是分配在內存的堆上的。類是引用傳遞的。
Struct屬於值類型,是分配在內存的棧上的。結構體是複製傳遞的。加分的回答:Int3二、Boolean等都屬於結構體。
1四、堆和棧的區別?
棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數等都在棧內存中。
堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存的大小。
1五、能用foreach遍歷訪問的對象的要求
須要實現IEnumerable接口或聲明GetEnumerator方法的類型。
1六、GC是什麼? 爲何要有GC?
C/C++中由程序員進行對象的回收像學校食堂中由學生收盤子,.Net中由GC進行垃圾回收像餐館中店員去回收。
GC是垃圾收集器(Garbage Collection)。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。GC只能處理託管內存資源的釋放,對於非託管資源則不能使用GC進行回收,必須由程序員手工回收,一個例子就是FileStream或者SqlConnection須要程序員調用Dispose進行資源的回收。
要請求垃圾收集,能夠調用下面的方法:GC.Collect()通常不須要手動調用GC.Collect()。當一個對象沒有任何變量指向(再也不能使用)的時候就能夠被回收了。
基礎知識:當沒有任何變量指向一個對象的時候對象就能夠被回收掉了,但不必定會當即被回收。
object obj = new object();//只有new纔會有新對象
Console.WriteLine(obj);
object obj2 = obj;
obj = null;
obj2 = null;
Console.WriteLine();
1八、值類型和引用類型的區別?
1).將一個值類型變量賦給另外一個值類型變量時,將複製包含的值。引用類型變量的賦值只複製對對象的引用,而不復制對象自己。
2).值類型不可能派生出新的類型:全部的值類型均隱式派生自 System.ValueType。但與引用類型相同的是,結構也能夠實現接口。
3).值類型不可能包含 null 值:然而,可空類型功能容許將 null 賦給值類型。
4).每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。
1九、C#中的接口和類有什麼異同。
不一樣點:
不能直接實例化接口。
接口不包含方法的實現。
接口能夠多繼承,類只能單繼承。
類定義可在不一樣的源文件之間進行拆分。
相同點:
接口、類和結構均可以從多個接口繼承。
接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員。
接口和類均可以包含事件、索引器、方法和屬性。
基礎知識:接口只能定義方法(只能定義行爲,不能定義實現也就是字段),由於事件、索引器、屬性本質上都是方法,因此接口中也能夠定義事件、索引器、屬性。
20、abstract class和interface有什麼區別?
相同點:
都不能被直接實例化,均可以經過繼承實現其抽象方法。
不一樣點:
接口支持多繼承;抽象類不能實現多繼承。
接口只能定義行爲;抽象類既能夠定義行爲,還可能提供實現。
接口只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的簽名,但不能定義字段和包含實現的方法;
抽象類能夠定義字段、屬性、包含有實現的方法。
接口能夠做用於值類型(Struct)和引用類型(Class);抽象類只能做用於引用類型。例如,Struct就能夠繼承接口,而不能繼承類。
加分的補充回答:講設計模式的時候SettingsProvider的例子。
2一、是否能夠繼承String類?
String類是sealed類故不能夠繼承。
3一、string str = null 與 string str =」」說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = \"\" 給它分配長度爲空字符串的內存空間。 string str = null沒有string對象,string str = 「」有一個字符串對象。
string s3 = string.Empty;//反編譯發現,string.Empty就是在類構造函數中 Empty = "";
34.在.Net中全部可序列化的類都被標記爲_____?
答:[serializable]
3五、什麼是code-Behind技術。
就是代碼隱藏,在ASP.Net中經過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前ASP那樣都代碼和html代碼混在一塊兒,難以維護。code-Behind是基於部分類技術實現的,在個人項目的三層代碼生成器中用到了部分類。
43.StringBuilder 和 String 的區別?
答:String 在進行運算時(如賦值、拼接等)會產生一個新的實例,而 StringBuilder 則不會。因此在大量字符串拼接或頻繁對某一字符串進行操做時最好使用 StringBuilder,不要使用 String
若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.Net框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
4四、.請敘述屬性與索引器的區別。 (*)
屬性 索引器
經過名稱標識。 經過簽名標識。
經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。
能夠爲靜態成員或實例成員。 必須爲實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表。
46. 請解釋ASP。Net中的web頁面與其隱藏類之間的關係?
一個ASP.Net頁面通常都對應一個隱藏類,通常都在ASP.Net頁面的聲明中指定了隱藏類例如一個頁面Tst1.ASPx的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.ASPx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.ASPx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類
ASPx頁面會編譯生成一個類,這個類從隱藏類繼承。
4九、您在什麼狀況下會用到虛方法?它與接口有什麼不一樣?
答案:子類從新定義父類的某一個方法時,必須把父類的方法定義爲virtual
在定義接口中不能有方法體,虛方法能夠。
實現時,子類能夠不從新定義虛方法,但若是一個類繼承接口,那必須實現這個接口。
不定項選擇:
(1) 如下敘述正確的是: B C
A. 接口中能夠有虛方法。B. 一個類能夠實現多個接口。 C. 接口不能被實例化。 D. 接口中能夠包含已實現的方法。
(2) 從數據庫讀取記錄,你可能用到的方法有:B C D
A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader
(3).對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源相關的應用程序定義的任務?(多選) ( ABCD )
A.Close B.Dispose C.Finalize
D.using E.Quit
(4)如下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最早初始化。
B.使用out參數,傳遞到out參數的參數必須最早初始化。
C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。
D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。
51. 單項選擇:
(1)下列選項中,(C)是引用類型。
a)enum類型 b)struct類型 c)string類型 d)int類型
(2).關於ASP.Net中的代碼隱藏文件的描述正確的是(C)
a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的建立用於與窗體交互。編程邏輯惟一與用戶界面不一樣的文件中。該文件稱做爲「代碼隱藏」文件,若是用C#建立,該文件將具備「.ascx.cs」擴展名。
b)項目中全部Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。
c)項目中全部的Web窗體頁的代碼隱藏文件都被編譯成項目動態連接庫(.dll)文件。
d)以上都不正確。
(3).下列描述錯誤的是(D)
a)類不能夠多重繼承而接口能夠;
b)抽象類自身能夠定義成員而接口不能夠;
c)抽象類和接口都不能被實例化;
d)一個類能夠有多個基類和多個基接口;
5二、DataReader和DataSet的異同?
DataReader使用時始終佔用SqlConnection,在線操做數據庫每次只在內存中加載一條數據,因此佔用的內存是很小的是隻進的、 只讀的DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接(非鏈接模式)DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行 回傳更新操做(動態操做讀入到內存的數據)
5三、public static const int A = 1;這段代碼有錯誤麼?
錯誤:const不能被修飾爲static ;由於定義爲常量 (const )後就是靜態的(static )。
5四、傳入某個屬性的set方法的隱含參數的名稱是什麼?
value,它的類型和屬性所聲名的類型相同。
5五、C#支持多重繼承麼?
類之間不支持,接口之間支持。類對接口叫作實現,不叫繼承。 類是爹、接口是能力,能有多個能力,但不能有多個爹。
5六、C#中全部對象共同的基類是什麼?
System.Object
5七、經過超連接怎樣傳遞中文參數?
答:用URL編碼,經過QueryString傳遞,用urlencode編碼 用urldecode解碼
5八、string、String;int、Int32;Boolean、bool的區別
String、Int3二、Boolean等都屬於.Net中定義的類,而string、int、bool至關於C#中對這些類定義的別名。CTS。
5九、Server.Transfer和Response.Redirect的區別是什麼?(常考)
答: Server.Transfer僅是服務器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向後的地址;Response.Redirect則是徹底的跳轉,瀏覽器將會獲得跳轉的地址,並從新發送請求連接。這樣,從瀏覽器的地址欄中能夠看到跳轉後的連接地址。
Server.Transfer是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,因此它的地址欄中仍是原來的地址。 這個過程當中瀏覽器和Web服務器之間通過了一次交互。
Response.Redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址,通常來講瀏覽器會用剛纔請求的全部參數從新請求。這個過程當中瀏覽器和Web服務器之間通過了兩次交互。
Server.Transfer不能夠轉向外部網站,而Response.Redirect能夠。
Server.Execute效果和Server.Transfer相似,可是是把執行的結果嵌入當前頁面。
60、不是說字符串是不可變的嗎?string s="abc";s="123"不就是變了嗎?(傳智播客.Net培訓班原創模擬題)
String是不可變的在這段代碼中,s原先指向一個String對象,內容是 "abc",而後咱們將s指向"123",那麼s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另外一個 String對象,內容爲"123",原來那個對象還存在於內存之中,只是s這個引用變量再也不指向它了。
6一、是否能夠從一個static方法內部發出對非static方法的調用?
不能夠。由於非static方法是要與對象關聯在一塊兒的,必須建立一個對象後,才能夠在該對象上進行方法調用,而static方法調用時不須要建立對象,能夠直接調用。也就是說,當一個static方法被調用時,可能尚未建立任何實例對象,若是從一個static方法中發出對非static方法的調用,那個非static方法是關聯到哪一個對象上的呢?這個邏輯沒法成立,因此,一個static方法內部不能發出對非static方法的調用。
6三、說出一些經常使用的類、接口,請各舉5個
要讓人家感受你對.Net開發很熟,因此,不能僅僅只列誰都能想到的那些東西,要多列你在作項目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。
經常使用的類:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>
經常使用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary
要出乎意料!不要僅僅完成任務!筆試不是高考!到處要顯出牛!
64說出幾個開源軟件?MySQL、Linux、 Discuz、Apache、Paint.Net、Android、Chrome、Notepad++……
開源項目有一些是開發包。開源軟件指的是能夠直接用的。Jquery、NPOI、ASP.Net MVC、Silverlight Toolkit、AJAX toolkit、json.Net 得瑟!
6六、什麼是sql注入?如何避免sql注入?
用戶根據系統的程序構造非法的參數從而致使程序執行不是程序員指望的惡意SQL語句。使用參數化的SQL就能夠避免SQL注入。
詳細參考複習ppt。舉例子,擺事實!
1' or 1=1
7二、post、get的區別
get的參數會顯示在瀏覽器地址欄中,而post的參數不會顯示在瀏覽器地址欄中;
使用post提交的頁面在點擊【刷新】按鈕的時候瀏覽器通常會提示「是否從新提交」,而get則不會;
用get的頁面能夠被搜索引擎抓取,而用post的則不能夠;
用post能夠提交的數據量很是大,而用get能夠提交的數據量則很是小(2k),受限於網頁地址的長度。
用post能夠進行文件的提交,而用get則不能夠。
參考閱讀:http://www.cnblogs.com/skyNet/archive/2010/05/18/1738301.html
解釋:引用類型和值類型的區別。
7六、下面程序的執行結果是什麼?(傳智播客.Net培訓班原創模擬題)
int i = 10;
Console.WriteLine(i++);
Console.WriteLine(++i);
Console.WriteLine(i=20);
Console.WriteLine(i==20);
答案:
10
12
20
True
解答:前兩個參考第80題,i++表達式的值爲i自增以前的值,因此打印10,執行完成後i變成11,執行++i的時候表達式的值爲自增之後的值12。C#中賦值表達式的值爲變量被賦值的值,所以最後一個就輸出i賦值後的值20
while((line=reader.ReadLine())!=null)
{
}
下面程序的執行結果是什麼?
bool b=false;
if(b=true)
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("no");
}
7八、下列哪一個名詞和WebService不直接相關?(B)(傳智播客.Net培訓班原創模擬題)
A、UDDI
B、GUID
C、WSDL
D、SOAP
WebService解決的三個問題:接口的自我描述;採用Http協議等常規協議,不用寫原始的Socket;基於Web服務器,不佔用80端口以外的端口。
UDDI用來自動發現WebService的協議(*)
SOAP和HTTP的關係:SOAP基於Http協議的,和普通網頁不一樣的是網頁返回HTML,SOAP則是符合SOAP協議的XML數據。
WSDL(WebService Defination Language)是對WebService上的方法名、參數進行描述的協議。對接口的自描述。
SOAP(Simple Object Access Protocol)是對參數、返回值以什麼樣的格式進行傳遞進行描述的協議。對報文的格式規範。
實際工做中應該是本身調用別人的WebService或者別人調用本身的WebService,溝通語言就是WSDL,拿到WSDL什麼都不用操心。
WebService是跨平臺、跨語言調用,能夠跨防火牆;缺點:效率低。因此適用於兩個非內部系統的通信(好比炒股軟件和證券交易所之間的通信)
WCF是對WebService、Socket、MQ等通信方式的一個統一,底層仍是採用這些通訊協議,能夠簡化這些程序的開發,不用再換不一樣通訊協議的時候重寫代碼而且學一堆新的技術。因此WCF和WebService不是一個競爭取代關係。
WCF是對.Net Remoting、WebService、MQ等通信方式的一個高級封裝,讓咱們開發不一樣通信協議的程序的時候很簡單,不用學更多的東西。並非替代.Net Remoting、WebService、MQ這些東西。
8一、.Net、ASP.Net、C#、VisualStudio之間的關係是什麼?(傳智播客.Net培訓班原創模擬題)
答:.Net通常指的是.Net Framework,提供了基礎的.Net類,這些類能夠被任何一種.Net編程語言調用,.Net Framework還提供了CLR、JIT、GC等基礎功能。
ASP.Net是.Net中用來進行Web開發的一種技術,ASP.Net的頁面部分寫在ASPx 文件中,邏輯代碼一般經過Code-behind的方式用C#、VB.Net等支持.Net的語言編寫。
C#是使用最普遍的支持.Net的編程語言。除了C#還有VB.Net、IronPython等。
VisualStudio是微軟提供的用來進行.Net開發的集成開發環境(IDE),使用VisualStudio能夠簡化不少工做,不用程序員直接調用csc.exe等命令行進行程序的編譯,並且VisualStudio提供了代碼自動完成、代碼高亮等功能方便開發。除了VisualStudio,還有SharpDevelop、MonoDevelop等免費、開源的IDE,VisualStudio Express版這個免費版本。
8二、AJAX解決什麼問題?如何使用AJAX?AJAX有什麼問題須要注意?項目中哪裏用到了AJAX?(傳智播客.Net培訓班原創模擬題)
答:AJAX解決的問題就是「無刷新更新頁面」,用傳統的HTML表單方式進行頁面的更新時,每次都要將請求提交到服務器,服務器返回後再重繪界面,這樣界面就會經歷:提交→變白→從新顯示這樣一個過程,用戶體驗很是差,使用AJAX則不會致使頁面從新提交、刷新。
AJAX最本質的實現是在Javascript中使用XMLHttpRequest進行Http的請求,開發中一般使用UpdatePanel、JQuery等方式簡化AJAX的開發,UpdatePanel的方式實現AJAX最簡單,可是數據通信量比較大,由於要來回傳整個ViewState,並且不靈活,對於複雜的需求則能夠使用JQuery提供的ajax功能。
UpdatePanel的內部原理。
AJAX最重要的問題是沒法跨域請求(www.rupeng.com →so.rupeng.com),也就是沒法在頁面中向和當前域名不一樣的頁面發送請求,能夠使用在當前頁面所在的域的服務端作代理頁面的方式解決。
在如鵬網項目中發帖的時候顯示相關帖的功能、站內搜索項目中顯示搜索Suggestion、數據採集項目中都用到了AJAX。
常考:不用任何框架編寫一個AJAX程序。XHR:XmlHttpRequest。背也要背下來!
若是面試的時候談AJAX談到UpdatePanel的時候,就是NB的時候!!!先侃UpdatePanel的原理!引出爲何Dom操做的動態效果在用UpdatePanel提交刷新之後沒有了,以及CKEditor被套在UpdatePanel中提交之後也變成了textarea,爲何把Fileupload放到Updatepanel中沒法實現無刷新上傳。說成是公司內部的一個菜鳥用UpdatePanel遇到這樣問題,因爲我懂XHR、UpdatePanel的原理,因此輕鬆解決!UpdatePanel生成的上萬行JS腳本,不適合於互聯網項目。「WebForm怎麼可能把開發人員編程傻子呢!不明白原理苦命呀!仍是MVC好呀,MVC。。。。。。。」
多準備幾把斧子!上來找一切機會甩斧子!
8四、Application 、Cookie和 Session 兩種會話有什麼不一樣?
答:Application是用來存取整個網站全局的信息,而Session是用來存取與具體某個訪問者關聯的信息。Cookie是保存在客戶端的,機密信息不能保存在Cookie中,只能放小數據;Session是保存在服務器端的,比較安全,能夠放大數據。
談到Session的時候就侃Session和Cookie的關係:Cookie中的SessionId。和別人對比說本身懂這個原理而給工做帶來的方便之處。
8五、開放式問題:你常常訪問的技術類的網站是什麼?
博客園(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文檔、msdn論壇(遇到問題先到網上搜解決方案,還不行就問同事,同事也解決不了就去MSDN論壇提問,必定能獲得解決)。Cnbeta.com。
8六、你對.Net的GC的理解
GC是.Net的垃圾收集器,能夠進行內存資源的回收,程序員無需關心資源的回收,當一個對象沒有任何引用的時候就能夠被回收了。一個對象能夠被回收並不意味着必定會被當即回收,GC會選擇時機進行回收。能夠調用GC.Collect()讓GC當即回收。GC不能回收非託管資源,對於非託管資源通常都實現了IDisposable接口,而後使用using關鍵字進行資源的回收。
10六、不用JQuery等框架實現AJAX無刷新登陸。(常考)
提示:用純XMLHttpRequest實現。
10七、Http狀態碼各是什麼意思。
301(永久重定向)、302 :重定向404 :頁面不存在
500:服務器內部錯誤
10八、 對html文本框進行賦值的JQuery語句,對html文本框進行取值的JQuery語句,對TextBox服務端控件進行取值的語句JQuery。
1十、Session有什麼重大BUG,微軟提出了什麼方法加以解決?(常考)
iis中因爲有進程回收機制,系統繁忙的話Session會丟失,IIS重啓也會形成Session丟失。這樣用戶就要從新登陸或者從新添加購物車、驗證碼等放到Session中的信息。能夠用State server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。可是(必定要寫上,這樣纔夠拽)我認爲這不是Bug,只能說是In-Proc方式存儲Session的缺陷,缺陷是和Bug不同的,In-Proc方式存儲Session會由服務器來決定何時釋放Session,這是By Design,In-Proc方式不知足要求的話徹底能夠用StateServer和數據庫的方式。
StateServer還能夠解決集羣Session共享的問題。
配置StateServer的方法:
http://support.microsoft.com/kb/317604
http://blog.csdn.Net/zj1103/archive/2008/09/14/2926773.ASPx
1十一、ASP.Net中<%%>、<%=%>、<%#%>的區別是什麼
<%%>是執行<%%>中的C#代碼,<%=%>是將=後表達式的值輸出到Response中,<%#%>是數據綁定,通常用在ListView、GridView、Repeater等控件的綁定中。數據綁定分爲:Eval:單向綁定和Bind:雙向綁定。
11三、說說在軟件設計中你遇到的以空間換時間的例子?
參考回答:談Cache(緩存)、索引這些例子。用額外的磁盤、內存空間的消耗來提升執行速度。Lucene.Net也是一個例子。
11四、ASP.Net中的錯誤機制。(常考)
參考:
定製錯誤頁來將顯示一個友好的報錯頁面。
頁面中未捕獲同樣會觸發Page_Error(不經常使用),應用程序中的未捕獲異常會觸發Application_Error。經過HttpContext.Current.Server.GetLastError()、HttpContext.Current.Error;拿到未捕捉異常,記錄到Log4Net日誌中。
11五、不用中間變量交換兩個變量(常考)
i = i + j;//i=30
j = i - j;//j=10;
i = i - j;//i=20;
Console.WriteLine("i={0},j={1}",i,j);
另一個解決方案:位運算。
int a=5; int b=6;
a=a^b; b=b^a; //b^a至關於 b^a^b 也就是 b^a^b的值就是a了, 下邊相同 a=a^b;
下面的SQL題是常考題中的常考題,必須重視!!!!!!!!
11八、介紹幾個使用過的開源的項目
Lucene.Net、NPOI、JQuery、ASP.Net AJAX toolkit、Quartz.Net、JqueryUI、ASP.Net MVC。在CodePlex、SourceForge等網站上有更多的開源項目。
11九、說出五個集合類
List、Dictionary、Set、Stack(先入後出)、Queue(先入先出)、Tree等。
解答:HashSet用於盛放不一樣的數據,相同的數據只保留一份
14一、下面的HTML代碼
<style type="text/css">
#Text1{ background-color:Red}
.txt{ background-color:Green}
input {background-color:Black}
</style>
<input id="Text1" type="text" class="txt" />
<input type="text" class="txt" />
兩個文本框各是什麼顏色?
參考資料:我的大於集體:元素單獨設置的樣式>class命名樣式>標籤樣式。樣式override父級別的。
14. 假定在建BOOKS表時沒有定義主碼,寫出爲BOOKS表追加定義主碼的語句
--實現代碼:
ALTER TABLE BOOKS ADD PRIMARY KEY(BNO)
15.1 將NAME最大列寬增長到10個字符(假定原爲6個字符)
--實現代碼:
ALTER TABLE CARD ALTER COLUMN NAME varchar(10)
15.2 爲該表增長1列NAME(系名),可變長,最大20個字符
--實現代碼:
ALTER TABLE CARD ADD 系名 varchar(20)
鎖的問題:
public void Test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
Test(i);
}
}
}
執行Test(10)是否會形成死鎖?
答:不會,由於多線程纔有鎖的問題,線程沒法本身鎖本身(單線程必然是有前後執行順序的,不必鎖)
問學網2011
三、Math.Round(11.5)、Math.Round(11.3)、Math.Round(-11.5)、Math.Round(-11.3)的值各是多少?
答案:Round 四捨五入:Math.Round(-11.5)=-12,由於是按照絕對值考慮。
擴展:Math.Ceiling(-11.6)=-11,由於負數的天花板也在上面。
Math.Floor(-11.5)=-12
面試題2 介紹ASP.Net和ASP的區別答:
一、ASP.Net支持預編譯。
二、ASP.Net擁用更爲強大的ADO.Net、身份認證體系、衆多服務器控件、支持自定義控件編寫。
三、ASP.Net擁有事件驅動的控件。
面試題3 說明ASP.Net的Application特性
答:Application對象用於記錄不一樣用戶訪問網站留下的信息,如:能夠用來當前訪問網頁的IP數,在服務運行期間都能持久的保存數據。Application支持啓動和結束等事件。
面試題4 簡述ASP.Net的頁面運行機制
答:一、IIS接到客戶請求。
二、IIS把請求交給ASPNet_ispai.dll進行處理。
三、(第一次運行)裝載Bin目錄下的dll。
四、(第一次運行)讀取Web.config配置。
五、(第一次運行)初始化HttpApplication實例
六、建立HttpContext,建立HttpTextWrite。
七、找到對應的HttpHandler(.ASPx頁面),處理http請求
八、處理Session。
九、返回結果結客戶。
面試題5 簡述ASP.Net一個頁面的生命週期
答:客戶端請求頁面 預初始化(OnPreInit) 初始化(OnInit) 完成初始化(OnInitComplete) 載入ViewState(LoadViewState) 處理回送數據(IPostBackDataHandler) Page_OnPreLoad—》Page_OnLoad 回發更改通知(RaisePostDataChangedEvent) 處理回發事件(RaisePostBackEvent) Page_OnLoadComplete 預呈現(OnPreRender) 完成預呈現(OnPreRenderComplete) 保存ControlState(SaveControlState) 保存ViewState(SaveViewState) 呈現(Render) Page_UnLoad。
面試題6 C#中的託管代碼是什麼
答:由公共語言運行庫環境(而不是直接由操做系統)執行的代碼。託管代碼應用程序能夠得到公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平臺和語言的、統一的託管代碼應用程序行爲。
面試題7 C#中的非託管代碼是什麼
答:在公共語言運行庫環境的外部,由操做系統直接執行的代碼。非託管代碼必須提供本身的垃圾回收、類型檢查、安全支持等服務;它與託管代碼不一樣,後者從公共語言運行庫中得到這些服務。
面試題8 IL語言如何在.Net下運行
答:IL(MSIL)就是中間語言,基於高級語言和彙編語言中間僞彙編語言。
面試題17 什麼是XCOPY部署
答:使用XCOPY命令在控制檯下面把一個工程或應用程序從一個位置複製到另外一個位置的簡單方法。
面試題18 如何經過安裝嚮導配置一個Web站點
答:建立一個安裝項目---配置安裝項目---生成安裝包文件---在指定的服務器上運行安裝包。
面試題20 C#支持哪幾個預約義的值類型
答:int,float,bool,decmail,char面試題21 C#支持哪幾個預約義的引用類型
答:object,String,ArrayList面試題22 如何解決裝箱和拆箱引起的性能問題
答:能夠使用泛類型解決裝箱和拆箱引起的性能問題
面試題23 有幾種方法能夠判斷值類型和引用類型
答:值類型是在棧中分配空間的,引用類型是在堆中分配空間的。判斷的方法有三種:
一、經過賦值操做。
二、檢測類型是否繼承System.ValueType。
面試題38 Array與ArrayList的區別
答:array初始化大小不一樣,它是一維的,它是同構的
Arraylist能夠添加刪除項,它是多維的,它是異構的。
面試題39 Array與ArrayList如何進行互相轉換
一、Araylist.adapter(array)
二、經過循環把array添加到arraylist;
三、arraylist.toarray(arraylist);
面試題51 簡述接口及接口繼承
答:一、只定義
二、能夠有方法,事件、屬性
三、公共的
四、不能實例
五、不能有字段
六、也能夠繼承接口。
面試題63 什麼是ViewState
答:能夠持久化客戶端的狀態。
面試題64 ViewState優缺點有哪些
不可誇頁面。數據量大時性能底。
面試題76 ASP.Net有幾種存儲會話狀態的方式
答:InProc(IIS進程)、StateServer(狀態服務器)、SqlServer(sql數據庫中)
面試題77 請介紹ASP.Net會話狀態InProc的特色
答:關閉IIS就沒有,比其餘兩種性能要高。不能誇服務器共享面試題78 請介紹ASP.Net會話狀態StateServer的特色
答:須要誇服務器能夠使用StateServer。面試題81 ADO.Net支持多少種數據源
答:Sql\oledb\odbc\xml\oracle
面試題82 如何提升數據庫鏈接的使用效率
答:避免使用oledb\odbc等數據源
面試題83 如何安全地管理鏈接字符串
答:把字符串寫在web.config文件裏面。而且能夠加密connectionstring加密。
面試題84 using子句管理數據庫鏈接有何做用
答:獲取、使用、釋放,它能自動關閉數據庫連接。
面試題86 ADO.Net中如何執行動態的SQL語句
答:使用SqlCommand對象的ExecuteRead、ExecuteNonQuery、ExecuteScalar方法
面試題87 解釋ADO.Net中的事務處理做用
答:事務用於執行多個SQL語句時確保每一個SQL語句都正確執行後纔會對數據庫作永久性修改,不然將不對數據庫作任何更改。
面試題89 什麼是LINQ
答:LINQ To Object, LINQ to XML,LINQ TO ADO.Net
面試題94 XML文檔結構包括哪些
答:XML是可擴散標記語言;聲明、元素、注示、字符引用、處理指令
面試題96 SOAP協議由哪幾部分組成
答:SOAP是 WebService的基礎協議。它是一種簡單對象訪問協議。基於XML。可序列化的。
面試題97 什麼是WSDL語言
答:WebService的描述語言。
一、什麼是WCF技術,WCF能夠解決什麼業務問題?二、什麼是AOP,在C#中實現AOP有幾種方式,列舉你熟悉的AOP組件。
本人在深圳面試十來家,發現百分之八十的題目都是來之於如下題目,今天分享給你們,好好背吧.
一、@page指令只能在_ASPx___文件(填寫擴展名)中使用,而@Control指令只能用在_ascx___文件(填寫擴展名)中使用.
二、說明控件DataGrid,DataTable,DataView,DetailsView,formView,Repeator經常使用屬性,若是要想把一條記錄分紅兩列顯示,以上控件哪些能夠用,哪些不能夠用?若是可用,如何處理?
答:DataMember:綁定的表或者視圖,DataSourseID:數據源控制的ID,Visible:是否顯示該控件. FormView,Repeator能夠用,其餘的控件不能可用,在ItemTemplate模板裏用表格或者用列表來顯示.
三、寫出下列的含義 <% %>,<%# %>,
答:<% %>是服務器端代碼塊
<%# %>表示綁定的數據源
四、請解釋Page.IsPostBack,Response.Write,Response.End,DBNull.Value, DataSet,DataTable,DataView,SqlDataReader,stringbuilder,ArrayList?
Page.IsPostBack:是否正是被首次加載
Response.Write:打印指定的文本
Response.End:中止當前的程序並返回結果
DBNull是一個類。DBNull.Value是它惟一的實例。它指數據庫中數據爲空(<NULL>)時,在.Net中的值。
DataSet:DataSet是數據在內存中的表示形式,是不依賴與數據庫的獨立數據集合.
DataTable:是一個包含列和行表.
DataView:數據視圖
SqlDataReader:提供一種從 SQL Server 數據庫讀取行的只進流的方式。
五、 stringbuilder:StringBuffer線程安全的可變字符序列。一個相似於 String 的字符串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但經過某些方法調用能夠改變該序列的長度和內容。
ArrayList:動態加載的數組
partial,protected,private,public的含義:
答:partial:僅所屬類的成員才能夠訪問
protected:可被所屬的類或派生自所屬類的類型訪問
public:訪問不受限制。
六、如何理解死鎖的概念?死鎖是如何造成的?在應用中應注意什麼事項避免死鎖?
死鎖是一種條件,不只僅是在關係數據庫管理系統 (RDBMS) 中發生,在任何多用戶系統中均可以發生的。當兩個用戶(或會話)具備不一樣對象的鎖,而且每一個用戶須要另外一個對象的鎖時,就會出現死鎖。每一個用戶都等待另外一個用戶釋放他的鎖。當兩個鏈接陷入死鎖時,Microsoft? SQL Server? 會進行檢測。其中一個鏈接被選做死鎖犧牲品。該鏈接的事務回滾,同時應用程序收到錯誤。
阻塞任何基於鎖的併發系統都不可避免地具備可能在某些狀況下發生阻塞的特徵。當一個鏈接控制了一個鎖,而另外一個鏈接須要衝突的鎖類型時,將發生阻塞。其結果是強制第二個鏈接等待,或在第一個鏈接上阻塞。
其實全部的死鎖最深層的緣由就是一個——資源競爭。
表現一:一個用戶A 訪問表A(鎖住了表A),而後又訪問表B,另外一個用戶B 訪問表B(鎖住了表B),而後企圖訪問表A。這時用戶A因爲用戶B已經鎖住表B,它必須等待用戶B釋放表B,才能繼續,好了他老人家就只好老老實實在這等了。
一樣用戶B要等用戶A釋放表A才能繼續這就死鎖了。
解決方法:
這種死鎖是因爲你的程序的BUG產生的,除了調整你的程序的邏輯別無他法。
仔細分析你程序的邏輯:
1:儘可能避免同時鎖定兩個資源;
2: 必須同時鎖定兩個資源時,要保證在任什麼時候刻都應該按照相同的順序來鎖定資源。
表現二:
用戶A讀一條紀錄,而後修改該條紀錄,這是用戶B修改該條紀錄,這裏用戶A的事務裏鎖的性質由共享鎖企圖上升到獨佔鎖(for update),而用戶B裏的獨佔鎖因爲A有共享鎖存在因此必須等A釋放掉共享鎖,而A因爲B的獨佔鎖而沒法上升的獨佔鎖也就不可能釋放共享鎖,因而出現了死鎖。
這種死鎖比較隱蔽,但其實在稍大點的項目中常常發生。
解決方法:
讓用戶A的事務(即先讀後寫類型的操做),在select 時就是用Update lock
七、什麼是事務? 使用事務的語句有哪些?
答:事務是一種機制,是一個操做序列,它包括了一組數據庫操做命令,而且全部的命令做爲一個總體向
系統提交或者撤消操做請求,要麼所有,要麼所有不執行.
begin transaction
commit transaction
rollback transaction
八、在update觸發器中如何使用修改前,後的數據?
if update(字段1)
begin
...
end
說明控件DataGrid,DataTable,DataView,DetailsView,formView,Repeator經常使用屬性,若是要想把一條記錄分紅兩列顯示,以上控件哪些能夠用,哪些不能夠用?若是可用,如何處理?
寫出下列的含義 <% %>,<%# %>?
請解釋Page.IsPostBack,Response.Write,Response.End,DBNull.Value,DataSet,DataTable,DataView,SqlDataReader,stringbuilder,ArrayList?
如何理解死鎖的概念?死鎖是如何造成的?在應用中應注意什麼事項避免死鎖?
使用ASP.Net開發的網站有哪幾種sessionState存儲方式,分別各是什麼?
爲何要用ISPORTBACK?
DataReader和DataSet的異同?
列舉ASP.Net 頁面之間傳遞值的幾種方式?
.Net的錯誤處理機制是什麼在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?
new有幾種用法?
詳述.Net裏class和struct的異同!
什麼是受管制的代碼?
什麼是強類型系統?
什麼是裝箱和拆箱?
什麼是重載?
CTS、CLS和CLR分別做何解釋?
ASP.Net的身份驗證方式有哪些?分別是什麼原理?
請解釋進程與線程的區別?
62-63=1 等式不成立,請移動一個數字(不能夠移動減號和等於號),使得等式成立,如何移動?
寫一個冒泡排序?
用代碼實現一加到一百?
斐波那契序列數的特色是除前兩項數外,其餘項數的值等於前兩項的和。0,1,1,2,3,5,8,13,21,34,55,…求前24項斐波那契序列數?
用C#實現如下功能a產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。b對上面生成的數組排序,須要支持升序、降序兩種順序產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。(要求使用兩種方法)
1.什麼是CLR?
答:CLR全稱Common Language Runtime,翻譯爲公共語言運行時/公共語言運行庫。由於 .Net 是一個多語言的平臺,任何符合這個平臺標準的編程語言編譯後均可以在這個平臺上運行,這些語言經過各自的編譯器編譯後生成中間代碼CIL。既然是「公共」語言運行時,顧名思義就是能夠被多種編程語言公共使用的。CLR提供了不少功能,好比內存管理(GC)、程序集加載、安全性、異常處理和線程同步等等功能。因此,基於CLR的編程語言都能使用這些功能。
2.什麼是應用程序域?
應用程序域,英文Application Domain,通常簡寫爲AppDomain。原本在Windows NT操做系統上,只有進程(Process)和線程(Thread)的概念。微軟的 .Net 平臺是基於Windows的,對Windows的抽象,因此 .Net 除了支持在操做系統原生的Process和Thread的概念外,還多抽象了一個叫作AppDomain的東西。對了,準確來講,是 CLR 對操做系統的抽象。Windows NT 進程的出現是爲了把應用程序和其餘應用程序以及操做系統內核代碼隔離開來。經過怎麼隔離的呢,通常來講,一個程序是一個進程,每一個把程序的代碼和數據以及要用到的資源放在一個特定的內存區域[虛擬地址空間],這樣其餘程序(進程)就不能輕易的訪問到這個程序的數據,這個進程也不能輕易的訪問其餘程序的地址空間和Windows操做系統內核代碼所在的內存。這樣,Windows就在操做系統級別實現了程序之間和程序與OS內核之間資源的隔離。微軟的 .Net 平臺是基於Windows NT之上的抽象,因此Windows NT的不少東西都在 .Net平臺(準確來講是CLR)都有相關的抽象。Windows NT 的進程對應於CLR 的進程,CLR的進程和Windows NT進程同樣,也是爲了應用程序之間的資源的。 前面說了Windows NT 進程是爲了隔離程序與程序的,可是爲了可擴展性,每一個程序(進程)均可以加載第三方的DLL,這個DLL直接被加進了進程之中,成了進程的一部分,這個DLL能夠訪問進程裏的全部資源了,也能夠訪問的原進程所能訪問的全部資源了。這樣第三方DLL就可能會破壞程序的數據和代碼甚至會訪問原本無權訪問的資源。 而CLR在Windows NT基礎上增長了AppDomain來解決上面的問題。AppDomain能夠把第三方DLL放進程序所在的進程運行,可是卻不會破環進程的數據結構、代碼和其餘資源。不少時候,能夠把AppDomain理解爲.Net平臺上的縮小版進程。AppDomain還解決了一個問題,在一個Window NT進程裏有多個AppDomain,而每一個AppDomain均可以是一個應用程序。因此,.Net 平臺的一個進程能夠運行多個應用程序了,這也是AppDomain的功能之一。在IIS7裏,每一個工做進程w3wp.exe就經過運行多個AppDomain來運行多個Web應用程序的。這樣對於操做系統來講,只須要1個進程就能夠運行多個應用程序實例了,節省了資源,提升了系統健壯性。
3.什麼是託管代碼?
託管代碼和非託管代碼是兩個相對的概念。非託管代碼是指直接運行在操做系統上的代碼。而託管代碼顧名思義就是須要在某個東西委託管理它的代,這個東西在.Net平臺上就是CLR,說白了託管代碼就是受CLR管理的代碼,CLR[它的JIT編譯器]負責把這些代碼轉換成操做系統能執行使用的代碼。Java的中間代碼就至關於.Net的託管代碼,Java的虛擬機就至關於.Net的CLR。
4.什麼是強類型系統?
語言是靜態類型是指:這門語言中每一個變量和大部分表達式都有一個特定的類型,並且這個類型是在編譯時已知的。而動態類型語言相反,某個變量的類型不但能夠改變,並且只能在運行的時候才知道是否正確。C#屬於靜態語言,C#4.0出現的dynamic關鍵字,讓C#具備了一部分動態語言的特性,C#再也不是一門純粹的靜態類型語言。在不少資料和文檔裏,強類型指的得就是靜態類型。強類型的定義是不明確的,在不少地方並不相同。因此我可是爲了嚴謹起見,我通常不說強類型/弱類型,而是說靜態類型/動態類型。
5.什麼是重載?
重載,overload。重載就是容許在一個類型中有多個同名的語言構造,好比一個類中有多個同名的方法,一個類中有多個同名的索引器等。C#支持方法重載,實例構造函數重載,索引器重載和操做符重載。方法重載是指容許同一個類中存在同名的多個方法,只須要知足一個條件:這些方法具備不一樣的簽名。對於方法來講,簽名是:方法的名稱、參數的類型、個數和位置,不包括參數名、不包括返回值、不包括params修飾符,ref和out會被認爲是相同的。【順便說說,這是C#的規定,CLR是容許經過方法的返回值來區分同名方法的】
6.是否能夠繼承String類?
不能。.Net FCL中System.String類定義爲sealed,表示不可繼承。之因此會被定義爲sealed的是由於字符串太經常使用,太常見,CLR對它進行了特殊對待,好比拘留池和不可變性,若是String能夠被繼承的話,會打破CLR對它的一系列特殊對待和字符串的不可變性。
7.using關鍵字有什麼用?什麼是IDisposable?
①引入命名空間,這樣減輕敲代碼的工做量和代碼量。
②給名字衝突的類取別名,這樣就能夠區分不一樣命名空間裏的同名類。
③爲所包括的全部實現了IDisposable接口的類型變量表明的資源進行釋放。
本質是會自動生成一個try塊和finally塊,並在finally塊裏把變量轉換成IDisposable並調用Dispose方法。
IDisposable是一個接口,是爲使用了非託管資源的類銷燬資源準備的。若是某個類使用了非託管資源,就應該讓這個類實現這個接口,這是.Net的非託管資源銷燬的標準實現。IDisposable有一個Dispose方法,實現這個方法來銷燬須要銷燬的資源。
使用這個接口來銷燬非託管資源有3種方法,
①手動在finally塊調用這個方法。
②使用using包含這個變量,讓編譯器生成代碼幫咱們調用。
③若是大意之下,沒有調用這個方法,這個方法最終也會在終結器中被調用。
8.string str= null 和 string str="" 說明其中的區別?
前者僅僅聲明瞭一個字符串引用str,只是在線程棧上佔用了4個字節的空間,str引用指向進程的虛擬內存地址空間的0x00000000,也就是沒有指向任何對象。後者語句會在當前進程的字符串拘留池中查找,若是已經存在一個只爲 "" 的字符串,則直接把這個 "" 所在虛擬空間的首地址(4字節)賦值給str變量,若是當前進程的字符串拘留池中沒有 "" 這個字符串,則會在託管堆的GC堆裏建立這個字符串,而後這這個字符串對象所在的首地址賦值給變量str。說白了,前者只定義了一個字符串引用,後者不但定義了一個字符串引用,並且把這個引用執行了一個具體的對象。在前者上調用方法會出現null引用錯誤,後者則不會。
9.StringBuilder和String的區別?
System.String是對應於C#的string,是C#的基元類型,受到了CLR和C#編譯器的特殊對待,它是不可變字符串。每個String實例構造之後,都不能改動或增加,每次對String的改動操做,其實都不是在原String對象上執行的,都會生成一個新的字符串。因此,String不適合用在大規模的字符串操做(截斷、增加、替換等)上,這樣會生成不少的String對象,而致使內存增大和GC回收的壓力。而StringBuilder僅僅是萬千.Net FCL類型中的一個普通引用類型而已,若是說特殊的話,僅僅特殊在它表示的數據是字符串而已。若是須要頻繁對字符串進行變化操做的話,使用它比使用String能得到更行的性能。
10.什麼是虛函數?什麼是抽象函數?
虛函數只能能夠有子類重寫override,子類能夠選擇重寫仍是不重寫。抽象函數必須由子類重寫,子類沒有選擇權。虛函數能夠定義在普通類裏,也能夠定義在抽象類裏。而抽象函數只能定義在抽象類。
11.用sealed修飾的類有什麼特色?
sealed類不能被繼承。
12..Net的錯誤處理機制是什麼?
.Net的錯誤處理機制是基於Windows NT的「結構化異常實處理機制SEH」創建的。在C#中是使用try catch finally塊表示的。
13.C#的checked和unchecked的做用是什麼?
checked 和 unchecked是用來只是編譯器檢查或者不檢查包含着的代碼是否進行「算術計算溢出檢查」的。若是checked的話,包圍着的代碼在運行時,若是出現算術計算溢出時,則會拋出異常。若是unchecked的話,即便溢出,也不會拋出異常。既不checked,也不unchecked的時候,默認是unchecked。
14.C#中的三元操做符是什麼?
C#只有一個三元操做符,它就是:條件操做符,【?:】。 a?b:c 這個表達式的值是:若是a爲True,則表達式值爲b;若是a爲False,則表達式的值爲c。
15.C#的is和as運算符有什麼做用?
is:檢查對象的真實類型是否與給定類型兼容。兼容返回True,不兼容則返回False。as:把對象轉換爲給定的引用類型。能轉換則返回引用,不能轉換則返回null。is運算符既然檢查是否兼容與引用類型也能檢查是否兼容於值類型,可是不考慮用戶自定義轉換。as運算符只能把對象轉換爲引用類型,不能做用於值類型之上。
16.C#中如何利用DateTime獲取季度?
①經過DateTime.Now.Month屬性拿到當前月份 month。
②【month / 4 +1】就是季度數。
17.如何在DateTime時間追加工做日?
18.類和結構的區別是什麼?
類做爲引用類型的表明,結構做爲值類型的表明,他們之間的區別不少就是引用類型和值類型的區別。 值類型繼承自ValueType;而引用類型繼承自System.Object。值類型變量包含其實例數據,每一個變量保存了其自己的數據拷貝(副本),所以在默認狀況下,值類型的參數傳遞不會影響參數自己;而引用類型變量保存了其數據的引用地址,所以以值類型進行參數傳遞時會影響到參數自己,由於兩個變量會引用了內存中的同一塊地址。 值類型有兩種表示:裝箱與拆箱;引用類型只有裝箱一種形式。而引用類型一般只有一種形式:裝箱。值類型的內存不禁GC控制,做用域結束時,值類型會自行釋放,減小了託管堆的壓力,所以具備性能上的優點。值類型是密封的(sealed),所以值類型不能做爲其餘任何類型的基類,可是能夠單繼承或者多繼承接口;而引用類型通常都有繼承性。值類型不具備多態性;而引用類型有多態性。值類型變量不可爲null值,值類型都會自行初始化爲0值;而引用類型變量默認狀況下,建立爲null值,表示沒有指向任何託管堆的引用地址,因此會引起null引用異常。
19.如何進行DateTime和字符串時間之間的轉換?
DateTime => 字符串時間 :ToString()方法以及幾個重載,另外ToXxString方法。字符串時間 => DateTime :
① DateTime.Parse和DateTime.TryPase兩個靜態方法。
② Convert.ToDateTime("2013-03-21") 其實系統預約義的這些常見類型,好比Int3二、DateTime等,特定類型和字符串直接的相互轉換都有上面3種模式。
20.簡述C#中的虛方法?
C#的虛方法用 virtual 關鍵字修飾。虛方法表示這個方法能夠被子類重寫override,固然子類是否重寫由本身決定。虛方法是C#中實現多態的一種方式。當用一個父類型的變量調用虛方法時候,會根據這個變量指向的真實子類型調用子類的方法。
21.簡述C#的密封類和密封方法?
C#中,密封類和密封方法都是使用sealed修飾。密封類表示這個類不能被繼承。密封方法表示這個方法不能被重寫,和virtual方法相對。
22.請介紹C#靜態構造器的特色?靜態構造函數在任意一個實例構造函數執行以前執行。
①一個類型有0或1個靜態構造器,不定義則木有,要定義也只能定義1個。
②靜態構造器不能有參數。
③構造器是由CLR調用,而不是程序員調用的。
④由於是由CLR調用的,因此不能有任何訪問修飾符。
⑤靜態構造器的做用就是初始化類型的靜態字段,而且靜態構造器只能訪問靜態字段。
⑥靜態構造器會根據類型所在程序集的加載策略不一樣,而具備不一樣的性質。
若是類型所在的程序集屬於AppDomain中立加載,則即便在多個AppDomain中使用到了這個類型,也只會在進程第一個使用類型時候,靜態構造器執行一次。而若是這個類型所在程序集是以AppDomain私有的方法加載的話,則在使用到它的每一個AppDomain裏,都執行一次這個類型的靜態構造器。
23.簡述C#派生類中的構造函數?
C#的構造函數是不能繼承的,即便這個構造函數是public或者proteced的。可是能夠在派生類的構造函數後經過 base.父類構造器 調用父類構造器。其實不直接經過base顯式調用父類構造器,在new一個子類實例的時候,編譯器會默認往上調用父類的默認構造器,一層一層往上調用,知道System.Object的默認構造函數。
24.簡述接口以及接口繼承?
接口是一個或一組契約的合集,表示某個東西能作什麼。接口是表示一組函數成員[方法、屬性、事件、索引器]而不實現成員的引用類型。接口能夠繼承多個接口,接口也能夠被多個接口繼承。類和結構可以實現接口。
25.什麼是多播委託?
多播委託就是在一個委託變量上綁定多個方法。這個委託實例就是多播委託。若是這個委託變量被使用的話,會按綁定順序挨個觸發全部的方法。
26.列舉一個C#中的委託應用?
List<T>類的的Sort方法的其中一個重載,接受一個委託類型的參數。使用List<T>類的Sort方法時候,程序員能夠放入一個委託變量。 LINQ的基石之一,擴展IEnumerable<T>接口的Enumerable類的那幾十個方法,全是以委託爲參數的。
30.什麼是Web窗體,什麼是Web用戶控件?
Web窗體就是後綴爲 .ASPx 的東西,在這個頁面上,能夠經過聲明的方法定義控件,無論是HTML標籤、仍是HTML控件、仍是服務器端控件、或者用戶控件。Web窗體最後會被編譯器編譯成一個類,這個類派生自頁面後臺類,Web窗體上定義的那些控件最後並無在Web窗體類中,而是跑到父類[頁面後臺類]中了。Web用戶控件就是程序員自定義的控件,能夠經過組合多個服務器端控件實現,也能夠本身重頭寫而實現。寫Web用戶控件的目的就是爲了重用,能夠把Web用戶控件用在多個Web窗體上,而且Web用戶控件只能附屬於Web窗體,由於它不能被單獨訪問。而Web窗體是能夠被單獨訪問的。
31.簡述XML的優缺點?
XML通常是做爲一種數據交換格式使用。
優勢:可擴展性強,根據程序員的定義,幾乎能夠表示任何數據;
跨平臺:能夠跨多個異構平臺傳遞數據,這也是他的主要用處所在。
可讀性強:由於是樹狀的文本文檔。
缺點:數據冗餘,使用了不少標籤和屬性。 不容易解析,即便在.Net平臺上有LINQ to XML的存在。
上面兩個缺點就是在不少領域XML被JSON這種數據交換格式替代的主要緣由。JSON數據很輕量級,因此很容易傳輸,JSON無論是瀏覽器端的JavaScript仍是其餘端的其餘語言,均可以很容易的解析。
32.什麼是SOAP?SOAP協議由哪幾部分組成?
SOAP,簡單對象訪問協議,後來發展成已經不是簡簡單單的對象訪問了,SOAP經過XML文檔描述Web服務。 SOAP協議由 SOAP封裝、SOAP編碼規則、SOAP RPC表示、SOAP綁定4個部分組成。
33.什麼是WSDL語言?
WSDL:Web服務描述語言。其實就是用來描述Web服務的一種特殊格式的XML文檔。在這個XML文檔裏,定義了Web服務的地址和這個服務上能進行的操做。說嚴肅點,就是WSDL定義了服務的元數據,用這些元數據能夠在客戶端建立服務代理。
39.什麼是Web Service?
Web Service,就是Web服務。就是把服務經過一個特殊的URL來公開而不是像之前那樣經過組件來公開。 在.Net平臺上,如今是用的主要Web Service技術有兩種:ASP.Net XML Web Service和WCF。
55.什麼是WPF?
WinForm的下一次替換產品。用來編寫C/S軟件。
2、填空題
1.能用 foreach 遍歷訪問的對象的要求須要實現【IEnumerable或IEnumerable<T>】或者聲明【一個返回值類型是一個包含一個public的MoveNext()方法,一個public的Current屬性的public的GetEnumerator()方法】
2.Serializable
1.面向對象的思想主要包括什麼?
封裝,繼承,多態
2.什麼是ASP.Net 中的用戶控件
用戶控件就是 .ascx,複合控件就是.DLL
3.什麼叫應用程序域?什麼是受管制的代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載? CTS、CLS 和CLR分別做何解釋?
一個進程能夠有 N個Domain, 一個Domain能夠有 N個程序集, 他主要功用是分割程序的 ,
受管制代碼就是有CLR公共語言運行時控制的代碼 ! 這樣的代碼是類型安全的 ,
強類型就是有類型約束的好比說強類型 DataSet,
裝箱就是把值類型裝成引用類型 ,拆箱反之, 重載在同一個類中相同方法名不一樣參數 ,
CLR是公共語言運行時,CTS是通用類型系統 ,
4.列舉一下你所瞭解的XML技術及其應用
XML用的地方太多了若是非要說一個就說 WebService 或Ajax 這些東西火 !說了老闆開心
5.值類型和引用類型的區別?寫出 C#的樣例代碼。
值類型存在內存棧裏面,引用類型存在內存堆裏面
6.ADO.Net 中經常使用的對象有哪些?分別描述一下。
ADO.Net裏面的對象多了去了這裏就說 SQL系列的(oledb 和 odbc系列不說了)SqlConnection,SqlCommand,SqlAdapter,SqlParameter,DataSet也算一個 ,至於用法地球人都知道
7.如何理解委託?
委託的正確理解就是函數指針
8.C#中的接口和類有什麼異同。
接口只提供規則沒有實現 ,接口能夠多繼承,類不行
10.UDP 鏈接和TCP鏈接的異同。
UDP是無鏈接狀態的,TCP是有狀態的這個纔是他們的根本區別 ,也就是說TCP 比UDP可靠
11.ASP.Net 的身份驗證方式有哪些?分別是什麼原理?
ASP.Net驗證有WinDows嚴整,form驗證,PassPort驗證,Windows通常在作企業內部 OA的時候用的多一些,FORM通常是作網站用的多他是採用 Cookie機制來實現的,PassPort是微軟提供的一個WebService
12.進程和線程分別怎麼理解?
進程就是一個程序實例 ,而線程能夠理解爲功能實例 !也就是說進程包含線程
13.什麼是code-Behind 技術。
代碼後製 !地球人都知道!.ASPX頁面實際上是個繼承與 .CS文件類的類
14.活動目錄的做用。
活動目錄就是分佈試環境目錄服務 ,做用就是分佈試應用程序的中心 !它記錄程序各個部分的信息等等
15..Net 中讀寫XML的類都歸屬於哪些命名空間?
System.XML和System.Data
16.解釋一下UDDI 、WSDL的意義及其做用。
UDDI說白了就是咱們生活中114查號臺 ,WSDL就是這個服務的說明書
17.什麼是SOAP, 有哪些應用。
SOAP是簡單傳輸協議用處想牛毛同樣多!非要說一個就說WebService或開發Remoting程序用
18.如何部署一個ASP.Net頁面。
1. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
答 . private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,該類內部和繼承類中能夠訪問。
public : 公共成員,徹底公開,沒有訪問限制。
internal: 在同一命名空間內能夠訪問。
2 .列舉ASP.Net 頁面之間傳遞值的幾種方式。
答. 1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer
4.C#中的委託是什麼?事件是否是一種委託?
答 : 委託能夠把一個方法做爲參數代入另外一個方法。
委託能夠理解爲指向一個函數的引用。
是,是一種特殊的委託
5.override與重載的區別
答 :override 與重載的區別。重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要
Override 是進行基類中函數的重寫。爲了適應須要。
6.若是在一個B/S結構的系統中須要傳遞變量值,可是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答 :
this.Server.Transfer
9.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:不是。能夠用任意類型。
11.用.Net作B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:通常爲3層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層通常分爲二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層爲了與用戶交互例如用戶添加表單。
優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長成本。
18.Net中讀寫數據庫須要用到那些類?他們的做用?
答:DataSet:數據存儲器。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用語填充。
20.什麼是Code-Behind技術?
答:代碼後植。
22.經常使用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.Net中的Add Web Reference菜單選項
23..Net Remoting 的工做原理是什麼?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以肯定對象的位置。
24.在C#中,string str = null 與 string str = 「」 請儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度爲空字符串的內存空間。
25.請詳述在dotNet中類(class)與結構(struct)的異同?
答:Class能夠被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的.
26.根據委託(delegate)的知識,請完成如下用戶控件中代碼片斷的填寫:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//請在如下補齊代碼用來調用OnDBOperate委託簽名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
27.分析如下代碼,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j=
答:i=13,j=10
28.SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句得到最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根據線程安全的相關知識,分析如下代碼,當調用test方法時i>10時是否會引發死鎖?並簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,因此每次改變的都只是一個副本,所以不會出現死鎖。但若是把int換作一個object,那麼死鎖會發生)
30.簡要談一下您對微軟.Net 構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:WS主要是可利用HTTP,穿透防火牆。而Remoting能夠利用TCP/IP,二進制傳送提升效率。
31.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到如下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的全部行 (排序的方式如DataGrid類似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,包該列的ID取出,按照該ID排序後,在給綁定到ListView中。
32.給定如下XML文件,完成算法流程圖。
<FileSystem>
<DriverC>
<Dir DirName=」MSDOS622」>
<File FileName =」 Command.com」 ></File>
</Dir>
<File FileName =」MSDOS.SYS」 ></File>
<File FileName =」 IO.SYS」 ></File>
</DriverC>
</FileSystem>
請畫出遍歷全部文件名(FileName)的流程圖(請使用遞歸算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
35.能用foreach遍歷訪問的對象須要實現 ________________接口或聲明________________方法的類型。
答:IEnumerable 、 GetEnumerator。
36.GC是什麼? 爲何要有GC?
答:GC是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。要請求垃圾收集,能夠調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
37.String s = new String("xyz");建立了幾個String Object?
答:兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。
38.abstract class和interface有什麼區別?
答:聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。
39.啓動一個線程是用run()仍是start()?
答:啓動一個線程是調用start()方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。run()方法能夠產生必須退出的標誌來中止一個線程。
40.接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
答:接口能夠繼承接口。抽象類能夠實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
41.構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。
42.是否能夠繼承String類?
答:String類是final類故不能夠繼承。
43.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?
答:會執行,在return前執行。
44.兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?
答:不對,有相同的hash code。
45.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()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
53.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
答:short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化爲short型。可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
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會丟失,能夠用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。
57.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的資源。
58.堆和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量一般在棧上。
堆:通常由程序員分配釋放。用new、malloc等分配內存函數分配獲得的就是在堆上。
59.成員變量和成員函數前加static的做用?
答:它們被稱爲常成員變量和常成員函數,又稱爲類成員變量和類成員函數。分別用來反映類的狀態。好比類成員變量能夠用來統計類實例的數量,類成員函數負責這種統計的動做。
60.ASP.Net與ASP相比,主要有哪些進步?
答:ASP解釋形,ASPx編譯型,性能提升,有利於保護源碼。
62.DataReader與Dataset有什麼區別?
DataSet能夠離線處理,先後滾動 和進行數據更新.
DataReader不能離線處理,是個只讀向前的遊標,但速度會很快
DataSet能夠存儲數據庫各類對象的,好比表觸發器等,而DataReader只能存儲遊標記錄
什麼是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包來提供最新的WEB服務安全保證,目前最
新版本2.0。
110.大概描述一下ASP。Net服務器控件的生命週期
答:初始化 加載視圖狀態 處理回發數據 加載 發送回發更改通知 處理回發事件
概述反射和序列化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您能夠使用反射動態地建立類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。而後,能夠調用類型的方法或訪問其字段和屬性
序列化:序列化是將對象轉換爲容易傳輸的格式的過程。例如,能夠序列化一個對象,而後使用 HTTP 經過 InterNet 在客戶端和服務器之間
傳輸該對象。在另外一端,反序列化將從該流從新構造對象。
3.datagrid.datasouse能夠鏈接什麼數據源
[dataset,datatable,dataview,IList]等接口類型的對象
4. new有幾種用法
第一種:new Class(),新建一個類的對象,可是此類必須的又可訪問的構造函數
第二種:顯式覆蓋基類的方法:public new Menthod(){}
5.概述o/r mapping 的原理
利用反射,配置 將類於數據庫表映射O/RMapping(有學習曲線,沒有工具支持會至關大):存在的時間已經很長,我認爲它的最主要的做用是關係型數據庫的反設計——關係型數據庫的設計就是要把現實中的對象和對象間關係設計成實體和實體間的關係映射。而O/RMapping剛好相反,它是把實體和實體間的關係映射還原回對象和對象間的關係。
6.類成員有( )種可訪問形式
可訪問性:public ,protected ,private,internal可能還有其餘的訪問形式,具體的狀況視編碼須要而定
7.用sealed修飾的類有什麼特色
sealed 修飾符用於防止從所修飾的類派生出其它類。若是一個密封類被指定爲其餘類的基類,則會發生編譯時錯誤。密封類不能同時爲抽象類。sealed 修飾符主要用於防止非有意的派生,可是它還能促使某些運行時優化。具體說來,因爲密封類永遠不會有任何派生類,因此對密封類的實例的虛擬函數成員的調用能夠轉換爲非虛擬調用來處理。
8.列舉ADO.Net中的五個主要對象,並簡單描述
connection,command,dataReader,transaction,dataset ...其上對於各類對象,鏈接不一樣的數據庫將會有不一樣的對象變體
Connection: 數據庫的鏈接須要此對象
Command:執行數據表變化的命令
dataReader和dataset主要是對數據庫的表信息進行兩種不一樣方式的讀取,具體的讀取得區別,後面將會有講解。
9.執行下面代碼後:
String strTemp ="yyaccpx 某某某";
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
結果:i=(14 ) ;j=(11 )
i=(14 ) ;j=(11 ) 中文在內存中佔兩個字節
可是隻算是一個字符
10.C#中,string str = null 與 string str ="",請儘可能用文字說明區別。(要點:說明詳細的內存空間分配)
string str ="" 在棧中存取地址,在堆中存放對象的值而String str=null;僅僅在內存棧中分配了空間
11.詳述.Net裏class和struct的異同!
class:放在屬於引用類型,故其存放於內存的堆中
Struct屬於值類型,其存放於棧中,做爲參數傳遞的時候屬於值傳遞類與結構有不少類似之處:結構能夠實現接口,而且能夠具備與類相同的成員類型。然而,結構在幾個重要方面不一樣於類:結構爲值類型而不是引用類型,而且結構不支持繼承。結構的值存儲在「在堆棧上」或「內聯」。細心的程序員有時能夠經過聰明地使用結構來加強性能。
12.概述.Net裏對 remoting 和 webservice 兩項技術的理解和實際中的應用。
其實現的原理並無本質的區別,在應用開發層面上有如下區別:
1)、Remoting能夠靈活的定義其所基於的協議,若是定義爲HTTP,則與Web Service就沒有什麼區別了,通常都喜歡定義爲TCP,這樣
比Web Service稍爲高效一些
2)、Remoting不是標準,而Web Service是標準;
3)、Remoting通常須要經過一個WinForm或是Windows服務進行啓動,而Web Service則須要IIS進行啓動。
4)、在VS.Net開發環境中,專門對Web Service的調用進行了封裝,用起來比Remoting方便
我建議仍是採用Web Service好些,對於開發來講更容易控制Remoting通常用在C/S的系統中,Web Service是用在B/S系統中後者仍是各語言的通用接口相同之處就是都基於XML爲了能清楚地描述Web Service 和Remoting之間得區別,我打算從他們的體系結構上來講起:
Web Service大致上分爲5個層次:
1). Http傳輸信道
2). XML的數據格式
3). SOAP封裝格式
4). WSDL的描述方式
5). UDDI
整體上來說,.Net 下的 Web Service結構比較簡單,也比較容易理解和應用:通常來說在.Net結構下的WebService應用都是基於.Net framework以及IIS的架構之下,因此部署(Dispose)起來相對比較容易點。從實現的角度來說,首先WebService必須把暴露給客戶端的方法所在的類繼承於:System.Web.Services.WebService這個基類 其次所暴露的方法前面必須有[WebMethod]或者[WebMethodAttribute]
WebService的運行機理
首先客戶端從服務器的到WebService的WSDL,同時在客戶端聲稱一個代理類(Proxy Class) 這個代理類負責與WebService服務器進行Request 和Response 當一個數據(XML格式的)被封裝成SOAP格式的數據流發送到服務器端的時候,就會生成一個進程對象而且把接收到這個Request的SOAP包進行解析,而後對事物進行處理,處理結束之後再對這個計算結果進行SOAP包裝,而後把這個包做爲一個Response發送給客戶端的代理類(Proxy Class),一樣地,這個代理類也對這個SOAP包進行解析處理,繼而進行後續操做。 這就是WebService的一個運行過程。
下面對.Net Remoting進行歸納的闡述:
.Net Remoting 是在DCOM等基礎上發展起來的一種技術,它的主要目的是實現跨平臺、跨語言、穿透企業防火牆,這也是他的基本特色,與WebService有所不一樣的是,它支持HTTP以及TCP信道,並且它不只能傳輸XML格式的SOAP包,也能夠傳輸傳統意義上的二進制流,這使得它變得效率更高也更加靈活。並且它不依賴於IIS,用戶能夠本身開發(Development)並部署(Dispose)本身喜歡的宿主服務器,因此從這些方面上來說WebService其實上是.Net Remoting的一種特例。
ASP.Net Web 服務基礎結構經過將 SOAP 消息映射到方法調用,爲 Web 服務提供了簡單的 API。經過提供一種很是簡單的編程模型(基於將 SOAP 消息交換映射到方法調用),它實現了此機制。ASP.Net Web 服務的客戶端不須要了解用於建立它們的平臺、對象模型或編程語言。而服務也不須要了解向它們發送消息的客戶端。惟一的要求是:雙方都要承認正在建立和使用的 SOAP 消息的格式,該格式是由使用 WSDL 和 XML 架構 (XSD) 表示的 Web 服務合約定義來定義的。
.Net Remoting 爲分佈式對象提供了一個基礎結構。它使用既靈活又可擴展的管線向遠程進程提供 .Net 的徹底對象語義。ASP.Net Web 服務基於消息傳遞提供很是簡單的編程模型,而 .Net Remoting 提供較爲複雜的功能,包括支持經過值或引用傳遞對象、回調,以及多對象激活和生命週期管理策略等。要使用 .Net Remoting,客戶端須要瞭解全部這些詳細信息,簡而言之,須要使用 .Net 創建客戶端。.Net Remoting 管線還支持 SOAP 消息,但必須注意這並無改變其對客戶端的要求。若是 Remoting 端點提供 .Net 專用的對象語義,無論是否經過 SOAP,客戶端必須理解它們。
13.什麼是code-behind技術
對於每個ASPx文件能夠相對應一個CS文件類,ASPx繼承自對應的CodeBehind類,在編譯時,CodeBhind類編譯到webui工程對應的dll中,而ASPx頁面中的內含代碼和ASPx一塊兒編譯到temporary.dll中,被客戶端瀏覽器訪問。
14.概述三層結構體系
webUI層:封裝基本的頁面佈局形式,即表示層
DataAccess(DAO)層:數據訪問層,利用各類相關的技術,與底層數據庫進行交互
Business層:業務邏輯層,封裝整個程序的業務邏輯代碼,主要與DAO層相關聯
Model 層: 封裝程序領域對象,該層能夠在上面的三層之間進行很好的交互
這只是基本的三層架構設計,若是利用設計模式,則能夠在此基礎上進行靈活的變化
15.ASP.Net如何實現MVC模式,舉例說明!
在ASP.Net 中實現MVC模式,相對於 JAVA沒有那麼快捷,可是還是能夠實現的
且因爲代碼隱藏和事件驅動得引入,意義不時很大,具體的實現,能夠利用HttpHandler,如此,則應在Web.config文件中配置相關的節點
//Author:renfuming
<httpHandlers>
<add verb="*" path="SendTopic.ASPx" type="wyzBBS.Servers.SendRootHandler"/>
<add verb="*" path="SelectTopic.ASPx" type="wyzBBS.Servers.SelectTopicHandler"/>
<add verb="*" path="Question.ASPx" type="wyzBBS.Servers.QuestionHandler"/>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
16.值類型和引用類型的區別?
C# 支持兩種類型:「值類型」和「引用類型」。 值類型(如 char、int 和 float)、枚舉類型和結構類型。 引用類型包括類 (Class) 類型、接口類型、委託類型和數組類型。 值類型與引用類型的區別在於值類型的變量直接包含其數據,而引用類型的變量則存儲對象引用。對於引用類型,兩個變量可能引用同一個對象,所以對一個變量的操做可能影響另外一個變量所引用的對象。對於值類型,每一個變量都有本身的數據副本,對一個變量的操做不可能影響另外一個變量
17.瞭解程序集強簽名嗎?
用強名稱來給程序集簽名即謂之程序集強簽名! 經過簽發具備強簽名的程序集合,能夠確保名稱的全局惟一性!由於強名稱是依賴於惟一的密鑰對來確保名稱的惟一性,其餘人不會生成與你相同的程序集名稱(不一樣的私鑰產生的名稱不一樣) 強名稱保護程序集的版本沿襲,由於強名稱的惟一性可以確保沒有其餘人可以生成你的程序集的後續版本 強名稱提供可靠的完整性檢查,經過.Net Framework安全檢查後,能夠確保程序集內容在生成後未被更改過! 要注意的是,具備強名稱的程序集引用其餘程序集,若是這個程序集沒有強名稱,那麼具備強名稱的程序集所帶來的好處,並依舊會產生DLL衝突!所以具備強名稱的程序集只能引用其餘具備強名稱的程序集。
18. C#中接口和類有什麼區別?
接口是負責功能的定義,項目中經過接口來規範類,操做類以及抽象類的概念!而類是負責功能的具體實現!在類中也有抽象類的定義,抽象類與接口的區別在於:抽象類是一個不徹底的類,類裏面有抽象的方法,屬性,也能夠有具體的方法和屬性,須要進一步的專業化。但接口是一個行爲的規範,裏面的全部東西都是抽象的!
一個類只能夠繼承一個基類也就是父類,但能夠實現多個接口。
19.View State 的做用和實現方式?
設置是否要保存控件的狀態,其功能的實質是利用隱藏表單域實現 若是設爲false且在Page_Load中沒有從新綁定數據的話,只要頁面一刷新,控件的內容就沒了 若是設爲true,則頁面會保存控件的內容 在一些不須要保存狀態的頁面中最好把它設爲false,爲什設爲true會增長服務器的負擔隱藏域。
20.在ASP.Net中能夠利用哪些對象存儲狀態?幾種維持狀態的對象應用場合以及優缺點?
主要用Application,session,viewstate,cookie,cache。
Application:應用程序級別的共享變量,優勢是應用程序一開啓該站點都能訪問此變量。缺點:全部對此進行寫入操做要加鎖,由此共享變量鎖帶來的內存開銷只有此應用程序關閉才能結束。
Session:維護用戶我的的狀態信息,優勢:我的所從事活動,如登陸信息,購物車信息等較安全並且又服務器維護較穩定。缺點:維持http 鏈接的sessionID仍然有缺陷,同時爲每一個用戶維護狀態信息,服務器內存開銷很大。
Viewsate:如4所說,在一些場合能體現它的特色,但同時帶來的缺點:影響整個頁面的速度以及隱藏字段未加密。
Cookie:優勢是將狀態信息維護在客戶端的一個文本文件,不須要耗用服務器的內存,是目前各大網站主要採用的方式。 缺點:因爲其將狀態
信息存貯在客戶端,極可能由別人破解此文件而得到此人的我的隱私和機密信息。其受限大小爲4K.
Cache:優勢是提供的此功能很強大,如文件緩存依賴、API依賴、數據庫依賴以用於存貯數據變化而更換緩存狀態數據。提供存儲週期
從httpcontext到httpruntime。缺點:耗用服務器內存。Request
21.簡單說說 ASP.Net 中基於表單的身份驗證方式的用法?
配置文件提供對站點那些目錄的保護以及登陸頁面,當訪問該目錄的文件時,若是用戶未認證經過,將轉入登陸頁面,用戶輸入用戶名和密碼,將此參數傳入認證模塊authentication,該模塊負責認證,若是經過將isauthentication設置爲true,並返回用戶的identity對象,此時頁面將轉入初始請求頁,若是未經過,將不容許訪問此目錄。
22.是否瞭解 URL Rewrite?請簡要說明其原理和在 ASP.Net 中的實現方式?
通常放在httpmodule中applicatioin_request事情中,當每次http請求,將此URL定位到重寫的url函數中並返回重寫後的URL地址。主要用於當咱們站點板塊移動時因爲連接仍然指向舊地址,故能夠重定向到新的地址,固然查詢參數也能夠重寫。url-mapping配置
23. 在超過10萬條記錄的頁面顯示時,你如何處理分頁,有多少種替代方案?
通常根據頁面選擇的第幾頁PageIndex,以及服務端配置文件配置的每頁行數PageSize,經過傳入參數傳入存貯過程,由其返回相應行數pagesize的記錄。即每一頁數據都由服務端返回。能夠利用緩存Cache,將數據一次加載,在結合ASP.Net2.0中數據庫緩存方式,跟蹤數據庫表的信息的變化,自動更新緩存信息 對於數據分野頁,也能夠利用gridview的數據邦定控件的自動分頁的方式
24. DataReader和DataSet的異同?
Daatareader和datatset都是經過從數據源取數據。不一樣點:datareader提供只進行流的方式讀取數據。Dataset提供一種容器裏面主要由表以及表關係,由適配器來提供從數據源取得數據填充到此容器的表中。
DataReader和DataSet最大的區別在於,DataReader使用時始終佔用SqlConnection,在線操做數據庫..任何對SqlConnection的操做都會引起DataReader的異常..由於DataReader每次只在內存中加載一條數據,因此佔用的內存是很小的..由於DataReader的特殊性和高性能.因此DataReader是隻進的..你讀了第一條後就不能再去讀取第一條了..DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接..由於DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行回傳更新操做
25. 你會利用那些工具進行數據庫的性能分析及其優化?說說你以爲優化數據庫須要注意的方面。好比:如何設計優化查詢爲主、插入更新爲主的表。我主要經過執行計劃以及索引優化以及客戶統計和服務器跟蹤工具來檢測從SQL到索引、硬盤IO和時間等信息。 對於查詢爲主的表,首先對數據量的大小有必定的估計,當達到必定程度應採用水平分區,有的根據主鍵有的根據時間段來區分。因爲此表每每插入更新不是太快,可對適當字段採用索引而且填充因子能夠儘可能大。SQL優化等。 對於插入更新爲主的表,我以爲健壯性更重要,只要根據標準外部採用存貯過程就能夠了。
26. 數據庫某表主鍵自增,是很常見的情形。在ASP. Net或C#程序中,要求向該表插入一條記錄,並立刻從該表查出這條記錄。不能使用時間戳,請問你如何實現?
插入一條記錄會返回◎◎identity,經過它就是該記錄的主鍵,再select一下就能夠了
27.Xhtml的三種DOCTYPE分別有什麼含義?請說明。簡單說明各個狀況下,那些標籤能夠使用,那些不能夠使用?
XHTML 1.0 提供了三種DTD聲明可供選擇:W3C規範
過渡的(Transitional):要求很是寬鬆的DTD,它容許你繼續使用HTML4.01的標識(可是要符合xhtml的寫法)。完整代碼以下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">嚴格的(Strict):要求嚴格的DTD,你不能使用任何表現層的標識和屬性,例如<br>。完整代碼以下:<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
框架的(Frameset):專門針對框架頁面設計使用的DTD,若是你的頁面中包含有框架,須要採用這種DTD。完整代碼以下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
28.請舉例說明XHtml代碼規範,越多越好。
1).全部的標記都必需要有一個相應的結束標記之前在HTML中,你能夠打開許多標籤,例如<p>和<li>而不必定寫對應的</p>和</li>來關閉它們。但在XHTML中這是不合法的。XHTML要求有
嚴謹的結構,全部標籤必須關閉。若是是單獨不成對的標籤,在標籤最後加一個"/"來關閉它。例如:
<br /><img height="80" alt="網頁設計師" src="../images/logo_w3cn_200x80.gif" width="200" />
2).全部標籤的元素和屬性的名字都必須使用小寫
與HTML不同,XHTML對大小寫是敏感的,<title>和<TITLE>是不一樣的標籤。XHTML要求全部的標籤和屬性的名字都必須使用小寫。例
如:<BODY>必須寫成<body> 。大小寫夾雜也是不被承認的,一般dreamweaver自動生成的屬性名字"onMouseOver"也必須修改
成"onmouseover"。
3).全部的XML標記都必須合理嵌套
一樣由於XHTML要求有嚴謹的結構,所以全部的嵌套都必須按順序,之前咱們這樣寫的代碼:
<p><b></p></b>
必須修改成:
<p><b></b></p>
就是說,一層一層的嵌套必須是嚴格對稱。
4).全部的屬性必須用引號""括起來
在HTML中,你能夠不須要給屬性值加引號,可是在XHTML中,它們必須被加引號。例如:
<height=80>
必須修改成:
<height="80">
特殊狀況,你須要在屬性值裏使用雙引號,你能夠用",單引號能夠使用',例如:
<alt="say'hello'">
5).把全部<和&特殊符號用編碼表示
任何小於號(<),不是標籤的一部分,都必須被編碼爲& l t ;
任何大於號(>),不是標籤的一部分,都必須被編碼爲& g t ;
任何與號(&),不是實體的一部分的,都必須被編碼爲& a m p;
注:以上字符之間無空格。
6).給全部屬性賦一個值
XHTML規定全部屬性都必須有一個值,沒有值的就重複自己。例如:
<td nowrap> <input type="checkbox" name="shirt" value="medium" checked>
必須修改成:
<td nowrap="nowrap"> <input type="checkbox" name="shirt" value="medium" checked="checked">
7).不要在註釋內容中使「--」
「--」只能發生在XHTML註釋的開頭和結束,也就是說,在內容中它們再也不有效。例以下面的代碼是無效的:
<!--這裏是註釋-----------這裏是註釋-->
用等號或者空格替換內部的虛線。
<!--這裏是註釋============這裏是註釋-->
以上這些規範有的看上去比較奇怪,但這一切都是爲了使咱們的代碼有一個統1、惟一的標準,便於之後的數據再利用。
29. 客戶端與瀏覽器:若是讓你作一個TreeView控件,你的思路
我會採用javascript來作,主要採用htc。 數據經過XML. 經過htc操做XML並定義一些方法如:load、addnode、deletenode、updatenode、selectednode等方法一些屬性如對圖標、節點位置、節點前複選框等屬性,也會提供一些默認事件如修改節點先後刷新等。
30.談談論壇聊天室IM和各類網站程序的交互與刷新思路的差別與共同點。
IM交互式信息通訊 ajax刷新思路,對於集中刷新方式,應該有部分和所有刷新的區別這個但願你們上網去找詳細的資料
31.談談對WSE的認識。
目前Web Service普遍採用Https來保障安全,可是該方法也有不少的缺點,尤爲是應用於如今愈來愈複雜的Web Service安全需求。
1.Https提供的是點對點安全保護,而Web Service的特色就是消息每每就要通過多箇中介才能到達最終的服務提供方,每一箇中介還有可能對消息作出些處理,也就是說它須要的是端到端的保護。這顯然是Https所不能提供的。
2.Https是在傳輸層提供的安全,而不是在消息層面,也就是隻有在傳輸的過程當中纔有消息纔是安全的(加密的),而一旦到達了終點就是明文的了。好比能夠從消息隊列中將重要的信息竊取出來。
3.在Https的創建完共享密鑰後,傳遞消息的時候並無使用數字簽名技術,因此也就沒法獲得抗否定性的能力。而這又是在電子商務中不可豁缺的。
4.因爲Https提供的是傳輸層的安全,固然也就不可能達到消息安全所須要的靈活性的要求。好比加密消息中的部分元素;用不一樣的密鑰加密消息的不一樣部分,從而讓不一樣的消息接受者查看與之對應的信息。所以,爲了適應Web Service對安全的特殊要求,IBM和MS等公司共同制定了WS-Security規範。從新回顧安全問題的三個概念:Confidentiality(機密性), Integrity(完整性), Authentication(身份鑑別),在Web Service使用SOAP(XML 格式)做爲消息傳輸協議的背景下,分別產生了XML Digital Signature,XML Encryption和SAML(XML格式的Security Token), 而WS-Security則是如何將他們組合起來以知足Web Service安全需求的一套規範Web Services Enhancements 2.0 for Microsoft .Net (WSE)是一個用來建設Web服務的.Net類庫,它支持最新的Web服務協議,包括WS-Security、WS-SecureConversation、WS-Trust、WS-Policy、WS-SecurityPolicy、WS-Addressing和 WS-Attachments。 WSE可以使開發人員跨安全平臺建設可升級的、安全的Web服務。它支持用傳輸的方式發送SOAP消息,而不是HTTP。另外一個特色是具備創建SOAP路由器的功能,SOAP消息被髮送給SOAP路由器,路由器再將工做交付給託管該服務的Web服務器。
32. 你用過哪些版本控制工具
各位同窗兄弟能夠根據本身的實際狀況,談論一些本身在使用這些工具時所遇到的問題以及體會TFS(ASP.Net)、cvs、svn
33. 在開發中你利用那些工具進行單元測試和模塊測試NUNIT和PDM.頁面測試 httpunuit
34.如何進行Bug管理由一個BUG跟蹤平臺,提供該程序的各個模塊的BUG,以及級別,以及解決時間等信息
35. 如何生成和管理開發文檔通常用NDOC來生成文檔,大部分文檔主要仍是Word爲主。主要是各個模塊以及版本的控制等
37.若是你是一位軟件架構師,您將如何去搭建一個符合n-tie的架構?並請描述一下您搭建的每一層的做用。(注意:請您考慮項目中有WebService的狀況)
主要根據實際狀況來決定搭建的層數以及各層的規格。 通常狀況下,可以下搭:
數據層:主要提供數據服務,該層繼承實體的接口並定製本身的數據提取和存儲。並根據數據庫類型如sqlserver、oracle等來創建此層服務。執行邏輯我我的偏好採用存貯過程。
業務層:因爲定製的實體的屬性和操做實體的方法已由數據層得到和執行,故業務邏輯組件對此實體進行組合以知足上層對業務邏輯組件的調用,webservice也是建在此層,以用於提供數據服務和邏輯執行。
表示層:通常定製不一樣的容器控件,以用於加載從業務層不一樣類型的數據便於呈現。固然也要此層的風格以及各類顯示設置,webservice顯示頁面建在層,經過加載對指定目錄的webservice提供的方法用於呈現。
38.能否簡要的介紹ASP.Net 2.0 Membership,WebPart和C#的匿名函數和泛型等你認爲.Net 2.0本身感興趣的內容,但願能夠簡要地闡述其中的特色(本題很是的重要)
1) Membership:成員管理主要提供了一套對用戶信息、用戶角色、用戶配置信息的用戶系統。經過MembershipConfigHandler加載配置文件中公有的基礎信息,對配置文件中的信息進行了嚴格的邊界檢查和類型檢查。經過MembershipProvider提供了實現membership的抽象方法以及配置信息。由SqlMembershipProvider繼承MembershipProvider來實現sqlclient的數據提供服務。業務和實現相剝離,以利於擴展。固然裏面有不少特色也有不少細節等。
2) WebPart:主要提供頁面佈局和自定義以及換皮膚的功能。經過定義主題Theme來決定總體的佈局風格,以及版面經過設定不一樣的區域Zone來決定版面各塊的區域設置。經過不一樣的skin和css來肯定風格。讓用戶可以保存本身的我的設置以及回覆默認設置的功能。
3) 匿名函數:使用匿名方法能夠減小因實例化委託所須要的開銷,1.0中使用委託必須實例化委託而且必須將所調用的類和方法做爲參數傳入也即命名方法,固然若是所調用的委託具備多變性應該還採用命名方法。
4) 泛型:通常用於集合類。因爲之前集合類數據都由framework隱式轉化爲object類型,這種開銷很大。而用泛型,你就能夠指定傳入對象類型,而用於生成強類型的數據集,這樣各類操做就能夠使用指定類型的特性和優點了,天然速度也快了不少。固然接口、方法、類等都一樣使用這種方式
5) 編譯模型除了ASP.Net1.0支持的批編譯,也提供新的編譯模式。
6) 在httpmodule和httphander的處理速度要比之前1.0要快。
7) 在請求響應輸出中,將緩衝區由ASP.Net宿主進程移到本機內存,能夠消除資源瓶頸。
8) 其緩存模型提供了數據庫依賴和緩存後替功能。
9) 與IIS6.0集中能提供更好的性能,主要體如今緩存和緩衝操做上。
39.ASP.Net中的內建對象Page對象:Web Form 網頁在執行的時候會被編譯成Page 對象,Page對象通知來設置與網頁有關的屬性、方法和事件;
Response對象:用來決定服務器端在何時或如何輸出數據到客戶端;
Request對象:用來捕獲由客戶端返回服務器的數據;
Server對象:提供服務器端最基本的屬性和方法;
Application對象:用來記錄不擊客戶端共享的變量;
Session對象:用來記錄各客戶端的專用變量;
Cookies對象:爲Web應用程序保存訪問者相關信息.
40..Net具備跨平臺的性質嗎?如今是否能夠在UNIX平臺上普遍的應用?很是了不得的工具INet,實現.Net跨平臺!
執行摘要微軟的.Net是一套鏈接信息、人、系統、設備的軟件技術。此新一代的技術是基於Web服務和小模塊建立的應用,能夠使任何應用彼此互連而且能鏈接到InterNet上的其餘大型應用。.Net的基礎核心是集成開發設備(IDE), Visual Studio.Net和一種新的應用執行環境-Microsoft .Net開發框架。這些系統使開發人員可以像靈活使用 Visual Basic 和C#同樣開發強大的應用程序和Web服務。 可是有侷限的一點是:用.Net開發的應用程序必須運行於.Net服務器或者客戶端。若是全部的用戶都按照.Net運行環境技術標準化這也許可行,可是實際上固然不是這樣。成千上百萬臺電腦運行的是Linux、Unix,OS X 和其餘操做系統,而這種環境不是.Net應用程序的標準化運行環境。所以軟件開發組織須要考慮: 如何有效利用它們的 Microsoft開發人員和Visual Studio.Net的技術特徵和優點可是仍然能夠訪問非微軟服務器, PC機,手提電腦和移動設備?怎樣才能使他們用.Net編寫的程序運行時不受運行環境的侷限? Stryon公司開發的iNet解決了這一難題。iNet能夠使應用程序和Web服務在Visual Basic 和C#下開發,但發佈於任何支持Java的運行環境,網絡主機也從IBM網絡服務器擴展到Linux和Unix的服務器。有了iNet技術,開發人員既能夠利用Visual Studio .Net開發環境的優點,可是又不侷限於Microsoft的運行環境。
41.寫出global.asax文件的主要用途?
做用和ASP的global.asa同樣,它能夠使咱們執行ASP.Net應用程序一層事件的代碼,如:application_start等等,使你能夠在這些事件中做一些自定義的處理;也能夠定義應用程序一層的變量,如:Session等,這在整個ASP.Net應用程序中起做用。
42.列出web.config的經常使用的配置段,並對每一個配置段進行簡要的說明。
Web.config文件是一個XML文本文件,它用來儲存 ASP.Net Web 應用程序的配置信息(如最經常使用的設置ASP.Net Web 應用程序的身份驗證方式),它能夠出如今應用程序的每個目錄中。當你經過VB.Net新建一個Web應用程序後,默認狀況下會在根目錄自動建立一個默認的 Web.config文件,包括默認的配置設置,全部的子目錄都繼承它的配置設置。若是你想修改子目錄的配置設置,你能夠在該子目錄下新建一個Web.config文件。它能夠提供除從父目錄繼承的配置信息之外的配置信息,也能夠重寫或修改父目錄中定義的設置。在運行時對Web.config文件的修改不須要重啓服務就能夠生效(注:<processModel> 節例外)。固然Web.config文件是能夠擴展的。appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization受權, 此節設置應用程序的受權策略.
43.ASP.Net中的組件相對於ASP的組件部署方面有什麼優勢?
ASP.Net和ASP的最大區別在於編程思惟的轉換,而不只僅在於功能的加強。ASP使用vbs/js這樣的腳本語言混合html來編程,而那些腳本語言屬於弱類型、面向結構的編程語言,而非面向對象,這就明顯產生如下幾個問題:
1)、代碼邏輯混亂,難於管理:因爲ASP是腳本語言混合html編程,因此你很難看清代碼的邏輯關係,而且隨着程序的複雜性增長,使得代碼的管理十分困難,甚至超出一個程序員所能達到的管理能力,從而形成出錯或這樣那樣的問題。
2)、代碼的可重用性差:因爲是面向結構的編程方式,而且混合html,因此可能頁面原型修改一點,整個程序都須要修改,更別提代碼重用了。
3)、弱類型形成潛在的出錯可能:儘管弱數據類型的編程語言使用起來回方便一些,但相對於它所形成的出錯概率是遠遠得不償失的。
以上是語言自己的弱點,在功能方面ASP一樣存在問題,第一是功能太弱,一些底層操做只能經過組件來完成,在這點上是遠遠比不上php/jsp,其次就是缺少完善的糾錯/調試功能,這點上ASP/php/jsp差很少。那麼,ASP.Net有哪些改進呢? ASP.Net擺脫了之前ASP使用腳本語言來編程的缺點,理論上能夠使用任何編程語言包括c++ , vb,js等等,固然,最合適的編程語言仍是ms爲.Net frmaework專門推出的c#(讀csharp),它能夠看做是vc和java的混合體吧,儘管ms本身講c#內核中更多的象vc,但實際上我仍是認爲它和java更象一些吧。首先它是面向對象的編程語言,而不是一種腳本,因此它具備面向對象編程語言的一切特性,好比封裝性、繼承性、多態性等等,這就解決了剛纔談到的ASP的那些弱點。封裝性使得代碼邏輯清晰,易於管理,而且應用到ASP.Net上就能夠使業務邏輯和html頁面分離,這樣不管頁面原型如何改變,業務邏輯代碼都沒必要作任何改動;繼承性和多態性使得代碼的可重用性大大提升,你能夠經過繼承已有的對象最大限度保護你之前的投資。而且c#和c++、java同樣提供了完善的調試/糾錯體系
1)、 通過解釋的語言有兩個缺點,一是缺少強類型,二是缺少一個編譯環境,這將致使性能和伸縮性的問題
2)、ASP並無爲應用程序提供一個固有的結構,將代碼和頁面混合在一塊兒使代碼變得很複雜,源文件變的很大,結構和代碼複用很難,維護也很難。
3)、ASP中不管工做多簡單都必須在ASP中編寫代碼完成絕大多數工做,如驗證表單字段等,其餘還包括告訴緩存頁面內容,保持表單狀態等,甚至添加新HTML控件也須要寫原始HTML。
4)、瀏覽器兼容性。移動設備訪問站點,必須編寫代碼檢測這些設備,同時爲其提供合適內容。
5)、標準兼容性,XHTML被愈來愈多人接受,XML和XSL/T也獲得普遍應用,而且與移動設備進行通訊還應該支持WML,這意味着ASP應用不只要利用現有標準工做,還要易於升級以支持未來的標準 ASP.Net四個主要目標 使代碼更清晰 提升可部署性,可伸縮性,安全性以及可靠性 爲不一樣瀏覽器和設備提供更好的支持 支持一種全新的web應用程序。
44.簡述一下webservice技術,在何種場合下適合使用這項技術?
Web Service 是一種新的web應用程序分支,他們是自包含、自描述、模塊化的應用,能夠發佈、定位、經過web調用。Web Service能夠執行從簡單的請求到複雜商務處理的任何功能。一旦部署之後,其餘Web Service應用程序能夠發現並調用它部署的服務。Web Service是一種應用程序,它能夠使用標準的互聯網協議,像超文本傳輸協議(HTTP)和XML,將功能綱領性地體如今互聯網和企業內部網上。可將Web服務視做Web上的組件編程。P2P 跨平臺技術性應用 Web Services扮演什麼角色?Web services角度所預示的四個趨勢:
◆內容更加動態:一個web service必須能合併從多個不一樣源來的內容,能夠包括股票,天氣,新聞等,在傳統環境中的內容,如存貨水平,購物訂單或者目錄信息等,都從後端系統而來
◆帶寬更加便宜:web services能夠分發各類類型的內容(音頻,視頻流等)
◆存儲更便宜: web services必須能聰明地處理大量數據,意味着要使用數據庫,LDAP目錄,緩衝,和負載平衡軟件等技術保持可擴展能力
◆廣泛式計算更重要:web services不能要求客戶使用某一版本的windows的傳統瀏覽器,必須支持各類設備,平臺,瀏覽器類型,各類內容類型。兩種重要技術要達到這樣的目標,Web services要使用兩種技術:
◆XML XML是在web上傳送結構化數據的偉大方式,Web services要以一種可靠的自動的方式操做數據,HTML不會知足要求,而XML能夠使web services十分方便的處理數據,它的內容與表示的分離十分理想
◆SOAP SOAP使用XML消息調用遠程方法,這樣web services能夠經過HTTP協議的post和get方法與遠程機器交互,並且,SOAP更加健壯和靈活易用。
51.Params是什麼含義?
Params是C#中的關鍵字,採用此關鍵字能夠指定參數數目爲可變; 在方法聲明中的 params 關鍵字以後不容許任何其餘參數,而且在方
法聲明中只容許一個 params 關鍵字。
如:
public int fConvert(params int[] iParas)
{
}
52. C#中有沒有運算符重載?可否使用指針?
有,C#中也有運算符重載,如對運算符「+」進行重載;
C#中也能夠使用指針,但要聲明爲unsafe。
53.Internal修飾符有什麼含義?
internal數據訪問修飾符,表示對所修飾的成員在當前程序集內能夠進行沒有任何限制的訪問;但在當前程序集外部則不能進行訪問,其可訪問性級別低於public ,高於protected。
55. 私有程序集與共享程序集有什麼區別?
一個私有程序集一般爲單個應用程序所使用,而且存儲於這個應用程序所在的目錄之中,或此目錄下面的一個子目錄中。共享程序集一般存儲在全局程序集緩存(Global Assembly Cache)之中,這是一個由.Net運行時所維護的程序集倉庫。共享程序集一般是對許多應用程序都有用的代碼庫,好比.Net Framework類。
56. 請解釋進程與線程的區別?進程與程序的區別?
通常,一個應用程序對應於一個或多個進程,能夠把進程看做是該應用程序在操做系統中的標識;而一個進程一般由多個線程組成,而線程是操做系統爲該應用程序分配處理時間的最小單元。
57. CLR與IL分別是什麼含義?
CLR:公共語言運行時,相似於Java中的JVM,Java虛擬機;在.Net環境下,各類編程語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與操做系統進行通訊,而編程語言如C#.Net將盡可能避免直接與操做系統直接通訊,增強了程序代碼的執行安全性,能夠這樣看:CLR就是具體的編程語言如:C#.Net與操做系統之間的翻譯,同時它爲具體的編程語言提供了許多資源:
? 面向對象的編程模型(繼承、多態、異常處理和垃圾收集等)
? 安全模型
? 類型系統
? 全部.Net基類
? 許多.Net Framework類
? 開發、調試和評測(profiling)工具
? 執行和代碼管理
? IL到本地代碼(IL-to-native)轉換器和優化器IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;全部.Net源代碼(無論用哪一種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成爲機器碼,被解釋及執行。
58 .請解釋ASP。Net中以什麼方式進行數據驗證
Aps.Net 中有非空驗證,比較驗證,取值範圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另還有一個集中驗證信息處理控件
59(1).WEB控件能夠激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要使用自動傳回。
在web控件發生事件時,客戶端採用提交的形式將數據交回服務端,服務端先調用Page_Load事件,而後根據傳回的狀態信息自動調用服務端事件自動傳回是當咱們在點擊客戶端控件時,採用提交表單的形式將數據直接傳回到務端只有經過自動傳回才能實現服務端事件的機制,若是沒有自動回傳機制就只能調用客戶端事件,而不能調用服務端事件
59(2).WEB控件及HTML服務端控件可否調用客戶端方法?若是能,請解釋如何調用?
能夠調用
例如:<ASP:TextBox id="TextBox1" runat="server">
</ASP:TextBox>
<INPUT id="Button2" value="Button" name="Button2"
runat="server" >
59(3).請解釋ASP.Net中的web頁面與其隱藏類之間的關係?
一個ASP.Net頁面通常都對應一個隱藏類,通常都在ASP.Net頁面的聲明中指定了隱藏類例如一個頁面Tst1.ASPx的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.ASPx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.ASPx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類
61.請問: String類與StringBuilder類有什麼區別?爲何在.Net類庫中要同時存在這2個類?(簡答)
若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.Net框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
64.請敘述屬性與索引器的區別。
屬性 索引器
經過名稱標識。 經過簽名標識。
經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。
能夠爲靜態成員或實例成員。 必須爲實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表
65.請敘述const與readonly的區別。
每個class至多隻能夠定義一個static構造函數,而且不容許增長訪問級別關鍵字,參數列必須爲空。
爲了避免違背編碼規則,一般把static數據成員聲明爲private,而後經過statci property提供讀寫訪問。
const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。由於它是在編譯時就須要徹底評估。
const成員能夠使用另外一個const成員來初始化,前提是二者之間沒有循環依賴。readonly在運行期評估賦值,使咱們得以在確保「只讀訪問」的前提下,把object的初始化動做推遲到運行期進行。readonly 關鍵字與 const 關鍵字不一樣:const 字段只能在該字段的聲明中初始化。readonly 字段能夠在聲明或構造函數中初始化。所以,根據所使用的構造函數,readonly 字段可能具備不一樣的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。 readonly 只能在聲明時或者構造函數裏面初始化,而且不能在 static 修飾的構造函數裏面。
66.您須要建立一個ASP.Net應用程序,公司考慮使用Windows身份認證。全部的用戶都存在於AllWin這個域中。您想要使用下列認證規則來配置這個應用程序:
a、 匿名用戶不容許訪問這個應用程序。
b、 全部僱員除了Tess和King都容許訪問這個應用程序。
請問您應該使用如下哪個代碼段來配置這個應用程序?( A )
A. <authorization>
<deny users=」allwin\tess, allwin\king」>
<allow users=」*」>
<deny users=」?」>
</authorization〉
67.您要建立一個ASP.Net應用程序在DataGrid控件中顯示一個通過排序的列表。產品數據被存放於一個名爲PubBase的Microsoft SQL Server 數據庫。每一個產品的主鍵是ProductID,Numeric型而且每一個產品有一個字母描述字段,名爲ProductName。您使用一個SqlDataAdapter對象和一個SqlCommand對象經過調用一個存儲過程從數據庫中獲取產品數據。您將SqlCommand對象的CommandType屬性設置爲CommandType.StoredProcedure,並將它的CommandText屬性設置爲procProductList。您成功的獲取了一個DataTable對象
69. 列舉ASP.Net 頁面之間傳遞值的幾種方式。
1. 使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer
70. 請說明在.Net中經常使用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被僞造
input ttype="hidden" 簡單,可能被僞造
Url 參數簡單,顯示於地址欄,長度有限
數據庫穩定,安全,但性能相對弱Using 引入一個名子空間,或在使用了一個對像後自動調用其IDespose,New 實例化一個對像,或修飾一個方法,表此方法徹底重寫此方法
71.請簡述一下用Socket進行同步通信編程的詳細步驟
1)、在應用程序和遠程設備中使用協議和網絡地址初始化套接字
2)、在應用程序中經過指定端口和地址創建監聽
3)、遠程設備發出鏈接請求
4)、應用程序接受鏈接產生通訊scoket
5)、應用程序和遠程設備開始通信(在通信中應用程序將掛起直到通信結束)
6)、通信結束,關閉應用程序和遠程設備的Socket回收資源
72.什麼叫作SQL注入,如何防止?請舉例說明。
利用sql關鍵字對網站進行攻擊。過濾關鍵字'等 所謂SQL注入(SQL Injection),就是利用程序員對用戶輸入數據的合法性檢測不嚴或不檢測的特色,故意從客戶端提交特殊的代碼,從而收集程序及服務器的信息,從而獲取想獲得的資料。http://localhost/lawjia/show.ASP?ID=444 and user>0,這時,服務器運行Select * from 表名 where 字段=444 and user>0這樣的查詢,固然,這個語句是運行不下去的,確定出錯,錯誤信息以下:
?錯誤類型:Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)[Microsoft][ODBC SQL Server Driver][SQL Server]將 nvarchar 值 'sonybb' 轉換爲數據類型爲 int 的列時發生語法錯誤。
81.abstract class和interface有什麼區別?
答:聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。
82.啓動一個線程是用run()仍是start()?
答:啓動一個線程是調用start()方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。run()方法能夠產生必須退出的標誌來中止一個線程。
83.構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。
84.是否能夠繼承String類?
答:String類是final類故不能夠繼承。
85.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?
答:會執行,在return前執行。
86.swtich是否能做用在byte上,是否能做用在long上,是否能做用在String上?
答:switch(expr1)中,expr1是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能做用於swtich。
87.當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
88.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
89.List, Set, Map是否繼承自Collection接口?
答:List,Set是Map不是
161.Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==仍是equals()? 它們有何區別?
答:Set裏的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,爲的是當兩個分離的對象的內容和類型相配的話,返回真值。
90.數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法。
91.sleep() 和 wait() 有什麼區別?
答:sleep()方法是使線程中止一段時間的方法。在sleep 時間間隔期滿後,線程不必定當即恢復執行。這是由於在那個時刻,其它線程
一、簡述 private、 protected、 public、 internal 修飾符的訪問權限。
private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,該類內部和繼承類中能夠訪問。
public : 公共成員,徹底公開,沒有訪問限制。
internal: 當前程序集內能夠訪問。
二、ADO.Net中的五個主要對象
Connection:主要是開啓程序和數據庫之間的鏈接。沒有利用鏈接對象將數據庫打開,是沒法從數據庫中取得數據的。Close和Dispose的區別,Close之後還能夠Open,Dispose之後則不能再用。
Command:主要能夠用來對數據庫發出一些指令,例如能夠對數據庫下達查詢、新增、修改、刪除數據等指令,以及調用存在數據庫中的存儲過程等。這個對象是架構在Connection 對象上,也就是Command 對象是透過鏈接到數據源。
DataAdapter:主要是在數據源以及DataSet 之間執行數據傳輸的工做,它能夠透過Command 對象下達命令後,並將取得的數據放入DataSet 對象中。這個對象是架構在Command對象上,並提供了許多配合DataSet 使用的功能。
DataSet:這個對象能夠視爲一個暫存區(Cache),能夠把從數據庫中所查詢到的數據保留起來,甚至能夠將整個數據庫顯示出來,DataSet是放在內存中的。DataSet 的能力不僅是能夠儲存多個Table 而已,還能夠透過DataAdapter對象取得一些例如主鍵等的數據表結構,並能夠記錄數據表間的關聯。DataSet 對象能夠說是ADO.Net 中重量級的對象,這個對象架構在DataAdapter對象上,自己不具有和數據源溝通的能力;也就是說咱們是將DataAdapter對象當作DataSet 對象以及數據源間傳輸數據的橋樑。DataSet包含若干DataTable、DataTableTable包含若干DataRow。
DataReader:當咱們只須要循序的讀取數據而不須要其它操做時,能夠使用DataReader 對象。DataReader對象只是一次一筆向下循序的讀取數據源中的數據,這些數據是存在數據庫服務器中的,而不是一次性加載到程序的內存中的,只能(經過遊標)讀取當前行的數據,並且這些數據是隻讀的,並不容許做其它的操做。由於DataReader 在讀取數據的時候限制了每次只讀取一筆,並且只能只讀,因此使用起來不但節省資源並且效率很好。使用DataReader 對象除了效率較好以外,由於不用把數據所有傳回,故能夠下降網絡的負載。
ADO.Net 使用Connection 對象來鏈接數據庫,使用Command 或DataAdapter對象來執行SQL語句,並將執行的結果返回給DataReader 或 DataAdapter ,而後再使用取得的DataReader 或DataAdapter 對象操做數據結果。
三、列舉ASP.Net 頁面之間傳遞值的幾種方式。
1).使用QueryString, 如....?id=1; response. Redirect()....
2).使用Session變量
3).使用Server.Transfer
4).Cookie傳值
1三、在dotNet中類(class)與結構(struct)的異同?
Class能夠被實例化,屬於引用類型,是分配在內存的堆上的。類是引用傳遞的。
Struct屬於值類型,是分配在內存的棧上的。結構體是複製傳遞的。加分的回答:Int3二、Boolean等都屬於結構體。
1四、堆和棧的區別?
棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數等都在棧內存中。
堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存的大小。
1五、能用foreach遍歷訪問的對象的要求
須要實現IEnumerable接口或聲明GetEnumerator方法的類型。
1六、GC是什麼? 爲何要有GC?
C/C++中由程序員進行對象的回收像學校食堂中由學生收盤子,.Net中由GC進行垃圾回收像餐館中店員去回收。
GC是垃圾收集器(Garbage Collection)。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。GC只能處理託管內存資源的釋放,對於非託管資源則不能使用GC進行回收,必須由程序員手工回收,一個例子就是FileStream或者SqlConnection須要程序員調用Dispose進行資源的回收。
要請求垃圾收集,能夠調用下面的方法:GC.Collect()通常不須要手動調用GC.Collect()。當一個對象沒有任何變量指向(再也不能使用)的時候就能夠被回收了。
基礎知識:當沒有任何變量指向一個對象的時候對象就能夠被回收掉了,但不必定會當即被回收。
object obj = new object();//只有new纔會有新對象
Console.WriteLine(obj);
object obj2 = obj;
obj = null;
obj2 = null;
Console.WriteLine();
1八、值類型和引用類型的區別?
1).將一個值類型變量賦給另外一個值類型變量時,將複製包含的值。引用類型變量的賦值只複製對對象的引用,而不復制對象自己。
2).值類型不可能派生出新的類型:全部的值類型均隱式派生自 System.ValueType。但與引用類型相同的是,結構也能夠實現接口。
3).值類型不可能包含 null 值:然而,可空類型功能容許將 null 賦給值類型。
4).每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。
1九、C#中的接口和類有什麼異同。
不一樣點:
不能直接實例化接口。
接口不包含方法的實現。
接口能夠多繼承,類只能單繼承。
類定義可在不一樣的源文件之間進行拆分。
相同點:
接口、類和結構均可以從多個接口繼承。
接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員。
接口和類均可以包含事件、索引器、方法和屬性。
基礎知識:接口只能定義方法(只能定義行爲,不能定義實現也就是字段),由於事件、索引器、屬性本質上都是方法,因此接口中也能夠定義事件、索引器、屬性。
20、abstract class和interface有什麼區別?
相同點:
都不能被直接實例化,均可以經過繼承實現其抽象方法。
不一樣點:
接口支持多繼承;抽象類不能實現多繼承。
接口只能定義行爲;抽象類既能夠定義行爲,還可能提供實現。
接口只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的簽名,但不能定義字段和包含實現的方法;
抽象類能夠定義字段、屬性、包含有實現的方法。
接口能夠做用於值類型(Struct)和引用類型(Class);抽象類只能做用於引用類型。例如,Struct就能夠繼承接口,而不能繼承類。
加分的補充回答:講設計模式的時候SettingsProvider的例子。
2一、是否能夠繼承String類?
String類是sealed類故不能夠繼承。
3一、string str = null 與 string str =」」說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = \"\" 給它分配長度爲空字符串的內存空間。 string str = null沒有string對象,string str = 「」有一個字符串對象。
string s3 = string.Empty;//反編譯發現,string.Empty就是在類構造函數中 Empty = "";
34.在.Net中全部可序列化的類都被標記爲_____?
答:[serializable]
3五、什麼是code-Behind技術。
就是代碼隱藏,在ASP.Net中經過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前ASP那樣都代碼和html代碼混在一塊兒,難以維護。code-Behind是基於部分類技術實現的,在個人項目的三層代碼生成器中用到了部分類。
43.StringBuilder 和 String 的區別?
答:String 在進行運算時(如賦值、拼接等)會產生一個新的實例,而 StringBuilder 則不會。因此在大量字符串拼接或頻繁對某一字符串進行操做時最好使用 StringBuilder,不要使用 String
若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.Net框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
4四、.請敘述屬性與索引器的區別。 (*)
屬性 索引器
經過名稱標識。 經過簽名標識。
經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。
能夠爲靜態成員或實例成員。 必須爲實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表。
46. 請解釋ASP。Net中的web頁面與其隱藏類之間的關係?
一個ASP.Net頁面通常都對應一個隱藏類,通常都在ASP.Net頁面的聲明中指定了隱藏類例如一個頁面Tst1.ASPx的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.ASPx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.ASPx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類
ASPx頁面會編譯生成一個類,這個類從隱藏類繼承。
4九、您在什麼狀況下會用到虛方法?它與接口有什麼不一樣?
答案:子類從新定義父類的某一個方法時,必須把父類的方法定義爲virtual
在定義接口中不能有方法體,虛方法能夠。
實現時,子類能夠不從新定義虛方法,但若是一個類繼承接口,那必須實現這個接口。
不定項選擇:
(1) 如下敘述正確的是: B C
A. 接口中能夠有虛方法。B. 一個類能夠實現多個接口。 C. 接口不能被實例化。 D. 接口中能夠包含已實現的方法。
(2) 從數據庫讀取記錄,你可能用到的方法有:B C D
A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader
(3).對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源相關的應用程序定義的任務?(多選) ( ABCD )
A.Close B.Dispose C.Finalize
D.using E.Quit
(4)如下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最早初始化。
B.使用out參數,傳遞到out參數的參數必須最早初始化。
C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。
D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。
51. 單項選擇:
(1)下列選項中,(C)是引用類型。
a)enum類型 b)struct類型 c)string類型 d)int類型
(2).關於ASP.Net中的代碼隱藏文件的描述正確的是(C)
a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的建立用於與窗體交互。編程邏輯惟一與用戶界面不一樣的文件中。該文件稱做爲「代碼隱藏」文件,若是用C#建立,該文件將具備「.ascx.cs」擴展名。
b)項目中全部Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。
c)項目中全部的Web窗體頁的代碼隱藏文件都被編譯成項目動態連接庫(.dll)文件。
d)以上都不正確。
(3).下列描述錯誤的是(D)
a)類不能夠多重繼承而接口能夠;
b)抽象類自身能夠定義成員而接口不能夠;
c)抽象類和接口都不能被實例化;
d)一個類能夠有多個基類和多個基接口;
5二、DataReader和DataSet的異同?
DataReader使用時始終佔用SqlConnection,在線操做數據庫每次只在內存中加載一條數據,因此佔用的內存是很小的是隻進的、 只讀的DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接(非鏈接模式)DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行 回傳更新操做(動態操做讀入到內存的數據)
5三、public static const int A = 1;這段代碼有錯誤麼?
錯誤:const不能被修飾爲static ;由於定義爲常量 (const )後就是靜態的(static )。
5四、傳入某個屬性的set方法的隱含參數的名稱是什麼?
value,它的類型和屬性所聲名的類型相同。
5五、C#支持多重繼承麼?
類之間不支持,接口之間支持。類對接口叫作實現,不叫繼承。 類是爹、接口是能力,能有多個能力,但不能有多個爹。
5六、C#中全部對象共同的基類是什麼?
System.Object
5七、經過超連接怎樣傳遞中文參數?
答:用URL編碼,經過QueryString傳遞,用urlencode編碼 用urldecode解碼
5八、string、String;int、Int32;Boolean、bool的區別
String、Int3二、Boolean等都屬於.Net中定義的類,而string、int、bool至關於C#中對這些類定義的別名。CTS。
5九、Server.Transfer和Response.Redirect的區別是什麼?(常考)
答: Server.Transfer僅是服務器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向後的地址;Response.Redirect則是徹底的跳轉,瀏覽器將會獲得跳轉的地址,並從新發送請求連接。這樣,從瀏覽器的地址欄中能夠看到跳轉後的連接地址。
Server.Transfer是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,因此它的地址欄中仍是原來的地址。 這個過程當中瀏覽器和Web服務器之間通過了一次交互。
Response.Redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址,通常來講瀏覽器會用剛纔請求的全部參數從新請求。這個過程當中瀏覽器和Web服務器之間通過了兩次交互。
Server.Transfer不能夠轉向外部網站,而Response.Redirect能夠。
Server.Execute效果和Server.Transfer相似,可是是把執行的結果嵌入當前頁面。
60、不是說字符串是不可變的嗎?string s="abc";s="123"不就是變了嗎?(傳智播客.Net培訓班原創模擬題)
String是不可變的在這段代碼中,s原先指向一個String對象,內容是 "abc",而後咱們將s指向"123",那麼s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另外一個 String對象,內容爲"123",原來那個對象還存在於內存之中,只是s這個引用變量再也不指向它了。
6一、是否能夠從一個static方法內部發出對非static方法的調用?
不能夠。由於非static方法是要與對象關聯在一塊兒的,必須建立一個對象後,才能夠在該對象上進行方法調用,而static方法調用時不須要建立對象,能夠直接調用。也就是說,當一個static方法被調用時,可能尚未建立任何實例對象,若是從一個static方法中發出對非static方法的調用,那個非static方法是關聯到哪一個對象上的呢?這個邏輯沒法成立,因此,一個static方法內部不能發出對非static方法的調用。
6三、說出一些經常使用的類、接口,請各舉5個
要讓人家感受你對.Net開發很熟,因此,不能僅僅只列誰都能想到的那些東西,要多列你在作項目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。
經常使用的類:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>
經常使用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary
要出乎意料!不要僅僅完成任務!筆試不是高考!到處要顯出牛!
64說出幾個開源軟件?MySQL、Linux、 Discuz、Apache、Paint.Net、Android、Chrome、Notepad++……
開源項目有一些是開發包。開源軟件指的是能夠直接用的。Jquery、NPOI、ASP.Net MVC、Silverlight Toolkit、AJAX toolkit、json.Net 得瑟!
6六、什麼是sql注入?如何避免sql注入?
用戶根據系統的程序構造非法的參數從而致使程序執行不是程序員指望的惡意SQL語句。使用參數化的SQL就能夠避免SQL注入。
詳細參考複習ppt。舉例子,擺事實!
1' or 1=1
7二、post、get的區別
get的參數會顯示在瀏覽器地址欄中,而post的參數不會顯示在瀏覽器地址欄中;
使用post提交的頁面在點擊【刷新】按鈕的時候瀏覽器通常會提示「是否從新提交」,而get則不會;
用get的頁面能夠被搜索引擎抓取,而用post的則不能夠;
用post能夠提交的數據量很是大,而用get能夠提交的數據量則很是小(2k),受限於網頁地址的長度。
用post能夠進行文件的提交,而用get則不能夠。
參考閱讀:http://www.cnblogs.com/skyNet/archive/2010/05/18/1738301.html
解釋:引用類型和值類型的區別。
7六、下面程序的執行結果是什麼?(傳智播客.Net培訓班原創模擬題)
int i = 10;
Console.WriteLine(i++);
Console.WriteLine(++i);
Console.WriteLine(i=20);
Console.WriteLine(i==20);
答案:
10
12
20
True
解答:前兩個參考第80題,i++表達式的值爲i自增以前的值,因此打印10,執行完成後i變成11,執行++i的時候表達式的值爲自增之後的值12。C#中賦值表達式的值爲變量被賦值的值,所以最後一個就輸出i賦值後的值20
while((line=reader.ReadLine())!=null)
{
}
下面程序的執行結果是什麼?
bool b=false;
if(b=true)
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("no");
}
7八、下列哪一個名詞和WebService不直接相關?(B)(傳智播客.Net培訓班原創模擬題)
A、UDDI
B、GUID
C、WSDL
D、SOAP
WebService解決的三個問題:接口的自我描述;採用Http協議等常規協議,不用寫原始的Socket;基於Web服務器,不佔用80端口以外的端口。
UDDI用來自動發現WebService的協議(*)
SOAP和HTTP的關係:SOAP基於Http協議的,和普通網頁不一樣的是網頁返回HTML,SOAP則是符合SOAP協議的XML數據。
WSDL(WebService Defination Language)是對WebService上的方法名、參數進行描述的協議。對接口的自描述。
SOAP(Simple Object Access Protocol)是對參數、返回值以什麼樣的格式進行傳遞進行描述的協議。對報文的格式規範。
實際工做中應該是本身調用別人的WebService或者別人調用本身的WebService,溝通語言就是WSDL,拿到WSDL什麼都不用操心。
WebService是跨平臺、跨語言調用,能夠跨防火牆;缺點:效率低。因此適用於兩個非內部系統的通信(好比炒股軟件和證券交易所之間的通信)
WCF是對WebService、Socket、MQ等通信方式的一個統一,底層仍是採用這些通訊協議,能夠簡化這些程序的開發,不用再換不一樣通訊協議的時候重寫代碼而且學一堆新的技術。因此WCF和WebService不是一個競爭取代關係。
WCF是對.Net Remoting、WebService、MQ等通信方式的一個高級封裝,讓咱們開發不一樣通信協議的程序的時候很簡單,不用學更多的東西。並非替代.Net Remoting、WebService、MQ這些東西。
8一、.Net、ASP.Net、C#、VisualStudio之間的關係是什麼?(傳智播客.Net培訓班原創模擬題)
答:.Net通常指的是.Net Framework,提供了基礎的.Net類,這些類能夠被任何一種.Net編程語言調用,.Net Framework還提供了CLR、JIT、GC等基礎功能。
ASP.Net是.Net中用來進行Web開發的一種技術,ASP.Net的頁面部分寫在ASPx 文件中,邏輯代碼一般經過Code-behind的方式用C#、VB.Net等支持.Net的語言編寫。
C#是使用最普遍的支持.Net的編程語言。除了C#還有VB.Net、IronPython等。
VisualStudio是微軟提供的用來進行.Net開發的集成開發環境(IDE),使用VisualStudio能夠簡化不少工做,不用程序員直接調用csc.exe等命令行進行程序的編譯,並且VisualStudio提供了代碼自動完成、代碼高亮等功能方便開發。除了VisualStudio,還有SharpDevelop、MonoDevelop等免費、開源的IDE,VisualStudio Express版這個免費版本。
8二、AJAX解決什麼問題?如何使用AJAX?AJAX有什麼問題須要注意?項目中哪裏用到了AJAX?(傳智播客.Net培訓班原創模擬題)
答:AJAX解決的問題就是「無刷新更新頁面」,用傳統的HTML表單方式進行頁面的更新時,每次都要將請求提交到服務器,服務器返回後再重繪界面,這樣界面就會經歷:提交→變白→從新顯示這樣一個過程,用戶體驗很是差,使用AJAX則不會致使頁面從新提交、刷新。
AJAX最本質的實現是在Javascript中使用XMLHttpRequest進行Http的請求,開發中一般使用UpdatePanel、JQuery等方式簡化AJAX的開發,UpdatePanel的方式實現AJAX最簡單,可是數據通信量比較大,由於要來回傳整個ViewState,並且不靈活,對於複雜的需求則能夠使用JQuery提供的ajax功能。
UpdatePanel的內部原理。
AJAX最重要的問題是沒法跨域請求(www.rupeng.com →so.rupeng.com),也就是沒法在頁面中向和當前域名不一樣的頁面發送請求,能夠使用在當前頁面所在的域的服務端作代理頁面的方式解決。
在如鵬網項目中發帖的時候顯示相關帖的功能、站內搜索項目中顯示搜索Suggestion、數據採集項目中都用到了AJAX。
常考:不用任何框架編寫一個AJAX程序。XHR:XmlHttpRequest。背也要背下來!
若是面試的時候談AJAX談到UpdatePanel的時候,就是NB的時候!!!先侃UpdatePanel的原理!引出爲何Dom操做的動態效果在用UpdatePanel提交刷新之後沒有了,以及CKEditor被套在UpdatePanel中提交之後也變成了textarea,爲何把Fileupload放到Updatepanel中沒法實現無刷新上傳。說成是公司內部的一個菜鳥用UpdatePanel遇到這樣問題,因爲我懂XHR、UpdatePanel的原理,因此輕鬆解決!UpdatePanel生成的上萬行JS腳本,不適合於互聯網項目。「WebForm怎麼可能把開發人員編程傻子呢!不明白原理苦命呀!仍是MVC好呀,MVC。。。。。。。」
多準備幾把斧子!上來找一切機會甩斧子!
8四、Application 、Cookie和 Session 兩種會話有什麼不一樣?
答:Application是用來存取整個網站全局的信息,而Session是用來存取與具體某個訪問者關聯的信息。Cookie是保存在客戶端的,機密信息不能保存在Cookie中,只能放小數據;Session是保存在服務器端的,比較安全,能夠放大數據。
談到Session的時候就侃Session和Cookie的關係:Cookie中的SessionId。和別人對比說本身懂這個原理而給工做帶來的方便之處。
8五、開放式問題:你常常訪問的技術類的網站是什麼?
博客園(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文檔、msdn論壇(遇到問題先到網上搜解決方案,還不行就問同事,同事也解決不了就去MSDN論壇提問,必定能獲得解決)。Cnbeta.com。
8六、你對.Net的GC的理解
GC是.Net的垃圾收集器,能夠進行內存資源的回收,程序員無需關心資源的回收,當一個對象沒有任何引用的時候就能夠被回收了。一個對象能夠被回收並不意味着必定會被當即回收,GC會選擇時機進行回收。能夠調用GC.Collect()讓GC當即回收。GC不能回收非託管資源,對於非託管資源通常都實現了IDisposable接口,而後使用using關鍵字進行資源的回收。
10六、不用JQuery等框架實現AJAX無刷新登陸。(常考)
提示:用純XMLHttpRequest實現。
10七、Http狀態碼各是什麼意思。
301(永久重定向)、302 :重定向404 :頁面不存在
500:服務器內部錯誤
10八、 對html文本框進行賦值的JQuery語句,對html文本框進行取值的JQuery語句,對TextBox服務端控件進行取值的語句JQuery。
1十、Session有什麼重大BUG,微軟提出了什麼方法加以解決?(常考)
iis中因爲有進程回收機制,系統繁忙的話Session會丟失,IIS重啓也會形成Session丟失。這樣用戶就要從新登陸或者從新添加購物車、驗證碼等放到Session中的信息。能夠用State server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。可是(必定要寫上,這樣纔夠拽)我認爲這不是Bug,只能說是In-Proc方式存儲Session的缺陷,缺陷是和Bug不同的,In-Proc方式存儲Session會由服務器來決定何時釋放Session,這是By Design,In-Proc方式不知足要求的話徹底能夠用StateServer和數據庫的方式。
StateServer還能夠解決集羣Session共享的問題。
配置StateServer的方法:
http://support.microsoft.com/kb/317604
http://blog.csdn.Net/zj1103/archive/2008/09/14/2926773.ASPx
1十一、ASP.Net中<%%>、<%=%>、<%#%>的區別是什麼
<%%>是執行<%%>中的C#代碼,<%=%>是將=後表達式的值輸出到Response中,<%#%>是數據綁定,通常用在ListView、GridView、Repeater等控件的綁定中。數據綁定分爲:Eval:單向綁定和Bind:雙向綁定。
11三、說說在軟件設計中你遇到的以空間換時間的例子?
參考回答:談Cache(緩存)、索引這些例子。用額外的磁盤、內存空間的消耗來提升執行速度。Lucene.Net也是一個例子。
11四、ASP.Net中的錯誤機制。(常考)
參考:
定製錯誤頁來將顯示一個友好的報錯頁面。
頁面中未捕獲同樣會觸發Page_Error(不經常使用),應用程序中的未捕獲異常會觸發Application_Error。經過HttpContext.Current.Server.GetLastError()、HttpContext.Current.Error;拿到未捕捉異常,記錄到Log4Net日誌中。
11五、不用中間變量交換兩個變量(常考)
i = i + j;//i=30
j = i - j;//j=10;
i = i - j;//i=20;
Console.WriteLine("i={0},j={1}",i,j);
另一個解決方案:位運算。
int a=5; int b=6;
a=a^b; b=b^a; //b^a至關於 b^a^b 也就是 b^a^b的值就是a了, 下邊相同 a=a^b;
下面的SQL題是常考題中的常考題,必須重視!!!!!!!!
11八、介紹幾個使用過的開源的項目
Lucene.Net、NPOI、JQuery、ASP.Net AJAX toolkit、Quartz.Net、JqueryUI、ASP.Net MVC。在CodePlex、SourceForge等網站上有更多的開源項目。
11九、說出五個集合類
List、Dictionary、Set、Stack(先入後出)、Queue(先入先出)、Tree等。
解答:HashSet用於盛放不一樣的數據,相同的數據只保留一份
14一、下面的HTML代碼
<style type="text/css">
#Text1{ background-color:Red}
.txt{ background-color:Green}
input {background-color:Black}
</style>
<input id="Text1" type="text" class="txt" />
<input type="text" class="txt" />
兩個文本框各是什麼顏色?
參考資料:我的大於集體:元素單獨設置的樣式>class命名樣式>標籤樣式。樣式override父級別的。
14. 假定在建BOOKS表時沒有定義主碼,寫出爲BOOKS表追加定義主碼的語句
--實現代碼:
ALTER TABLE BOOKS ADD PRIMARY KEY(BNO)
15.1 將NAME最大列寬增長到10個字符(假定原爲6個字符)
--實現代碼:
ALTER TABLE CARD ALTER COLUMN NAME varchar(10)
15.2 爲該表增長1列NAME(系名),可變長,最大20個字符
--實現代碼:
ALTER TABLE CARD ADD 系名 varchar(20)
鎖的問題:
public void Test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
Test(i);
}
}
}
執行Test(10)是否會形成死鎖?
答:不會,由於多線程纔有鎖的問題,線程沒法本身鎖本身(單線程必然是有前後執行順序的,不必鎖)
問學網2011
三、Math.Round(11.5)、Math.Round(11.3)、Math.Round(-11.5)、Math.Round(-11.3)的值各是多少?
答案:Round 四捨五入:Math.Round(-11.5)=-12,由於是按照絕對值考慮。
擴展:Math.Ceiling(-11.6)=-11,由於負數的天花板也在上面。
Math.Floor(-11.5)=-12
面試題2 介紹ASP.Net和ASP的區別答:
一、ASP.Net支持預編譯。
二、ASP.Net擁用更爲強大的ADO.Net、身份認證體系、衆多服務器控件、支持自定義控件編寫。
三、ASP.Net擁有事件驅動的控件。
面試題3 說明ASP.Net的Application特性
答:Application對象用於記錄不一樣用戶訪問網站留下的信息,如:能夠用來當前訪問網頁的IP數,在服務運行期間都能持久的保存數據。Application支持啓動和結束等事件。
面試題4 簡述ASP.Net的頁面運行機制
答:一、IIS接到客戶請求。
二、IIS把請求交給ASPNet_ispai.dll進行處理。
三、(第一次運行)裝載Bin目錄下的dll。
四、(第一次運行)讀取Web.config配置。
五、(第一次運行)初始化HttpApplication實例
六、建立HttpContext,建立HttpTextWrite。
七、找到對應的HttpHandler(.ASPx頁面),處理http請求
八、處理Session。
九、返回結果結客戶。
面試題5 簡述ASP.Net一個頁面的生命週期
答:客戶端請求頁面 預初始化(OnPreInit) 初始化(OnInit) 完成初始化(OnInitComplete) 載入ViewState(LoadViewState) 處理回送數據(IPostBackDataHandler) Page_OnPreLoad—》Page_OnLoad 回發更改通知(RaisePostDataChangedEvent) 處理回發事件(RaisePostBackEvent) Page_OnLoadComplete 預呈現(OnPreRender) 完成預呈現(OnPreRenderComplete) 保存ControlState(SaveControlState) 保存ViewState(SaveViewState) 呈現(Render) Page_UnLoad。
面試題6 C#中的託管代碼是什麼
答:由公共語言運行庫環境(而不是直接由操做系統)執行的代碼。託管代碼應用程序能夠得到公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平臺和語言的、統一的託管代碼應用程序行爲。
面試題7 C#中的非託管代碼是什麼
答:在公共語言運行庫環境的外部,由操做系統直接執行的代碼。非託管代碼必須提供本身的垃圾回收、類型檢查、安全支持等服務;它與託管代碼不一樣,後者從公共語言運行庫中得到這些服務。
面試題8 IL語言如何在.Net下運行
答:IL(MSIL)就是中間語言,基於高級語言和彙編語言中間僞彙編語言。
面試題17 什麼是XCOPY部署
答:使用XCOPY命令在控制檯下面把一個工程或應用程序從一個位置複製到另外一個位置的簡單方法。
面試題18 如何經過安裝嚮導配置一個Web站點
答:建立一個安裝項目---配置安裝項目---生成安裝包文件---在指定的服務器上運行安裝包。
面試題20 C#支持哪幾個預約義的值類型
答:int,float,bool,decmail,char面試題21 C#支持哪幾個預約義的引用類型
答:object,String,ArrayList面試題22 如何解決裝箱和拆箱引起的性能問題
答:能夠使用泛類型解決裝箱和拆箱引起的性能問題
面試題23 有幾種方法能夠判斷值類型和引用類型
答:值類型是在棧中分配空間的,引用類型是在堆中分配空間的。判斷的方法有三種:
一、經過賦值操做。
二、檢測類型是否繼承System.ValueType。
面試題38 Array與ArrayList的區別
答:array初始化大小不一樣,它是一維的,它是同構的
Arraylist能夠添加刪除項,它是多維的,它是異構的。
面試題39 Array與ArrayList如何進行互相轉換
一、Araylist.adapter(array)
二、經過循環把array添加到arraylist;
三、arraylist.toarray(arraylist);
面試題51 簡述接口及接口繼承
答:一、只定義
二、能夠有方法,事件、屬性
三、公共的
四、不能實例
五、不能有字段
六、也能夠繼承接口。
面試題63 什麼是ViewState
答:能夠持久化客戶端的狀態。
面試題64 ViewState優缺點有哪些
不可誇頁面。數據量大時性能底。
面試題76 ASP.Net有幾種存儲會話狀態的方式
答:InProc(IIS進程)、StateServer(狀態服務器)、SqlServer(sql數據庫中)
面試題77 請介紹ASP.Net會話狀態InProc的特色
答:關閉IIS就沒有,比其餘兩種性能要高。不能誇服務器共享面試題78 請介紹ASP.Net會話狀態StateServer的特色
答:須要誇服務器能夠使用StateServer。面試題81 ADO.Net支持多少種數據源
答:Sql\oledb\odbc\xml\oracle
面試題82 如何提升數據庫鏈接的使用效率
答:避免使用oledb\odbc等數據源
面試題83 如何安全地管理鏈接字符串
答:把字符串寫在web.config文件裏面。而且能夠加密connectionstring加密。
面試題84 using子句管理數據庫鏈接有何做用
答:獲取、使用、釋放,它能自動關閉數據庫連接。
面試題86 ADO.Net中如何執行動態的SQL語句
答:使用SqlCommand對象的ExecuteRead、ExecuteNonQuery、ExecuteScalar方法
面試題87 解釋ADO.Net中的事務處理做用
答:事務用於執行多個SQL語句時確保每一個SQL語句都正確執行後纔會對數據庫作永久性修改,不然將不對數據庫作任何更改。
面試題89 什麼是LINQ
答:LINQ To Object, LINQ to XML,LINQ TO ADO.Net
面試題94 XML文檔結構包括哪些
答:XML是可擴散標記語言;聲明、元素、注示、字符引用、處理指令
面試題96 SOAP協議由哪幾部分組成
答:SOAP是 WebService的基礎協議。它是一種簡單對象訪問協議。基於XML。可序列化的。
面試題97 什麼是WSDL語言
答:WebService的描述語言。
一、什麼是WCF技術,WCF能夠解決什麼業務問題?二、什麼是AOP,在C#中實現AOP有幾種方式,列舉你熟悉的AOP組件。
本人在深圳面試十來家,發現百分之八十的題目都是來之於如下題目,今天分享給你們,好好背吧.
一、@page指令只能在_ASPx___文件(填寫擴展名)中使用,而@Control指令只能用在_ascx___文件(填寫擴展名)中使用.
二、說明控件DataGrid,DataTable,DataView,DetailsView,formView,Repeator經常使用屬性,若是要想把一條記錄分紅兩列顯示,以上控件哪些能夠用,哪些不能夠用?若是可用,如何處理?
答:DataMember:綁定的表或者視圖,DataSourseID:數據源控制的ID,Visible:是否顯示該控件. FormView,Repeator能夠用,其餘的控件不能可用,在ItemTemplate模板裏用表格或者用列表來顯示.
三、寫出下列的含義 <% %>,<%# %>,
答:<% %>是服務器端代碼塊
<%# %>表示綁定的數據源
四、請解釋Page.IsPostBack,Response.Write,Response.End,DBNull.Value, DataSet,DataTable,DataView,SqlDataReader,stringbuilder,ArrayList?
Page.IsPostBack:是否正是被首次加載
Response.Write:打印指定的文本
Response.End:中止當前的程序並返回結果
DBNull是一個類。DBNull.Value是它惟一的實例。它指數據庫中數據爲空(<NULL>)時,在.Net中的值。
DataSet:DataSet是數據在內存中的表示形式,是不依賴與數據庫的獨立數據集合.
DataTable:是一個包含列和行表.
DataView:數據視圖
SqlDataReader:提供一種從 SQL Server 數據庫讀取行的只進流的方式。
五、 stringbuilder:StringBuffer線程安全的可變字符序列。一個相似於 String 的字符串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但經過某些方法調用能夠改變該序列的長度和內容。
ArrayList:動態加載的數組
partial,protected,private,public的含義:
答:partial:僅所屬類的成員才能夠訪問
protected:可被所屬的類或派生自所屬類的類型訪問
public:訪問不受限制。
六、如何理解死鎖的概念?死鎖是如何造成的?在應用中應注意什麼事項避免死鎖?
死鎖是一種條件,不只僅是在關係數據庫管理系統 (RDBMS) 中發生,在任何多用戶系統中均可以發生的。當兩個用戶(或會話)具備不一樣對象的鎖,而且每一個用戶須要另外一個對象的鎖時,就會出現死鎖。每一個用戶都等待另外一個用戶釋放他的鎖。當兩個鏈接陷入死鎖時,Microsoft? SQL Server? 會進行檢測。其中一個鏈接被選做死鎖犧牲品。該鏈接的事務回滾,同時應用程序收到錯誤。
阻塞任何基於鎖的併發系統都不可避免地具備可能在某些狀況下發生阻塞的特徵。當一個鏈接控制了一個鎖,而另外一個鏈接須要衝突的鎖類型時,將發生阻塞。其結果是強制第二個鏈接等待,或在第一個鏈接上阻塞。
其實全部的死鎖最深層的緣由就是一個——資源競爭。
表現一:一個用戶A 訪問表A(鎖住了表A),而後又訪問表B,另外一個用戶B 訪問表B(鎖住了表B),而後企圖訪問表A。這時用戶A因爲用戶B已經鎖住表B,它必須等待用戶B釋放表B,才能繼續,好了他老人家就只好老老實實在這等了。
一樣用戶B要等用戶A釋放表A才能繼續這就死鎖了。
解決方法:
這種死鎖是因爲你的程序的BUG產生的,除了調整你的程序的邏輯別無他法。
仔細分析你程序的邏輯:
1:儘可能避免同時鎖定兩個資源;
2: 必須同時鎖定兩個資源時,要保證在任什麼時候刻都應該按照相同的順序來鎖定資源。
表現二:
用戶A讀一條紀錄,而後修改該條紀錄,這是用戶B修改該條紀錄,這裏用戶A的事務裏鎖的性質由共享鎖企圖上升到獨佔鎖(for update),而用戶B裏的獨佔鎖因爲A有共享鎖存在因此必須等A釋放掉共享鎖,而A因爲B的獨佔鎖而沒法上升的獨佔鎖也就不可能釋放共享鎖,因而出現了死鎖。
這種死鎖比較隱蔽,但其實在稍大點的項目中常常發生。
解決方法:
讓用戶A的事務(即先讀後寫類型的操做),在select 時就是用Update lock
七、什麼是事務? 使用事務的語句有哪些?
答:事務是一種機制,是一個操做序列,它包括了一組數據庫操做命令,而且全部的命令做爲一個總體向
系統提交或者撤消操做請求,要麼所有,要麼所有不執行.
begin transaction
commit transaction
rollback transaction
八、在update觸發器中如何使用修改前,後的數據?
if update(字段1)
begin
...
end