網(wǎng)上收集的面試題,自己做了一下,改了些小錯。 1. 簡述 private、 protected、 public、 internal 修飾符的訪問權(quán)限。 答 . private : 私有成員, 在類的內(nèi)部才可以訪問。 protected : 保護成員,該類內(nèi)部和繼承類中可以訪問。 public : 公共成員,完全公開,沒有訪問限制。 internal: 在同一程序集內(nèi)可以訪問。
2. 列舉ASP.NET 頁面之間傳遞值的幾種方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session變量 3.使用Server.Transfer 4.使用Application 5.使用Cache 6使用HttpContext的Item屬性 7.使用文件 8.使用數(shù)據(jù)庫 9.使用Cookie
3. 一列數(shù)的規(guī)則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數(shù)是多少, 用遞歸算法實現(xiàn)。 答:public class MainClass { public static void { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i <= 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } }
4. C#中的委托是什么?事件是不是一種委托? 答 :委托可以把一個方法作為參數(shù)代入另一個方法。 委托可以理解為指向一個函數(shù)的引用。 事件是一種特殊的委托
5. override與重載的區(qū)別 答 :重載是方法的名稱相同。參數(shù)或參數(shù)類型不同,進行多次重載以適應(yīng)不同的需要。 override 是進行基類中虛函數(shù)或抽象函數(shù)的重寫,用于實現(xiàn)多態(tài)。
6. 請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty? 答: foreach(System.Windows.Forms.Control control in this.Controls) { if(control is System.Windows.Forms.TextBox) { ((System.Windows.Forms.TextBox)control).Text = String.Empty; } } 7. 請編程實現(xiàn)一個冒泡排序算法? 答: static void Sort(int[] array) { //遍歷數(shù)組 for (int i = 0; i < array.Length - 1; i++) { //從數(shù)組底部開始查找最小數(shù),并將提升到頂部 for (int j = array.Length - 1; j > i; j--) { if (array[j] < array[j - 1]) { int tmp = array[j - 1]; array[j - 1] = array[j]; array[j] = tmp; } } } } 8. 描述一下C#中索引器的實現(xiàn)過程,是否只能根據(jù)數(shù)字進行索引?(索引器是對屬性的封裝,具體查看msdn) 答:否,可以用任意類型。
9. 求以下表達式的值,寫出您想到的一種或幾種實現(xiàn)方法: 1-2+3-4+……+m 答: //高效算法 static int Sum1(int num) { int sum = -(num / 2);
if (num % 2 != 0) { sum += num; }
return sum; }
//普通算法 static int Sum2(int num) { int sum = 0;
for (int i = 1; i <= num; i++) { sum += (i % 2 == 0 ? -i : i); }
return sum; }
10. 用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層? 答:使用三層架構(gòu)設(shè)計模式:數(shù)據(jù)訪問層,業(yè)務(wù)層,表示層。 數(shù)據(jù)訪問層:對數(shù)據(jù)進行操作,實現(xiàn)數(shù)據(jù)的增刪改查。 業(yè)務(wù)層一般分為兩層:業(yè)務(wù)表現(xiàn)層實現(xiàn)與表示層的溝通,業(yè)務(wù)規(guī)則層實現(xiàn)用戶業(yè)務(wù)邏輯等。 表示層:實現(xiàn)數(shù)據(jù)呈現(xiàn)、用戶交互。 優(yōu)點:分工明確,條理清晰,易于調(diào)試,而且具有可擴展性。 缺點:增加開發(fā)成本。
11. 在下面的例子里 using System; class A { public A() { PrintFields(); } public virtual void PrintFields(){} } class B:A { int x=1; int y; public B() { y=-1; } public override void PrintFields() { Console.WriteLine("x={0},y={1}",x,y); } 當使用new B()創(chuàng)建B的實例時,產(chǎn)生什么輸出? 答:輸出x=1,y=0
12. 什么叫應(yīng)用程序域? 答:應(yīng)用程序域可以理解為一種輕量級進程,占用資源小。 一個應(yīng)用程序域是一組程序集的一個邏輯容器,具有以下特點:
13. CTS、CLS、CLR分別作何解釋? 答:CTS:通用語言系統(tǒng)。CLS:通用語言規(guī)范。CLR:公共語言運行庫。
14. 什么是裝箱和拆箱? 答:裝箱:從值類型轉(zhuǎn)換到引用類型。 拆箱:從引用類型轉(zhuǎn)換到值類型。
15.什么是受管制(托管)的代碼? 答:
托管代碼 (Managed code)
由公共語言運行庫環(huán)境CLR(而不是直接由操作系統(tǒng))執(zhí)行的代碼。托管代碼應(yīng)用程序可以獲得公共語言運行庫服務(wù),例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務(wù)幫助提供獨立于平臺和語言的、統(tǒng)一的托管代碼應(yīng)用程序行為。
非托管代碼 (Unmanaged Code) 在公共語言運行庫環(huán)境的外部,由操作系統(tǒng)直接執(zhí)行的代碼。非托管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務(wù);它與托管代碼不同,后者從公共語言運行庫中獲得這些服務(wù)。
16. 什么是強命名程序集? 答:程序集需要經(jīng)過加密簽名,強命名程序集可以部署到全局程序集緩存中,成為公共程序集。
17. net中讀寫數(shù)據(jù)庫需要用到那些類?他們的作用? 答:DbConnection:數(shù)據(jù)庫連接類 DataCommand:執(zhí)行語句命令。 DataSet:數(shù)據(jù)集 DataAdapter:數(shù)據(jù)適配器,用于填充數(shù)據(jù)到數(shù)據(jù)集。 DataReader:數(shù)據(jù)讀取器
18. ASP.net的身份驗證方式有哪些?分別是什么原理? 答:Windwos(默認)用IIS控制 From(窗體)用帳戶 Passport(密鑰)
19.在.net中,配件的意思是? 答:程序集。(中間語言,源數(shù)據(jù),資源,裝配清單)
20. 常用的調(diào)用WebService的方法有哪些? 答:1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜單選項
21. .Net Remoting 的工作原理是什么? 答:服務(wù)器端向客戶端發(fā)送一個進程編號,一個程序域編號,以確定對象的位置。
22.在C#中,string str = null 與 string str = “” 請盡量使用文字或圖象說明其中的區(qū)別。 答:string str = null 是不給他分配內(nèi)存空間,而string str = "" 給它分配長度為空字符串的內(nèi)存空間。
23. 請詳述在dotnet中類(class)與結(jié)構(gòu)(struct)的異同? 答:class屬于引用類型,可以實現(xiàn)接口和單繼承其他類,還可以作為基類型,class實例內(nèi)存分配在托管堆上。 struct屬于值類型,不能作為基類型,但是可以實現(xiàn)接口,struct實例內(nèi)存棧上。
24. 根據(jù)委托(delegate)的知識,請完成以下用戶控件中代碼片段的填寫: namespace test { public delegate void OnDBOperate(); public class UserControlBase : System.Windows.Forms.UserControl { public event OnDBOperate OnNew
private void buttonClick(object sender, EventArgs e) { if(sender.Equals(btnNew)) { //請在以下補齊代碼用來調(diào)用OnDBOperate委托簽名的OnNew事件。 } } } 答:if(OnNew != null) OnNew();
25. 分析以下代碼,完成填空 string strTmp = "abcdefg某某某"; int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; int j= strTmp.Length; 以上代碼執(zhí)行完后,i= j= 答:i=13,j=10
26. SQLSERVER服務(wù)器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務(wù)號, LastUpdateDate表示更新時的服務(wù)器時間,請使用一句SQL語句獲得最后更新的事務(wù)號 答:Select top 1 ID FROM table1 Order by LastUpdateDate desc
27. 根據(jù)線程安全的相關(guān)知識,分析以下代碼,當調(diào)用test方法時i>10時是否會引起死鎖?并簡要說明理由。 public void test(int i) { lock(this) { if (i>10) { i--; test(i); } } } 答:不會發(fā)生死鎖,因為lock只適用于多線程同步鎖定資源,當i>10引發(fā)的遞歸調(diào)用test方法都是在同一個線程中執(zhí)行,lock在此毫無意義。
28. 簡要談一下您對微軟.NET 構(gòu)架下remoting和webservice兩項技術(shù)的理解以及實際中的應(yīng)用。 答:webservice主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進制傳送提高效率。
29. 公司要求開發(fā)一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)。根據(jù)您的知識,請簡要談一下您的思路 答:根據(jù)點擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中。
30. 給定以下XML文件,完成算法流程圖。 <FileSystem> < DriverC > <Dir DirName=”MSDOS <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 ); } }
31.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID可能不是連續(xù)的。 答:解1: select top 10 * from A where id not in ( select top 30 id from A ) 解2: select top 10 * from A where id > ( Select top 1 id from ( select top 30 id from A order by id )as A )
32. 面向?qū)ο蟮恼Z言具有________性、_________性、________性 答:封裝、繼承、多態(tài)。
33. 能用foreach遍歷訪問的對象需要實現(xiàn) ________________接口或聲明________________方法的類型。 答:IEnumerable 、 GetEnumerator。
34. GC是什么? 為什么要有GC? 答:GC是垃圾收集器。程序員不用擔心內(nèi)存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調(diào)用下面的方法: System.GC.Collect();
35. String s = new String("xyz");創(chuàng)建了幾個Object? 答:兩個對象,一個是字符串“xyx”,一個是指向“xyx”的引用對象s。
36. abstract class和interface有什么區(qū)別? 答:聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。 接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換。
37. 啟動一個線程是用run()還是start()? 答:調(diào)用Start()方法。
38. 接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)? 答:接口可以繼承接口。 抽象類可以實現(xiàn)(implements)接口。 抽象類是否可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。
39. 構(gòu)造器(構(gòu)造函數(shù))Constructor是否可被override? 答:構(gòu)造器Constructor不能被繼承,因此不能被override,但可以被重載。
40.是否可以繼承String類? 答:String類是密封類故不可以繼承。
41. try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后? 答:會執(zhí)行,在return前執(zhí)行。
42. 兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對? 答:不對,必須相同的hash code。
43. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:都可以。
44. 當一個線程進入一個對象的一個Synchronized方法后,其它線程是否可進入此對象的其它方法? 答:不能,一個對象的一個Synchronized方法只能由一個線程訪問。
45. abstract的method是否可同時是static,是否可同時是synchronized? 答:否。
46. List是否繼承自Collection接口? 答:是。
47. 數(shù)組有沒有Length()這個方法? String有沒有Length()這個方法? 答:數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String沒有l(wèi)ength()這個方法,有l(wèi)ength屬性。
48. Sleep() 和 Wait() 有什么區(qū)別? 答:Sleep()方法是使線程停止一段時間的方法。在Sleep 時間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調(diào)度為放棄執(zhí)行,除非 (a)“醒來”的線程具有更高的優(yōu)先級。 (b)正在運行的線程因為其它原因而阻塞。 wait()是線程交互時,如果線程對一個同步對象x 發(fā)出一個wait()調(diào)用,該線程會暫停執(zhí)行,被調(diào)對象進入等待狀態(tài),直到被喚醒或等待時間到。
49. short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? 答:short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1 = (short)(s1 + 1)。 short s1 = 1; s1 += 1正確。
50. 談?wù)?/strong>sealed, finally, finalize的區(qū)別。 答:sealed—修飾符(關(guān)鍵字)如果一個類被聲明為sealed,意味著它不能作為基類派生出新的子類。因此,一個類不能既被聲明為 abstract的,又被聲明為sealed的。將方法聲明為sealed,可以保證它們在使用中不被重載。 finally—在異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進入 finally 塊(如果有的話)。 finalize—方法名。使用finalize方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。
51. 如何處理幾十萬條并發(fā)數(shù)據(jù)? 答:用存儲過程或事務(wù)。取得最大標識的時候同時更新。注意主鍵不是自增量方式這種方法并發(fā)的時候是不會有重復(fù)主鍵的,取得最大標識要有一個存儲過程來獲取。
52. Session有什么重大BUG,微軟提出了什么方法加以解決? 答:是IIS中由于有進程回收機制,系統(tǒng)繁忙的話Session會丟失,可以用Sate server或SQL Server數(shù)據(jù)庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。
53. 進程和線程的區(qū)別? 答:進程是系統(tǒng)進行資源分配和調(diào)度的單位;線程是CPU調(diào)度和分派的單位,一個進程可以有多個線程,這些線程共享這個進程的資源。
54. 堆和棧的區(qū)別? 答:棧:由編譯器自動分配、釋放。在函數(shù)體中定義的變量通常在棧上。 堆:一般由程序員分配釋放。用new、malloc等分配內(nèi)存函數(shù)分配得到的就是在堆上。
55. 成員變量和成員函數(shù)前加static的作用? 答:用來存儲類的數(shù)據(jù)或執(zhí)行類的操作。比如類成員變量可以用來存儲類實例的數(shù)量。類成員函數(shù)負責這種統(tǒng)計的動作。
56. ASP.NET與ASP相比,主要有哪些進步? 答:asp解釋型,aspx編譯型,性能提高,有利于保護源碼。
57. 產(chǎn)生一個int數(shù)組,長度為100,并向其中隨機插入1-100,并且不能重復(fù)。 答: static void RandomArray() { //創(chuàng)建List,并添加1--100到List List<int> list = new List<int>(); for (int i = 1; i <= 100; i++) { list.Add(i); }
//創(chuàng)建數(shù)組 int[] array = new int[100]; for (int i = 0; i < 100; i++) { Random random = new Random(); //使用Random從List獲取1--100到數(shù)組中 //每獲取一個整數(shù),便將其從List中刪除 int tmp = random.Next(0, list.Count - 1); array[i] = list[tmp]; list.RemoveAt(tmp); }
foreach (int i in array) { Console.WriteLine(i); } } 58. 請說明在.net中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺點。 答:session(viewstate) 簡單,但易丟失 application 全局 cookie 簡單,但可能不支持,可能被偽造 input type="hidden" 簡單,可能被偽造 url參數(shù) 簡單,顯示于地址欄,長度有限 數(shù)據(jù)庫 穩(wěn)定,安全,但性能相對弱
59. 請指出GAC的含義? 答:全局程序集緩存。
60. 向服務(wù)器發(fā)送請求有幾種方式? 答:get和post。get一般為鏈接方式,post一般為按鈕方式。
61. DataReader與DataSet有什么區(qū)別? 答:一個是只能向前的只讀游標,一個是內(nèi)存中的表集合。
62. 軟件開發(fā)過程一般有幾個階段?每個階段的作用? 答:可行性分析(風險控制),需求分析,架構(gòu)設(shè)計,代碼編寫,測試,部署,維護
63. 在c#中using和new這兩個關(guān)鍵字有什么意義,請寫出你所知道的意義? 答:using
new
64. 需要實現(xiàn)對一個字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續(xù)空格的話,僅保留一個空格,即允許字符串中間有多個空格,但連續(xù)的空格數(shù)不可超過一個. 答:string inputStr = " xx xx "; inputStr = Regex.Replace(inputStr.Trim(), " +", " ");
65. 下面這段代碼輸出什么?為什么? int i=5; int j=5; if (Object.ReferenceEquals(i,j)) Console.WriteLine("Equal"); else Console.WriteLine("Not Equal"); 答:不相等,因為比較的是對象的地址。
66. 什么叫做SQL注入,如何防止?請舉例說明。 答:利用sql關(guān)鍵字對網(wǎng)站進行攻擊。過濾關(guān)鍵字、使用存儲過程等。
67. 什么是反射? 答:動態(tài)獲取程序集中元數(shù)據(jù)信息。
68. 用Singleton如何寫設(shè)計模式 答:/// <summary> /// 單件模式類 /// </summary> public class Singleton { //注意使用volatile保證編譯器不會對instance對象進行次序上的微調(diào) private static volatile Singleton instance; //同步幫助對象 private static object lockHelper = new object(); //阻止對象實例化 private Singleton() { }
public static Singleton Instance { get { if (instance == null) { lock (lockHelper) { if (instance == null) { instance = new Singleton(); } } }
return instance; } } } 69. 什么是Application Pool? 答:Web應(yīng)用,類似Thread Pool,提高并發(fā)性能。
70. 什么是虛函數(shù)?什么是抽象函數(shù)? 答:虛函數(shù):基類中已實現(xiàn)該函數(shù),并且可由子類繼承并重寫。 抽象函數(shù):基類中僅給出該函數(shù)原型,未實現(xiàn)該函數(shù),其非抽象子類必須實現(xiàn)該函數(shù)。
71. 什么是XML? 答:XML即可擴展標記語言。eXtensible Markup Language.標記是指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。如何定義這些標記,即可以選擇國際通用的標記語言,比如HTML,也可以使用象XML這樣由相關(guān)人士自由決定的標記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
72. 什么是Web Service?UDDI? 答:Web Service便是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進行互操作。 UDDI 的目的是為電子商務(wù)建立標準;UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現(xiàn)標準規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web Service注冊,以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標準。
73. 什么是ASP.net中的用戶控件? 答:用戶控件一般用在內(nèi)容多為靜態(tài),或者少許會改變的情況下用的比較多。類似ASP中的include,但是功能要強大的多。
74. 列舉一下你所了解的XML技術(shù)及其應(yīng)用 答:xml用于配置,用于保存靜態(tài)數(shù)據(jù)類型.接觸XML最多的是web Services..和config,存儲經(jīng)常使用但是不經(jīng)常修改的數(shù)據(jù)
75. ADO.net中常用的對象有哪些?分別描述一下。 答:DbConnection 數(shù)據(jù)庫連接對象 DbCommand 數(shù)據(jù)庫命令 DataReader 數(shù)據(jù)讀取器 DataSet 數(shù)據(jù)集 DataAdaprer數(shù)據(jù)適配器
76. 什么是code-Behind技術(shù)。 答:將一個頁面的Html部分與服務(wù)器代碼分離,頁面的Html文件使用aspx為擴展名,頁面代碼文件使用cs為擴展名。方便代碼編寫和整理,將頁面展示與后臺代碼相互剝離。
77. 什么是SOAP,有哪些應(yīng)用。 答:simple object access protocal,簡單對象接受協(xié)議.以xml為基本編碼結(jié)構(gòu),建立在已有通信協(xié)議上(如http)的一種規(guī)范Web Service使用的協(xié)議..
78. C#中property與 attribute的區(qū)別,他們各有什么用處,這種機制的好處在哪里? 答:property是屬性,用于對類中的字段進行包裝,方便讀、寫類中的字段,其實質(zhì)是set和get方法。 attribute是特性,用來標識元數(shù)據(jù)的一些附加信息。可以使用反射提取元數(shù)據(jù)的特性,在編寫代碼時可以根據(jù)元數(shù)據(jù)的不同特性產(chǎn)生不同的行為。
79. XML 與 HTML 的主要區(qū)別 答:1. XML是區(qū)分大小寫字母的,HTML不區(qū)分。 2. 在HTML中,如果上下文清楚地顯示出段落或者列表鍵在何處結(jié)尾,那么你可以省略</p>或者</li>之類的結(jié)束標記。在XML中,絕對不能省略結(jié)束標記。 3. 在XML中,擁有單個標記而沒有匹配的結(jié)束標記的元素必須用一個 / 字符作為結(jié)尾。這樣分析器就知道不用查找結(jié)束標記了。 4. 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。 5. 在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應(yīng)的值。
80. c#中的三元運算符是? 答:?:
81. 當整數(shù)a賦值給一個object對象時,整數(shù)a將會被? 答:裝箱。
82. 類成員有_____種可訪問形式? 答:this.;new Class().Method;
83. public static const int A=1;這段代碼有錯誤么?是什么? 答:const不能用static修飾。
84. float f= 答:-123。
85. 委托聲明的關(guān)鍵字是______? 答:delegate.
86. 用sealed修飾的類有什么特點? 答:密封,不能繼承。
87. 在Asp.net中所有的自定義用戶控件都必須繼承自________? 答:Control。
88. 在.Net中所有可序列化的類都被標記為_____? 答:[Serializable]
89. 在.Net托管代碼中我們不用擔心內(nèi)存漏洞,這是因為有了______? 答:自動內(nèi)存管理和垃圾收集GC。
90. 下面的代碼中有什么錯誤嗎?_______ using System; class A { public virtual void F(){ Console.WriteLine("A.F"); } } abstract class B:A { public abstract override void F(); 答:abstract override 是不可以一起修飾。
91. 當類T只聲明了私有實例構(gòu)造函數(shù)時,則在T的程序文本外部,___可以___(可以 or 不可以)從T派生出新的類,不可以____(可以 or 不可以)直接創(chuàng)建T的任何實例。 答:不可以,不可以。
92. 下面這段代碼有錯誤么? switch (i){ case(): 答://case()條件不能為空 CaseZero(); break; case 1: CaseOne(); break; case 2: dufault; 答://wrong,格式不正確 CaseTwo(); break; }
93. 在.Net中,類System.Web.UI.Page 可以被繼承么? 答:可以。
94. .Net的錯誤處理機制是什么? 答:.net錯誤處理機制采用try->catch->finally結(jié)構(gòu),發(fā)生錯誤時,層層上拋,直到找到匹配的Catch為止。
95. 利用operator聲明且僅聲明了==,有什么錯誤么? 答:應(yīng)同時重載Equals和GetHashCode方法,且重載"!="操作符。
96. 在.net(C# or vb.net)中如何用戶自定義消息,并在窗體中處理這些消息。 答:在form中重載DefWndProc函數(shù)來處理消息: protected override void DefWndProc (ref System.WinForms.Message m) { switch(m.msg) { case WM_Lbutton : ///string與MFC中的CString的Format函數(shù)的使用方法有所不同 string message = string.Format("收到消息!參數(shù)為:{0},{1}",m.wParam,m.lParam); MessageBox.Show(message);///顯示一個消息框 break; case USER: 處理的代碼 default: base.DefWndProc(ref m);///調(diào)用基類函數(shù)處理非自定義消息。 break; } }
97. 在.net(C# or vb.net)中如何取消一個窗體的關(guān)閉。 答:private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { e.Cancel=true; }
98. 在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什么不同?(winform題目非asp.net題目) 答:一個是退出整個應(yīng)用程序,一個是關(guān)閉其中一個form。
99. 在C#中有一個double型的變量,比如10321.5,比如122235401.21644,作為貨幣的值如何按各個不同國家的習(xí)慣來輸出。比如美國用$10,321.50和$122,235,401.22而在英國則為£10 321.50和£122 235 401.22 答:System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US"); //System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");為英國貨幣類型 decimal y = 9999999999999999999999999999m; string str = String.Format(MyCulture, "My amount = {0:c}",y);
100. 某一密碼僅使用K、L、M、N、O共5個字母,密碼中的單詞從左向右排列,密碼單詞必須遵循如下規(guī)則: (1)密碼單詞的最小長度是兩個字母,可以相同,也可以不同 (2)K不可能是單詞的第一個字母 (3)如果L出現(xiàn),則出現(xiàn)次數(shù)不止一次 (4)M不能使最后一個也不能是倒數(shù)第二個字母 (5)K出現(xiàn),則N就一定出現(xiàn) (6)O如果是最后一個字母,則L一定出現(xiàn) 問題一:下列哪一個字母可以放在LO中的O后面,形成一個3個字母的密碼單詞? A) K B)L C) M D) N 答案:B
問題二:如果能得到的字母是K、L、M,那么能夠形成的兩個字母長的密碼單詞的總數(shù)是多少? A)1個 B)3個 C)6個 D)9個 答案:A
問題三:下列哪一個是單詞密碼? A) KLLN B) LOML C) MLLO D)NMKO 答案:C
101. 62-63=1 等式不成立,請移動一個數(shù)字(不可以移動減號和等于號),使得等式成立,如何移動? 答案:62移動成2的6次方
102. C#可否對內(nèi)存進行直接的操作? 答:可以,C#可以使用指針,但要加上unsafe語句。
103. ADO.NET相對于ADO等主要有什么改進? 答:
104. 寫一個HTML頁面,實現(xiàn)以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。并在2分鐘后自動關(guān)閉頁面。 答: <html> <head> <title>Mouse Events Example</title> <script type="text/javascript"> function handleEvent(oEvent) { if(event.button == 1) { alert("您好!"); } else if(event.button == 2) { alert("禁止右鍵"); } } </script> </head> <body onmouseup="handleEvent(event)"> 請按下鼠標左鍵或右鍵! </body> </html>
105. 大概描述一下ASP.NET服務(wù)器控件的生命周期 答:初始化 加載視圖狀態(tài) 處理回發(fā)數(shù)據(jù) 加載 發(fā)送回發(fā)更改通知 處理回發(fā)事件 預(yù)呈現(xiàn) 保存狀態(tài) 呈現(xiàn) 處置 卸載
106. &和&&的區(qū)別。 答:&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。
107. error和exception有什么區(qū)別? 答:error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。 exception 表示一種設(shè)計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。
108. <%# %> 和 <% %> 有什么區(qū)別? 答:<%# %>表示綁定的數(shù)據(jù)源 <% %>是服務(wù)器端代碼塊
109. 你覺得ASP.NET 2.0(VS2005)和你以前使用的開發(fā)工具(.Net 1.0或其他)有什么最大的區(qū)別?你在以前的平臺上使用的哪些開發(fā)思想(pattern / architecture)可以移植到ASP.NET 2.0上 (或者已經(jīng)內(nèi)嵌在ASP.NET 2.0中) 答:1 ASP.NET 2.0 把一些代碼進行了封裝打包,相比1.0相同功能減少了很多代碼。 2 同時支持代碼分離和頁面嵌入服務(wù)器端代碼兩種模式,1.0版本中.NET提示幫助只有在分離的代碼文件,無法在頁面嵌入服務(wù)器端代碼獲得幫助提示。 3 代碼和設(shè)計界面切換的時候,2.0支持光標定位。 4 在綁定數(shù)據(jù),做表的分頁、UPDATE、DELETE等操作都可以可視化操作,方便了初學(xué)者。 5 在ASP.NET中增加了40多個新的控件,減少了工作量。
110. 重載與覆蓋的區(qū)別? 答:1、方法的覆蓋是子類和父類之間的關(guān)系,是垂直關(guān)系;方法的重載是同一個類中方法之間的關(guān)系,是水平關(guān)系 2、覆蓋只能由一個方法,或只能由一對方法產(chǎn)生關(guān)系;方法的重載是多個方法之間的關(guān)系。 3、覆蓋要求參數(shù)列表相同;重載要求參數(shù)列表不同。 4、覆蓋關(guān)系中,調(diào)用那個方法體,是根據(jù)對象的類型(對象對應(yīng)存儲空間類型)來決定;重載關(guān)系,是根據(jù)調(diào)用時的實參表與形參表來選擇方法體的。
111. 分析以下代碼。 public static void test(string ConnectString) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = ConnectString; try { conn.Open(); …… } catch(Exception Ex) { MessageBox.Show(Ex.ToString()); } finally { if (!conn.State.Equals(ConnectionState.Closed)) conn.Close(); } } 請問 1)以上代碼可以正確使用連接池嗎? 答:回答:如果傳入的connectionString完全相同的話(即連接字符串相等),可以正確使用連接池。 2)以上代碼所使用的異常處理方法,是否所有在test方法內(nèi)的異常都可以被捕捉并顯示出來? 答:只可以捕捉與CLS相兼容的異常,如果代碼中拋出了與CLS不兼容的異常(如非托管代碼中拋出的異常),則不能捕捉到。
112. 什么是WSE?目前最新的版本是多少? 答:WSE (Web Service Extension) 包來提供最新的WEB服務(wù)安全保證,目前最新版本2.0。
113.下面的例子中 using System; class A { public static int X; static A(){ X=B.Y+1; } } class B { public static int Y=A.X+1; static B(){} static void Console.WriteLine("X={0},Y={1}",A.X,B.Y); } } 產(chǎn)生的輸出結(jié)果是什么? 答:x=1,y=2
以下是08年3月新增面試題 1. asp.net中web應(yīng)用程序獲取數(shù)據(jù)的流程: A.Web Page B.Fill C.Sql05 D.Data Sourse E.DataGrid F.DataSet G.Select and Connect Commands H.Sql Data Adapter
答案:a,e,d,f,h,g,b,c
2. Asp.net執(zhí)行模式中各組件填入到對應(yīng)位置: A.Output Cache B.Parser C.Assembly Cache D.IE E.Memory F.Compiler WebPage被第一次請求時: D->__->__->__->__->D WebPage被第二次請求時: D->__->__->D WebPage的頁面輸出緩存被打開時: D->__->D
答案: WebPage被第一次請求時: D->_b_->_f_->_a_->_e_->D WebPage被第二次請求時: D->_b_->_e_->D WebPage的頁面輸出緩存被打開時: D->_a_->D
3.請將字符串"I am a student"按單詞逆序輸出 如"student a am I" 答: string str = "I am a student"; string[] n = str.Split(' '); for (int i = n.Length - 1; i >=0; i--) { Console.Write(n[i]); if (i != 0) { Console.Write(" "); } } |
|