C#精华面试题及答案 三
PS.學(xué)了兩三年的軟件開發(fā)到頭來發(fā)現(xiàn)連一些基本的東西都沒掌握,通過面試題來檢驗(yàn)自己的水平,讓學(xué)習(xí)變得更加有方向性,也為將來擇業(yè)而打下基礎(chǔ),不至于到時(shí)候手忙腳亂。
一.選擇,填空題
1.?在ADO.NET中,對(duì)于Command對(duì)象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯(cuò)誤的是(C)。
a)?insert、update、delete等操作的Sql語句主要用ExecuteNonQuery()方法來執(zhí)行;
b)?ExecuteNonQuery()方法返回執(zhí)行Sql語句所影響的行數(shù)。
c)?Select操作的Sql語句只能由ExecuteReader()方法來執(zhí)行;~
d)?ExecuteReader()方法返回一個(gè)DataReder對(duì)象;
?
2.??面向?qū)ο蟮恼Z言具有__繼承性_性、_封裝性_性、_多態(tài)性?性。
?
3.?能用foreach遍歷訪問的對(duì)象需要實(shí)現(xiàn)?________________接口或聲明________________方法的類型。(@)
答:IEnumerable?、?GetEnumerator()
?
4.?在C#中,表示一個(gè)字符串的變量應(yīng)使用以下哪條語句定義?(?B?)
A.?CString?str;
B.?string?str;
C.?Dim?str?as?string
D.?char?*?str;
?
5.?在C#編制的財(cái)務(wù)程序中,需要?jiǎng)?chuàng)建一個(gè)存儲(chǔ)流動(dòng)資金金額的臨時(shí)變量,則應(yīng)使用下列哪條語句?(?A?)
A.?decimal?theMoney;
B.?int?theMoney;
C.?string?theMoney;
D.?Dim?theMoney?as?double
?
6.?C#中,新建一字符串變量str,并將字符串”Tom's?Living?Room”保存到串中,則應(yīng)該
使用下列哪條語句?(B)
A.?string?str?=?“Tom\'s?Living?Room”;
B.?string?str?=?“Tom's?Living?Room”;
C.?string?str(“Tom's?Living?Room”);
D.?string?str(“Tom”s?Living?Room”);
?
7.?應(yīng)用ADO.NET?訪問數(shù)據(jù)時(shí),Connection?對(duì)象的連接字符串中Initial?Catalog?子串的
含義是?(?A?)
A.?Connection?對(duì)象連接到的數(shù)據(jù)庫的名稱????????????????????????????????
B.?Connection?對(duì)象的身份驗(yàn)證信息
C.?Connection?對(duì)象的最大連接時(shí)間
D.?Connection?對(duì)象使用的緩存大小
?
8.?使用Visual?Studio?.NET?的”新建C#?項(xiàng)目”創(chuàng)建一個(gè)名為”SimpleForm”的Windows
表單應(yīng)用程序,則在生成_______文件中可設(shè)置該程序集的Copyright、Trademark?等屬
性信息.(?D?)
A.?Form1.resx
B.?SimpleForm.sln
C.?SimpleForm.csproj
D.?AssemblyInfo.cs
?
9.?C#程序中,為使變量myForm?引用的窗體對(duì)象顯示為對(duì)話框,必須:?(?C?)
A.?使用myForm.ShowDailog?方法顯示對(duì)話框
B.?將myForm?對(duì)象的isDialog?屬性設(shè)為true
C.?將myForm?對(duì)象的FormBorderStyle?枚舉屬性設(shè)置為FixedDialog
D.?將變量myForm?改為引用System.Windows.Dialog?類的對(duì)象
?
10.?下列哪些語言可以用來開發(fā)XML?Web?Service????(?A,B,C,D?)
A.?C
B.?C++
C.?Java
D.?C#
?
11.?Web?表單中,按鈕的默認(rèn)事件是???(?A?)
A.?Click?事件
B.?Load?事件
C.?Init?事件
D.?Command?事件
?
12.?關(guān)于ASP.NET?窗體應(yīng)用程序,下列說法哪些是正確的??(?D?)
A.?Web?窗體是在瀏覽器中進(jìn)行解釋執(zhí)行的
B.?Web?窗體程序中腳本和代碼必須嚴(yán)格分開
C.?Web?窗體程序產(chǎn)生的HTML?頁面只能運(yùn)行于IE?瀏覽器
D.?Web?窗體程序的代碼可以使用任何一種.NET?兼容的編程語言編寫
?
13.?關(guān)于結(jié)構(gòu)類型,下列說法哪些是正確的??(?A?)
A.?結(jié)構(gòu)是值類型
B.?結(jié)構(gòu)中不允許定義帶參數(shù)的實(shí)例構(gòu)造函數(shù);
C.?結(jié)構(gòu)中不允許定義析構(gòu)函數(shù)
D.?結(jié)構(gòu)中可以定義成員方法,但是方法內(nèi)不能使用this?指針
E.?不能使用new?關(guān)鍵字創(chuàng)建結(jié)構(gòu)類型的實(shí)例
?
14.?關(guān)于線程和進(jìn)程,下列說法哪些是正確的????(?A??D?)
A.?線程是操作系統(tǒng)分配處理器時(shí)間的基本單位;
B.?進(jìn)程是操作系統(tǒng)分配處理器時(shí)間的基本單位;
C.?一個(gè)線程可以屬于多個(gè)進(jìn)程;
D.?一個(gè)進(jìn)程可以有多個(gè)線程;
?
15.?為從某個(gè)網(wǎng)站訪問xml信息,應(yīng)使用(??_)類的對(duì)象分析下載返回的xml文檔??(C??D)
A??StreamReader
B??TextReader
C??XmlReader
D??XmlTextReader
?
16.?面向?qū)ο缶幊讨械摹崩^承”的概念是指(B)
A?派生類對(duì)象可以不受限制地訪問所有的基類對(duì)象
B?派生自同一個(gè)基類的不同類的對(duì)象具有一些共同特征
C?對(duì)象之間通過消息進(jìn)行交互
D?對(duì)象的內(nèi)部細(xì)節(jié)被隱藏
?
17.?以下敘述正確的是(?D?)。@
A.?一條表達(dá)式中可以同時(shí)出現(xiàn)浮點(diǎn)數(shù)類型和decimal類型
B.?類可以繼承,并且可以多重繼承
C.?int[,]?b=new?int[4,5]??//創(chuàng)建了一個(gè)二維數(shù)組,第一維長為4,第二維長為5
D.?int?x=23;?object?o=x;?int?y=(int)?o;??//實(shí)現(xiàn)了一次裝箱操作
?
18.?以下有關(guān)結(jié)構(gòu)類型和枚舉類型的敘述錯(cuò)誤的是(?C )。
A.?結(jié)構(gòu)類型和枚舉類型都是復(fù)合類型???????
B.?結(jié)構(gòu)類型只能是簡單值類型的組合
C.?枚舉類型要求成員只能是整數(shù)類型??????
?D.?枚舉類型的變量在某一時(shí)刻只
?
19.?接口和類最主要的區(qū)別在于(?D?)。
A.類可以重載而接口不可以?????????????
B.類不可以重載而接口可以
C.類可以多重重載而接口不可以?????????
D.類不可以多重重載而接口可以
?
20.?關(guān)于靜態(tài)域成員與非靜態(tài)域成員,以下說法正確的是(??C??)。
A.?一個(gè)類的所有對(duì)象共享非靜態(tài)域成員?????????
B.?一個(gè)類的一個(gè)對(duì)象分別擁有不同的非靜態(tài)域成員的實(shí)例
C.?靜態(tài)域成員都能在不生成實(shí)例的情況下直接被使用???
D.?非靜態(tài)域成員都能
?
21.?關(guān)于重載,以下敘述錯(cuò)誤的是(C,D)。
A.?重載是指在類的內(nèi)部存在若干個(gè)方法名稱一致但是參數(shù)列表不同的方法
B.?方法重載是指創(chuàng)建多個(gè)名稱相同的方法,其中每個(gè)方法都在某些方面具有唯一性,以便編譯器能夠正確區(qū)別它們
C.?重載構(gòu)造函數(shù)主要是為了在創(chuàng)建對(duì)象的同時(shí)進(jìn)行賦值
D.?方法的重載允許兩個(gè)方法的名稱和參數(shù)列表相同,而返回類型不同
?
22.?下面有關(guān)C#中方法的參數(shù)描述正確的是(B?)。
A.?利用值類型參數(shù)調(diào)用方法時(shí),對(duì)形參的修改會(huì)反映到實(shí)參上去
B.?輸出型參數(shù)的實(shí)參在傳遞給形參前,不需要明確賦值
C.?引用型參數(shù)不另外開辟新的內(nèi)存區(qū)域,這一點(diǎn)是它與輸出型參數(shù)的不同之處
D.?數(shù)組型參數(shù)可以是任何類型的數(shù)組
?
23.?下面是一個(gè)派生類的定義語句:
public?class?car:?vehicle
{???private?string?model=”L”;
???private?int?wheelNo=4;}
請(qǐng)指出針對(duì)該定義的正確的說法(C?)。
A.?vehicle類是car類的一個(gè)特例,因而它可以被繼承
B.?car類是父類,vehicle類是子類
C.?在car類中定義的成員model和wheelNo會(huì)刪除vehicle類中同名的成員
D.?car類是vehicle類的一個(gè)特例,它可以繼承vehicle類中除構(gòu)造函數(shù)和析構(gòu)函
?
24.?(D?)關(guān)鍵字可以用來訪問當(dāng)前對(duì)象的基類對(duì)象。
A.object???????B.this???????
C.as???????????D.base
?
25.?重載是(B?)的形式之一。
A.接口??????????B.多態(tài)?????????????
C.繼承?????????D.類
?
26.?x的初值為24,則表達(dá)式x+=x--+=x%=17運(yùn)算的結(jié)果值為(D?)。
A.?28??????????B.27????????????
C.26??????????D.錯(cuò)誤的表達(dá)式
?
27.?下面是幾條定義初始化二維數(shù)組的語句,指出其中正確的是(D?)。
A.int?array2[?][?]=new?int[3,2];??????????
B.int?array2[,]=new?int[3,2];?????????
C.int[?][?]?array2=new?int[3,2];??????????
D.int[,?]?array2=new?int[3,2];
?
28.?一個(gè)初始化語句:
enum?monthes{January,February=3,March=5,April=7,May,June},則此時(shí)May的值為(C?)。
A.4????????B.5???????????C.8????????????D.9
?
29.?在Asp.net中所有的自定義用戶控件都必須繼承自________??答:Control。
30.?在.Net中所有可序列化的類都被標(biāo)記為_____??
答:[serializable]??
31.?在.Net托管代碼中我們不用擔(dān)心內(nèi)存漏洞,這是因?yàn)橛辛薩_____??
答:GC。
32.?在.Net中,類System.Web.UI.Page?可以被繼承么?
答:可以。
33.?聲明靜態(tài)變量的關(guān)鍵字是(static),聲明常量的關(guān)鍵字是(const)??
34.?在流程控制中CONTINUE的作用(跳出當(dāng)前循環(huán)繼續(xù)下一次循環(huán))
35.?軟件工程的三大文檔(需要分析說明書)(概要設(shè)計(jì)說明書)(詳細(xì)設(shè)計(jì)說明書)。??
36.??B/S通常使用的結(jié)構(gòu)設(shè)計(jì)模型分為(模型)(視圖)(控制器)。(MVC經(jīng)典的Web/Business/DataAccess)??
37.?XML的全稱是(Extensible?Markup?Language”可擴(kuò)展標(biāo)記語言”),提供了快速和有效地讀寫XML的方式的類分別是(XMLReader)(XMLWriter)?
38.?C#中所有的類型實(shí)質(zhì)上都是從(Object)類派生而來的。
39.?NET運(yùn)行庫支持被稱為(委托)的引用類型,其作用類似于C++中函數(shù)指針的用途。??
40.?B/S通常使用的結(jié)構(gòu)設(shè)計(jì)模型分為(模型)(視圖)(控制)?*
41.?類的三大特性是(封裝)(繼承)(多態(tài))?
42.?.NET運(yùn)行庫支持被稱為(委托)的引用類型,其作用類似于C++中函數(shù)指針的用途?
43.?C#中處理內(nèi)存管理功能的是(托管代碼GC(垃圾回收))
44.?在C#中用于顯式地將一個(gè)值或引用轉(zhuǎn)換為另一種不同的類型稱為(拆箱)
45.?在ADO。NET中,command對(duì)象是用(ExcuteNonQuery)(ExcuteScalar)(ExcuteDataReader)方法執(zhí)行命令
?
?
?
?
?
二.簡答題
1.?簡述?private、?protected、?public、?internal?修飾符的訪問權(quán)限。
答:private?:?私有成員,?在類的內(nèi)部才可以訪問。
????protected?:?保護(hù)成員,該類內(nèi)部和繼承類中可以訪問。
????public?:?公共成員,完全公開,沒有訪問限制。
????internal:?在同一命名空間內(nèi)可以訪問。
?
2.?C#中,string?str?=?null?與?string?str?="",請(qǐng)盡量用文字說明區(qū)別。
答:string?str?=""?分配空間而string?str?=?null不分配空間。
?
3.用sealed修飾的類有什么特點(diǎn)?
答:不可被繼承
?
?*4.請(qǐng)敘述const與readonly的區(qū)別。
e)?每一個(gè)class至多只可以定義一個(gè)static構(gòu)造函數(shù),并且不允許增加訪問級(jí)別關(guān)鍵字,參數(shù)列必須為空。 ?????????為了不違背編碼規(guī)則,通常把static數(shù)據(jù)成員聲明為private,然后通過statci?property提供讀寫訪問。 ?????????const?關(guān)鍵字用于修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數(shù)聲明引入給定類型的一個(gè)或多個(gè)常數(shù)。 ?????????const數(shù)據(jù)成員的聲明式必須包含初值,且初值必須是一個(gè)常量表達(dá)式。因?yàn)樗窃诰幾g時(shí)就需要完全評(píng)估。 ?????????const成員可以使用另一個(gè)const成員來初始化,前提是兩者之間沒有循環(huán)依賴。 ?????????readonly在運(yùn)行期評(píng)估賦值,使我們得以在確保“只讀訪問”的前提下,把object的初始化動(dòng)作推遲到運(yùn)行期進(jìn)行。 ?????????readonly?關(guān)鍵字與?const?關(guān)鍵字不同: const?字段只能在該字段的聲明中初始化。readonly?字段可以在聲明或構(gòu)造函數(shù)中初始化。因此,根據(jù)所使用的構(gòu)造函數(shù),readonly?字段可能具有不同的值。另外,const?字段是編譯時(shí)常數(shù),而?readonly?字段可用于運(yùn)行時(shí)常數(shù)。? readonly?只能在聲明時(shí)或者構(gòu)造函數(shù)里面初始化,并且不能在?static?修飾的構(gòu)造函數(shù)里面。
f)?
5.簡述?private、?protected、?public、?internal?修飾符的訪問權(quán)限。
private?:?私有成員,?在類的內(nèi)部才可以訪問。
protected?:?保護(hù)成員,該類內(nèi)部和繼承類中可以訪問。
public?:?公共成員,完全公開,沒有訪問限制。
internal:?在同一命名空間內(nèi)可以訪問。
?
?*6.請(qǐng)說明在.net中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺點(diǎn)。? session(viewstate)?簡單,但易丟失?@ application?全局? cookie?簡單,但可能不支持,可能被偽造? input?ttype="hidden"?簡單,可能被偽造? url參數(shù)簡單,顯示于地址欄,長度有限? 數(shù)據(jù)庫穩(wěn)定,安全,但性能相對(duì)弱
7.概述反射和序列化 答:反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對(duì)象。您可以使用反射動(dòng)態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對(duì)象,或從現(xiàn)有對(duì)象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性 序列化:序列化是將對(duì)象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個(gè)對(duì)象,然后使用?HTTP?通過?Internet?在客戶端和服務(wù)器之間傳輸該對(duì)象。在另一端,反序列化將從該流重新構(gòu)造對(duì)象。
?
8.什么是SOAP,有哪些應(yīng)用。
答:SOAP(Simple?Object?Access?Protocol?)簡單對(duì)象訪問協(xié)議(SOAP)是一種輕量的、簡單的、基于?XML?的協(xié)議,它被設(shè)計(jì)成在?WEB?上交換結(jié)構(gòu)化的和固化的信息。?SOAP?可以和現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議(?HTTP),簡單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME)。它還支持從消息系統(tǒng)到遠(yuǎn)程過程調(diào)用(RPC)等大量的應(yīng)用程序。Web?service?就是一個(gè)應(yīng)用程序,它向外界暴露出一個(gè)能夠通過Web進(jìn)行調(diào)用的API。這就是說,你能夠用編程的方法通過Web來調(diào)用這個(gè)應(yīng)用程序.
?
9.ASP。NET中共有幾種類型的控件?各有什么區(qū)別???
答:Html?控件傳統(tǒng)的html標(biāo)記??? ?Web?控件可以回傳數(shù)據(jù),事件驅(qū)動(dòng)??? ?自定義控件在原有控件的基礎(chǔ)上增加功能??? ?復(fù)合控件多個(gè)子控件復(fù)合成一個(gè)新的控件?
?
?10.什么情況用HTML控件,什么情況用WEB控件,并比較兩者差別
答:客戶端表現(xiàn)用html控件,如果想和server端交互,那么加上runat=server,它就成了服務(wù)器端控件,但它沒有web控件的很多方法和屬性,如果你需要用到,那么還是用webControls.
?
11.用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層? 答:一般為3層 數(shù)據(jù)訪問層,業(yè)務(wù)層,表示層。 數(shù)據(jù)訪問層對(duì)數(shù)據(jù)庫進(jìn)行增刪查改。 業(yè)務(wù)層一般分為二層,業(yè)務(wù)表觀層實(shí)現(xiàn)與表示層的溝通,業(yè)務(wù)規(guī)則層實(shí)現(xiàn)用戶密碼的安全等。 表示層為了與用戶交互例如用戶添加表單。 優(yōu)點(diǎn):?分工明確,條理清晰,易于調(diào)試,而且具有可擴(kuò)展性。 缺點(diǎn):?增加成本。
?
12.什么是XML? 答:XML即可擴(kuò)展標(biāo)記語言。eXtensible?Markup?Language.標(biāo)記是指計(jì)算機(jī)所能理解的信息符號(hào),通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章等。如何定義這些標(biāo)記,即可以選擇國際通用的標(biāo)記語言,比如HTML,也可以使用象XML這樣由相關(guān)人士自由決定的標(biāo)記語言,這就是語言的可擴(kuò)展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
13.什么是Web?Service?UDDI?@ 答:Web?Service便是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web?Service能與其他兼容的組件進(jìn)行互操作。 UDDI?的目的是為電子商務(wù)建立標(biāo)準(zhǔn);UDDI是一套基于Web的、分布式的、為Web?Service提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的Web?Service注冊(cè),以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)
14.WEB控件可以激發(fā)服務(wù)端事件,請(qǐng)談?wù)劮?wù)端事件是怎么發(fā)生并解釋其原理?自動(dòng)傳回是什么?為什么要使用自動(dòng)傳回。
在web控件發(fā)生事件時(shí),客戶端采用提交的形式將數(shù)據(jù)交回服務(wù)端,服務(wù)端先調(diào)用Page_Load事件,然后根據(jù)傳回的狀態(tài)信息自動(dòng)調(diào)用服務(wù)端事件自動(dòng)傳回是當(dāng)我們?cè)邳c(diǎn)擊客戶端控件時(shí),采用提交表單的形式將數(shù)據(jù)直接傳回到務(wù)端
只有通過自動(dòng)傳回才能實(shí)現(xiàn)服務(wù)端事件的機(jī)制,如果沒有自動(dòng)回傳機(jī)制就只能調(diào)用客戶端事件,而不能調(diào)用服務(wù)端事件
16.請(qǐng)簡述DataReader與DataSet的異與同。
17.PDB是什么東西??在調(diào)試中它應(yīng)該放在哪里??
答:PDB是用于保存調(diào)試和項(xiàng)目狀態(tài)信息的文件,在debug的時(shí)候?qū)a(chǎn)生pdb文件,調(diào)試的時(shí)候應(yīng)該放在和對(duì)應(yīng)應(yīng)用程序集相同目錄。?
18.簡述ajax的原理。
答:ajax簡單的講就是客戶端通過javascript腳本獲取服務(wù)器端的文本,通過解析返回值,更新部分的網(wǎng)頁內(nèi)容。
19.描述線程與進(jìn)程的區(qū)別??
答:線程(Thread)與進(jìn)程(Process)二者都定義了某種邊界,不同的是進(jìn)程定義的是應(yīng)用程序與應(yīng)用程序之間的邊界,不同的進(jìn)程之間不能共享代碼和數(shù)據(jù)空間,而線程定義的是代碼執(zhí)行堆棧和執(zhí)行上下文的邊界。一個(gè)進(jìn)程可以包括若干個(gè)線程,同時(shí)創(chuàng)建多個(gè)線程來完成某項(xiàng)任務(wù),便是多線程。而同一進(jìn)程中的不同線程共享代碼和數(shù)據(jù)空間。用一個(gè)比喻來說,如果一個(gè)家庭代表一個(gè)進(jìn)程,在家庭內(nèi)部,各個(gè)成員就是線程,家庭中的每個(gè)成員都有義務(wù)對(duì)家庭的財(cái)富進(jìn)行積累,同時(shí)也有權(quán)利對(duì)家庭財(cái)富進(jìn)行消費(fèi),當(dāng)面對(duì)一個(gè)任務(wù)的時(shí)候,家庭也可以派出幾個(gè)成員來協(xié)同完成,而家庭之外的人則沒有辦法直接消費(fèi)不屬于自己家庭的財(cái)產(chǎn)。?
20.什么是Windows服務(wù),它的生命周期與標(biāo)準(zhǔn)的EXE程序有什么不同?
答:Windows服務(wù)是運(yùn)行在windows后臺(tái)指定用戶下(默認(rèn)System)的應(yīng)用程序,它沒有標(biāo)準(zhǔn)的UI界面,想比標(biāo)準(zhǔn)的EXE程序,Windows服務(wù)是在服務(wù)開始的時(shí)候創(chuàng)建,而在服務(wù)結(jié)束的時(shí)候銷毀,而且可以設(shè)置服務(wù)是否與操作系統(tǒng)一起啟動(dòng),一起關(guān)閉。它支持三種方式:1)自動(dòng)方式?2)手動(dòng)方式 3)禁用?。自動(dòng)方式的時(shí)候,windows服務(wù)將在OS啟動(dòng)后自動(dòng)啟動(dòng)運(yùn)行,而手動(dòng)方式則必須手工啟動(dòng)服務(wù),禁用的情況下服務(wù)將不能被啟動(dòng)。另外標(biāo)準(zhǔn)的EXE默認(rèn)使用的當(dāng)前登錄的用戶,而windows服務(wù)則默認(rèn)使用System用戶,這在對(duì)系統(tǒng)資源訪問的時(shí)候特別需要注意。?
21.什么是強(qiáng)類型,什么是弱類型?哪種更好些?為什么??
答:強(qiáng)類型是在編譯的時(shí)候就確定類型的數(shù)據(jù),在執(zhí)行時(shí)類型不能更改,而弱類型在執(zhí)行的時(shí)候才會(huì)確定類型。沒有好不好,二者各有好處,強(qiáng)類型安全,因?yàn)樗孪纫呀?jīng)確定好了,而且效率高。一般用于編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運(yùn)行的時(shí)候容易出現(xiàn)錯(cuò)誤,但它靈活,多用于解釋型編程語言,如javascript,vb等?.
22.什么是GAC?它解決了什么問題??
答:Gloal?Assembly?Cache,全局應(yīng)用程序集緩存。它解決了幾個(gè)程序共享某一個(gè)程序集的問題。不必再將那個(gè)被共享的程序集拷貝到應(yīng)用程序目錄了,其實(shí)這道理很簡單,.net應(yīng)用程序在加載的時(shí)候,會(huì)首先查看全局應(yīng)用程序集緩存,如果有就可以直接使用,沒有再到應(yīng)用程序目錄進(jìn)行查找。
23.闡述面向接口、面向?qū)ο蟆⒚嫦蚍矫婢幊痰膮^(qū)別?
答:面向接口更關(guān)注的是概念,它的原則是先定義好行為規(guī)范,再根據(jù)行為規(guī)范創(chuàng)建實(shí)現(xiàn),嚴(yán)格的來說,面向接口應(yīng)該是面向?qū)ο笾械囊徊糠职?#xff0c;因?yàn)槊嫦驅(qū)ο笠矎?qiáng)調(diào)的是本末倒置原則,也就是實(shí)現(xiàn)依賴于抽象,而抽象不依賴于具體實(shí)現(xiàn),更具比較的應(yīng)該是面向接口與面向抽象對(duì)象,我的體會(huì)是面向接口更加靈活,但實(shí)現(xiàn)時(shí)候,稍微有些代碼冗余,而面向抽象可以結(jié)合面向接口,先定義接口,再定義抽象類,在抽象類中處理一些公共邏輯,再實(shí)現(xiàn)具體實(shí)現(xiàn)類。面向?qū)ο笫菍?duì)復(fù)雜問題的分解。面向方面的編程是一種新概念,它解決了很多面向?qū)ο鬅o法解決的問題,比如面向?qū)ο蠹夹g(shù)只能對(duì)業(yè)務(wù)相關(guān)的代碼模塊化,而無法對(duì)和業(yè)務(wù)無關(guān)的代碼模塊化。而面向方面正是解決這一問題的方案,它的關(guān)鍵思想是"將應(yīng)用程序中的商業(yè)邏輯與對(duì)其提供支持的通用服務(wù)進(jìn)行分離"。?
24.簡述用repeater實(shí)現(xiàn)手工分頁的思路。
?
25.web?service?數(shù)據(jù)傳輸有什么限制??為什么?DataTable可以作為web?service參數(shù)傳遞么?
答:所傳輸?shù)臄?shù)據(jù)必須是可序列化的。因?yàn)樾枰D(zhuǎn)換為XML格式以可以穿越防火墻,做到真正的數(shù)據(jù)共享。因?yàn)镈ataSet處理DataTable的序列化以便進(jìn)行封送處理,所以無法傳遞單個(gè)DataTable
26.常用的調(diào)用WebService的方法有哪些?
答:在同一個(gè)解決方案中調(diào)用WebService方法;? 在不同的解決方案中調(diào)用WebService方法;? 在Internet上調(diào)用WebService方法;? 利用webservice.htc調(diào)用WebService方法。
?
?
28.在C#中,string?str?=?null?與?string?str?=?“”?請(qǐng)盡量使用文字或圖象說明其中的區(qū)別。
答:string?str?=?null?是不給他分配內(nèi)存空間,而string?str?=?""?給它分配長度為空字符串的內(nèi)存空間.
?
?
30.請(qǐng)?jiān)斒鲈赿otnet中類(class)與結(jié)構(gòu)(struct)的異同:? 答:Class可以被實(shí)例化,屬于引用類型,是分配在內(nèi)存的堆上的,Struct屬于值類型,是分配在內(nèi)存的棧上的.
?
31.?如何理解委托?
答:據(jù)說相當(dāng)于函數(shù)指針,定義了委托就可以在不調(diào)用原方法名稱的情況下調(diào)用那個(gè)方法.
msdn2005中是這樣解釋的:
委托具有以下特點(diǎn):
委托類似于?C++?函數(shù)指針,但它是類型安全的。
委托允許將方法作為參數(shù)進(jìn)行傳遞。
委托可用于定義回調(diào)方法。
委托可以鏈接在一起;例如,可以對(duì)一個(gè)事件調(diào)用多個(gè)方法。
方法不需要與委托簽名精確匹配。有關(guān)更多信息,請(qǐng)參見協(xié)變和逆變。
C#?2.0?版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨(dú)定義的方法。
?
?
33.?override與重載的區(qū)別
override?與重載的區(qū)別。重載是方法的名稱相同。參數(shù)或參數(shù)類型不同,進(jìn)行多次重載以適應(yīng)不同的需要
Override?是進(jìn)行基類中函數(shù)的重寫。為了適應(yīng)需要。
?
34.?abstract?class和interface有什么區(qū)別?
答:聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract?class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract?類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract?類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(gè)有程序體。接口只可以定義static?final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof?運(yùn)算符可以用來決定某對(duì)象的類是否實(shí)現(xiàn)了接口。
?
35.?Session有什么重大BUG,微軟提出了什么方法加以解決?
答:是iis中由于有進(jìn)程回收機(jī)制,系統(tǒng)繁忙的話Session會(huì)丟失,可以用Sate?server或SQL?Server數(shù)據(jù)庫的方式存儲(chǔ)Session不過這種方式比較慢,而且無法捕獲Session的END事件。
?
36.?成員變量和成員函數(shù)前加static的作用?
答:它們被稱為常成員變量和常成員函數(shù),又稱為類成員變量和類成員函數(shù)。分別用來反映類的狀態(tài)。比如類成員變量可以用來統(tǒng)計(jì)類實(shí)例的數(shù)量,類成員函數(shù)負(fù)責(zé)這種統(tǒng)計(jì)的動(dòng)作。
?
37.簡述三層架構(gòu)的利弊。
?
38.簡述AJAX控件timer的實(shí)現(xiàn)原理。
?
39.簡述ASP.NET中用戶控件和自定義控件的區(qū)別.
?
40.簡述framework在.NET中的作用.
?
41.簡述C#中引入泛型的好處。
?
42.談?wù)刟rraylist和list<>利弊.
?
43.怎樣實(shí)現(xiàn)用JS調(diào)用服務(wù)器端定義的方法。
?
44.簡述ADO.NET中幾大對(duì)象的作用.
?
45.相對(duì)與其它WEB開發(fā)平臺(tái),微軟的.net平臺(tái)有什么獨(dú)特的優(yōu)勢(shì)和劣勢(shì)。
?
46.談?wù)凷chema和DTD相比,具有那些顯著的優(yōu)勢(shì)。
?
47.?什么叫應(yīng)用程序域?什么是受管制的代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分別作何解釋?
?答:?(1)?應(yīng)用程序域(通常為?AppDomain)是一個(gè)用于隔離應(yīng)用程序的虛擬進(jìn)程。
?????(2)?受管制的代碼:Managed?Code,官方翻譯是“托管代碼”,即在?.net中,由公共語言運(yùn)行環(huán)境進(jìn)行管理的代碼,它主要負(fù)責(zé)內(nèi)存管理。
?????(3)強(qiáng)類型系統(tǒng):是對(duì)系統(tǒng)的類型進(jìn)行細(xì)化定義,純粹是概念問題,不做深入研究的話,看書理解一下就行。
?????(4)裝箱和拆箱:值類型轉(zhuǎn)化引用類型為裝箱,引用類型轉(zhuǎn)化為值類型為拆箱。
?????(5)CTS:通用語言系統(tǒng)。CLS:通用語言規(guī)范。CLR:公共語言運(yùn)行庫。
?
48.強(qiáng)類型與弱類型的區(qū)別?
??(1)答:完全的面向?qū)ο笠髮?duì)象是強(qiáng)類型的。強(qiáng)類型是只在對(duì)象類型的定義盡量的細(xì)化。我們可以定義所有的對(duì)象都是object,然后允許后期綁定來對(duì)對(duì)象進(jìn)行操作。事實(shí)上,有些語言是弱類型的,特別是一些教本語言,比如javascript.弱類型語言對(duì)簡化了語言本身,因而語言本事是可以輕量的,在一些特殊的場合還是很有用的。
??(2)但弱類型與強(qiáng)類型語言相比,它們能完成的功能從本質(zhì)上來說,是沒有區(qū)別的。但弱類型的輕量化是以犧牲開發(fā)的方便性和效率為基礎(chǔ)的。它將一部分機(jī)器能完成的事情移到程序員來完成。如果開發(fā)同樣一個(gè)功能,如果用javascript?和強(qiáng)類型的vb.net來開發(fā),兩者對(duì)程序員的要求與開發(fā)所需要的時(shí)間是明顯不同的。
?
49.請(qǐng)?jiān)斒鲈赾#中類(class)與結(jié)構(gòu)(struct)的異同?
答:Class可以被實(shí)例化,屬于引用類型,是分配在內(nèi)存的堆上的,Struct屬于值類型,是分配在內(nèi)存的棧上的.?Class可以被繼承,struct不可以等等
?
50.?GC是什么??為什么要有GC??
答:GC是垃圾收集器。程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:?
?System.gc()?
?Runtime.getRuntime().gc()
?
51.String?s?=?new?String("xyz");創(chuàng)建了幾個(gè)String?Object??
答:兩個(gè)對(duì)象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對(duì)象s。
?
52.abstract?class和interface有什么區(qū)別??
答:聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract?class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract?類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract?類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(gè)有程序體。接口只可以定義static?final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof?運(yùn)算符可以用來決定某對(duì)象的類是否實(shí)現(xiàn)了接口。
?
53.啟動(dòng)一個(gè)線程是用run()還是start()??
答:啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個(gè)線程。
?
54.接口是否可繼承接口??抽象類是否可實(shí)現(xiàn)(implements)接口??抽象類是否可繼承實(shí)體類(concrete?class)??
答:接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。
?
55.構(gòu)造器Constructor是否可被override??
答:構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
?
56.是否可以繼承String類??
答:String類是final類故不可以繼承。
?
57.?try?{}里有一個(gè)return語句,那么緊跟在這個(gè)try后的finally?{}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后??
答:會(huì)執(zhí)行,在return前執(zhí)行。
?
58.兩個(gè)對(duì)象值相同(x.equals(y)?==?true),但卻可有不同的hash?code,這句話對(duì)不對(duì)??
答:不對(duì),有相同的hash?code。
?
59.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上??
答:可以
?
60.當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法??
答:不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問。
?
61.abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized??
答:都不能。
?
62.List,?Set,?Map是否繼承自Collection接口??
答:List,Set是Map不是
?
63.?Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢??是用==還是equals()??它們有何區(qū)別??
答:Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。
equals()和==方法決定引用值是否指向同一對(duì)象equals()在類中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類型相配的話,返回真值
?
64.?數(shù)組有沒有l(wèi)ength()這個(gè)方法??String有沒有l(wèi)ength()這個(gè)方法?
答:沒有這個(gè)方法但是有l(wèi)ength這個(gè)屬性。
?
65.?sleep()?和?wait()?有什么區(qū)別??
答:sleep()方法是使線程停止一段時(shí)間的方法。在sleep?時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒有被調(diào)度為放棄執(zhí)行,除非(a)“醒來”的線程具有更高的優(yōu)先級(jí)
(b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?/p>
wait()是線程交互時(shí),如果線程對(duì)一個(gè)同步對(duì)象x?發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。
?
66.?short?s1?=?1;?s1?=?s1?+?1;有什么錯(cuò)??short?s1?=?1;?s1?+=?1;有什么錯(cuò)??
答:short?s1?=?1;?s1?=?s1?+?1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1?=(short)(s1?+?1)?。short?s1?=?1;?s1?+=?1正確。
?
67.談?wù)刦inal,?finally,?finalize的區(qū)別。
答:
final—修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此?????一個(gè)類不能既被聲明為?abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥?????不被改變。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為?????final的方法也同樣只能使用,不能重載
finally—再異常處理時(shí)提供?finally?塊來執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的?catch?子句就會(huì)?????執(zhí)行,然后控制就會(huì)進(jìn)入?finally?塊(如果有的話)。
finalize—方法名。Java?技術(shù)允許使用?finalize()?方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理?????工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在?Object?類中定義的?????,因此所有的類都繼承了它。子類覆蓋?finalize()?方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()??????方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。
?
68.?如何處理幾十萬條并發(fā)數(shù)據(jù)?
答:用存儲(chǔ)過程或事務(wù)。取得最大標(biāo)識(shí)的時(shí)候同時(shí)更新..注意主鍵不是自增量方式這種方法并發(fā)的時(shí)候是不會(huì)有重復(fù)主鍵的..取得最大標(biāo)識(shí)要有一個(gè)存儲(chǔ)過程來獲取.
?
69.Session有什么重大BUG,微軟提出了什么方法加以解決?
答:是iis中由于有進(jìn)程回收機(jī)制,系統(tǒng)繁忙的話Session會(huì)丟失,可以用Sate???server或SQL???Server數(shù)據(jù)庫的方式存儲(chǔ)Session不過這種方式比較慢,而且無法捕獲Session的END事件。
?
70.進(jìn)程和線程的區(qū)別?
答:進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的單位;線程是CPU調(diào)度和分派的單位,一個(gè)進(jìn)程可以有多個(gè)線程,這些線程共享這個(gè)進(jìn)程的資源。
?
71.堆和棧的區(qū)別?
答:?棧:由編譯器自動(dòng)分配、釋放。在函數(shù)體中定義的變量通常在棧上。
????堆:一般由程序員分配釋放。用new、malloc等分配內(nèi)存函數(shù)分配得到的就是在堆上。
?
72.?成員變量和成員函數(shù)前加static的作用?
答:它們被稱為常成員變量和常成員函數(shù),又稱為類成員變量和類成員函數(shù)。分別用來反映類的狀態(tài)。比如類成員變量可以用來統(tǒng)計(jì)類實(shí)例的數(shù)量,類成員函數(shù)負(fù)責(zé)這種統(tǒng)計(jì)的動(dòng)作。
?
73.?請(qǐng)指出GAC的含義?
答:全局程序集緩存。
?
74.在c#中using和new這兩個(gè)關(guān)鍵字有什么意義,請(qǐng)寫出你所知道的意義?using?指令和語句?new?創(chuàng)建實(shí)例?new?隱藏基類中方法。
答:using?引入名稱空間或者使用非托管資源
new?新建實(shí)例或者隱藏父類方法
?
75.什么是虛函數(shù)?什么是抽象函數(shù)?
答:虛函數(shù):沒有實(shí)現(xiàn)的,可由子類繼承并重寫的函數(shù)。抽象函數(shù):規(guī)定其非虛子類必須實(shí)現(xiàn)的函數(shù),必須被重寫。
?
76.?C#中?property?與?attribute的區(qū)別,他們各有什么用處,這種機(jī)制的好處在哪里?
答:一個(gè)是屬性,用于存取類的字段,一個(gè)是特性,用來標(biāo)識(shí)類,方法等的附加性質(zhì)
?
77.?c#中的三元運(yùn)算符是?
答:?:
?
78.當(dāng)整數(shù)a賦值給一個(gè)object對(duì)象時(shí),整數(shù)a將會(huì)被?
答:裝箱。
?
79.類成員有_____種可訪問形式?
答:this.類成員;
????new?Class()類成員
?
80.?public?static?const?int?A=1;這段代碼有錯(cuò)誤么?是什么?
答:const不能用static修飾。
?
81.float?f=-123.567F;?int?i=(int)f;i的值現(xiàn)在是_____??
答:-123。
?
82.委托聲明的關(guān)鍵字是______??
答:delegate.
?
83.用sealed修飾的類有什么特點(diǎn)?
答:密封,不能繼承。
?
84.如何在C#中實(shí)現(xiàn)繼承?
在類名后加上一個(gè)冒號(hào),再加上基類的名稱。
?
85.一個(gè)進(jìn)程可以訪問的Windows地址空間有多大?等于系統(tǒng)的虛擬內(nèi)存大小么?這兩方面將對(duì)系統(tǒng)的設(shè)計(jì)產(chǎn)生什么樣的影響?
答:4G,虛擬內(nèi)存大小是看你物理內(nèi)存大小來定的啊,實(shí)際進(jìn)程在windows上默認(rèn)是可以訪問2G內(nèi)存,通過一個(gè)/3g?boot參數(shù),可以用到3G
?
86.下面這個(gè)命令是做什么的?gacutil?/l?|?find?/i?“system”
答:全局緩存工具,gacutil?/l列出全局程序集緩存的內(nèi)容。/i?“system”將程序集安裝到全局程序集緩存中。
?
87.列舉ADO.net中的五個(gè)主要對(duì)象
答.Connection,Command,DataAdapter,DataSet,DataTable,DataView等
?
88.從數(shù)據(jù)庫讀取記錄,你可能用到的方法有:
答:?ExecuteScalar()
?????Fill()
?????ExecuteReader()
?
89.?概述反射和序列化
答:反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對(duì)象。您可以使用反射動(dòng)態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對(duì)象,或從現(xiàn)有對(duì)象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性?
序列化:序列化是將對(duì)象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個(gè)對(duì)象,然后使用?HTTP?通過?Internet?在客戶端和服務(wù)器之間傳輸該對(duì)象。在另一端,反序列化將從該流重新構(gòu)造對(duì)象。
?
90.概述o/r?mapping?的原理?
答:利用反射,配置?將類于數(shù)據(jù)庫表映射??
?
91.用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層?
答:a)??一般為3層
????b)??數(shù)據(jù)訪問層,業(yè)務(wù)層,表示層。
????c)??數(shù)據(jù)訪問層對(duì)數(shù)據(jù)庫進(jìn)行增刪查改。
????d)??業(yè)務(wù)層一般分為二層,業(yè)務(wù)表觀層實(shí)現(xiàn)與表示層的溝通,業(yè)務(wù)規(guī)則層實(shí)現(xiàn)用戶密碼的安全等。
????e)??表示層為了與用戶交互例如用戶添加表單。
????f)??優(yōu)點(diǎn):分工明確,條理清晰,易于調(diào)試,而且具有可擴(kuò)展性。
????g)??缺點(diǎn):增加成本。?
?
92.?Session有什么重大BUG,有什么方法加以解決?
答:是iis中由于有進(jìn)程回收機(jī)制,系統(tǒng)繁忙的話Session會(huì)丟失,可以用Sate?server或SQL?Server數(shù)據(jù)庫的方式存儲(chǔ)Session不過這種方式比較慢,而且無法捕獲Session的END事件。??
?
93.每次我們請(qǐng)求一個(gè)asp.net頁面時(shí),我們都經(jīng)歷著同樣的過程,我們稱它為asp.net頁面生命周期!每個(gè)頁面的生命周期為用戶的每一次訪問,也就是說每一次客戶端與服務(wù)器之間的一個(gè)往返過程.請(qǐng)你說一說這個(gè)過程它們都發(fā)生了那些事件?
答:(1).?Page_Init();
(2).?Load?ViewState?and?Postback?data;
(3).?Page_Load();
(4).?Handle?control?events;
(5).?Page_PreRender();
(6).?Page_Render();
(7).?Unload?event;
(8).?Dispose?method?called;
?
94.??什么是ASP.net中的用戶控件?(用戶控件和自定義控件有什么區(qū)別?)
答:主要是分清這兩個(gè)區(qū)別,
(一).用戶控件和自定義控件概述??
???????用戶控件(UserControl):??擴(kuò)展名為*.ascx,跟*.aspx在結(jié)構(gòu)上相似,是指頁面中??
加載的功能塊,只是用戶控件不能單獨(dú)作為頁面運(yùn)行,必須嵌入到*.aspx頁面或其它用??
戶控件中使用.??
???????自定義控件,跟HtmlControl或WebControl相似,編譯后可以添加引用到工具欄里??
面,直接用鼠標(biāo)拖動(dòng)使用.??
?
95..net中讀寫數(shù)據(jù)庫需要用到那些類?他們的作用?
答:DataSet:數(shù)據(jù)存儲(chǔ)器。
?????????DataCommand:執(zhí)行語句命令。
?????????DataAdapter:數(shù)據(jù)的集合,用語填充。
?
96.ASP.net的身份驗(yàn)證方式有哪些?分別是什么原理?
答:(1)Windows?身份驗(yàn)證提供程序
提供有關(guān)如何將?Windows?身份驗(yàn)證與?Microsoft?Internet?信息服務(wù)?(IIS)?身份驗(yàn)證結(jié)合使用來確保?ASP.NET?應(yīng)用程序安全的信息。
????(2)Forms?身份驗(yàn)證提供程序?
提供有關(guān)如何使用您自己的代碼創(chuàng)建應(yīng)用程序特定的登錄窗體并執(zhí)行身份驗(yàn)證的信息。使用?Forms?身份驗(yàn)證的一種簡便方法是使用?ASP.NET?成員資格和?ASP.NET?登錄控件,它們一起提供了一種只需少量或無需代碼就可以收集、驗(yàn)證和管理用戶憑據(jù)的方法。
????(3)Passport?身份驗(yàn)證提供程序?
提供有關(guān)由?Microsoft?提供的集中身份驗(yàn)證服務(wù)的信息,該服務(wù)為成員站點(diǎn)提供單一登錄和核心配置
?
97.在.net中,配件的意思是?
答:程序集。(中間語言,源數(shù)據(jù),資源,裝配清單)
?
98.?常用的調(diào)用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
????2.使用VS.NET中的Add?Web?Reference菜單選項(xiàng)
?
99.?net?Remoting?的工作原理是什么?
答:服務(wù)器端向客戶端發(fā)送一個(gè)進(jìn)程編號(hào),一個(gè)程序域編號(hào),以確定對(duì)象的位置。
?
100.簡要談一下您對(duì)微軟.NET?構(gòu)架下remoting和webservice兩項(xiàng)技術(shù)的理解以及實(shí)際中的應(yīng)用。
答:WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進(jìn)制傳送提高效率。
?
101.公司要求開發(fā)一個(gè)繼承System.Windows.Forms.ListView類的組件,要求達(dá)到以下的特殊功能:點(diǎn)擊ListView各列列頭時(shí),能按照點(diǎn)擊列的每行值進(jìn)行重排視圖中的所有行?(排序的方式如DataGrid相似)。根據(jù)您的知識(shí),請(qǐng)簡要談一下您的思路
答:根據(jù)點(diǎn)擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中。
?
?
102.?ASP。NET與ASP相比,主要有哪些進(jìn)步?
答:asp解釋形,aspx編譯型,性能提高,有利于保護(hù)源碼。
?
103.向服務(wù)器發(fā)送請(qǐng)求有幾種方式?
答:get,post
?
104.?.DataReader與Dataset有什么區(qū)別?
答:一個(gè)是只能向前的只讀游標(biāo),一個(gè)是內(nèi)存中的表。
?
105.?什么叫做SQL注入,如何防止?請(qǐng)舉例說明。
答:利用sql關(guān)鍵字對(duì)網(wǎng)站進(jìn)行攻擊。過濾關(guān)鍵字'等
?
106.?什么是反射?
答:動(dòng)態(tài)獲取程序集信息
?
107.?Singleton如何寫設(shè)計(jì)模式
答:static屬性里面new?,構(gòu)造函數(shù)private
?
108.什么是Application?Pool?
答:Web應(yīng)用,類似Thread?Pool,提高并發(fā)性能。
?
109.什么是XML?
答:XML即可擴(kuò)展標(biāo)記語言。eXtensible?Markup?Language.標(biāo)記是指計(jì)算機(jī)所能理解的信息符號(hào),通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章等。如何定義這些標(biāo)記,即可以選擇國際通用的標(biāo)記語言,比如HTML,也可以使用象XML這樣由相關(guān)人士自由決定的標(biāo)記語言,這就是語言的可擴(kuò)展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
?
110.??XML?與?HTML?的主要區(qū)別
答:1.?XML是區(qū)分大小寫字母的,HTML不區(qū)分。?
????2.?在HTML中,如果上下文清楚地顯示出段落或者列表鍵在何處結(jié)尾,那么你可以省略</p>或者</li>之類的結(jié)束???????標(biāo)記。在XML中,絕對(duì)不能省略掉結(jié)束標(biāo)記。?
????3.?在XML中,擁有單個(gè)標(biāo)記而沒有匹配的結(jié)束標(biāo)記的元素必須用一個(gè)?/?字符作為結(jié)尾。這樣分析器就知道不用???????查找結(jié)束標(biāo)記了。?
????4.?在XML中,屬性值必須分裝在引號(hào)中。在HTML中,引號(hào)是可用可不用的。?
????5.?在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應(yīng)的值。
?
111?.net的錯(cuò)誤處理機(jī)制是什么?
答:.net錯(cuò)誤處理機(jī)制采用try->catch->finally結(jié)構(gòu),發(fā)生錯(cuò)誤時(shí),層層上拋,直到找到匹配的Catch為止。
?
112.C#中的表單界面上,有一個(gè)DataGrid控件,如何將SQL數(shù)據(jù)庫里的一個(gè)表中的數(shù)據(jù)顯示在這個(gè)控件上,請(qǐng)描述一下操作方法及步驟:
答:(1)?根據(jù)連接字符串,創(chuàng)建數(shù)據(jù)庫連接對(duì)象,并根據(jù)連接對(duì)象創(chuàng)建?Command對(duì)象。
????(2)?根據(jù)SQL語句,查詢表信息。
????(3)?使用DataApapter對(duì)象,將查詢結(jié)果填充到DataSet中的objDataset數(shù)據(jù)表里。
????(4)?將DataGrid的數(shù)據(jù)源設(shè)置成objDataset數(shù)據(jù)表,實(shí)現(xiàn)數(shù)據(jù)綁定。
?
113.?在C#中,有幾種連接到數(shù)據(jù)庫的方式,請(qǐng)列舉出并分別說明它們可以連接哪些數(shù)據(jù)庫
(1)Sql.Net?Framework?連接sql?server7.0或以上更高版本數(shù)據(jù)庫。
(2)Oledb.Net?Framework連接Access和sql?server6.5或以下版本數(shù)據(jù)庫。
(3)Odbc.Net?Frameworka(橋連)可以連接sql?server數(shù)據(jù)庫和odbc公開數(shù)據(jù)源。
(4)Oracle.Net?Framework連接Oracle數(shù)據(jù)庫。
?
114.請(qǐng)描述一下在ASP.NET中,Application對(duì)象、Session對(duì)象、Cookies對(duì)象的用法及不同之處,及它們與傳統(tǒng)的ASP有沒有不同之處?
答:Application對(duì)象是作用于整個(gè)程序運(yùn)行期的狀態(tài)對(duì)象。?
????Session對(duì)象是會(huì)話期狀態(tài)保持對(duì)象,用于跟蹤單一用戶的會(huì)話。?
????Cookies對(duì)象客戶端保持會(huì)話信息的一種方式。
?
115.?試簡單描述以下擴(kuò)展名程序或系統(tǒng)檔案的角色
答:?.ascx?,?.aspx?,?.dll?,?.vb?,?.xml,?css?,?js,?global.asax?,web.config
Ascx后綴表示用戶控件
Aspx后綴表示頁面
.dll表示類庫集
.vb是vb.Net的源文件
.xml表示是用可擴(kuò)展標(biāo)記語言編寫的文件
Css表示樣式表文件
Js表示javascript腳本文件
Global.asax文件在應(yīng)用程序的根目錄中,負(fù)責(zé)處理Application_Start,Application_End,Session_Start,Session_End事件
Web.Config文件存儲(chǔ)應(yīng)用程序的配置信息
?
116..net中讀寫XML的類都?xì)w屬于哪些命名空間??
答:System.Xml?
?
117.相對(duì)于.NET?1.1,.NET2.0為了避免過度的boxing/unboxing造成的系統(tǒng)開銷提供了哪些支持?
118.請(qǐng)談?wù)劽嫦驅(qū)ο蟮奶匦约澳銓?duì)面向?qū)ο蟮睦斫?#xff1f;
119.簡述Javascript中的$符號(hào)表示什么?
120.列舉ADO.NET中的五大主要對(duì)象及其作用?
121.簡述接口和抽象類的異同?你選擇使用接口和抽象類的依據(jù)是什么?
122.請(qǐng)列舉ADO.NET中讀取數(shù)據(jù)的方法及其工作原理?
123.?簡述?private、?protected、?public、?internal?修飾符的訪問權(quán)限。
124?.列舉ASP.NET?頁面之間傳遞值的幾種方式。
125.?C#中?property?與?attribute的區(qū)別,他們各有什么用處,這種機(jī)制的好處在哪里??
126.?講一講你理解的web?service,在dot?net?framework中,怎么很好的結(jié)合xml?(講概念就行了)
127.?C#,?Java?和?c++的特點(diǎn),有什么相同的地方,不同的地方,C#分別從c++和java中吸取了他們那些優(yōu)點(diǎn)?
128.?C#可否對(duì)內(nèi)存進(jìn)行直接的操作?
129.?用Visual?C++?6.0編寫的代碼(unmanaged?code),如何在CLR下和其他dot?net?component結(jié)合?
130.?以前作過的一些項(xiàng)目?介紹一下自己的編程經(jīng)驗(yàn)。(這是蒙混不過去的,基本一問就知道是真是假)
131:?維護(hù)數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么
132:ADO.NET相對(duì)于ADO等主要有什么改進(jìn)?
133:ASP.NET與ASP相比,主要有哪些進(jìn)步?
134:C#中的委托是什么?事件是不是一種委托?
135:描述一下C#中索引器的實(shí)現(xiàn)過程,是否只能根據(jù)數(shù)字進(jìn)行索引?
136:配置異常(Debug?|?Exceptions)??每個(gè)異常都可以配置。
137.健壯程序的處理?
????????1)?throw?對(duì)應(yīng)的異常,不能夠慎用Catch(Exception?e)?這種捕獲方法.
????????2)?異常轉(zhuǎn)義拋出,給用戶以合理的提示,不要拋出假異常.
????????3)?給出斷言Trace.Assert()?便于調(diào)試.
????????4)?在程序的最后一層,最好要處理一下異常,但是同時(shí)要記錄日志Log,既要保證用戶沒有中斷操作,又要給自己的改進(jìn)帶來依據(jù)(把異常的
????????????日志返回?到開發(fā)人員手中),如果有Reporting?Server?更好.
????????5)?總之,不要輕易吃掉異常,只能增加開發(fā)的成本
?
?138.類的修飾符
???????1)?internal?項(xiàng)目內(nèi)部用
??????2)?public????默認(rèn)情況
??????3)?abstract?抽象的,不可以實(shí)例化,只能夠繼承,可有抽象成員
??????4)?sealed?密封的,不能夠繼承,可以是公有的,也可以是內(nèi)部的.
?
?139.所有的接口成員都必須在支持該接口的類中執(zhí)行,如果不想使用給定的接口成員,可以提供一個(gè)"空"?的執(zhí)行方法(沒有函數(shù)代碼)
?
?140.基類必須是繼承列表中的第一項(xiàng).
?
?141.GetHashCode?用以對(duì)象的散列函數(shù),返回一個(gè)以壓縮形式標(biāo)識(shí)的對(duì)象的值.
?
?142.抽象類和接口的區(qū)分:
??????1)?派生類只能夠繼承一個(gè)抽象類,但可以使用任意多接口.
??????2)抽象類可有抽象成員(但必須在派生類中執(zhí)行,否則派生類本身必須是抽象的),接口成員必須在使用接口的類上執(zhí)行-沒有代碼體接口成員
?????????被定義為公有的,但是抽象類的成員也可以是私有的.接口不包括靜態(tài)成員,字段,變量.
??????3)抽象類主要用于對(duì)象系列的基類,共享某些主要特性,例如共同的目的和結(jié)構(gòu),接口主要是供類使用,這些類在基礎(chǔ)水平上有所不同,
?????????但仍然可以完成某些相同的任務(wù).
?143.成員復(fù)制簡單的對(duì)象可以通過System.Object?的MemberwiseClone()?方法完成,稱為淺度復(fù)制;因?yàn)樗麤]有考慮引用類型的成員.執(zhí)行一個(gè)接口
??????IConeable?必須執(zhí)行Clone()的方法,深度復(fù)制.
?144.virtual?方法可以重寫,abstract?方法必須重寫,extern?方法定義放在其他地方.如果使用了override,也可以使用sealed指定在派生類中不能對(duì)這個(gè)方法做出進(jìn)一步修改.
?
145.隱藏基類的實(shí)現(xiàn):空方法體;new?public?void?DoSomething()?
?
146.IEnumerable?實(shí)現(xiàn)了循環(huán)集合中項(xiàng)的功能.
?????ICollection?繼承IEnumerable?獲取集合中項(xiàng)的個(gè)數(shù),并把項(xiàng)復(fù)制到一個(gè)數(shù)組中.
?????IList?繼承IEnumerable?和?ICollection?提供集合項(xiàng)列表,并可以訪問這些項(xiàng)
?????IDictionray?繼承IEnumerable?和?ICollection類似于IList?,但提供了通過鍵碼值而不是索引訪問的項(xiàng)列表.
?????CollectionBase的接口有IList,ICollection,IEnumerable
?????Array
?
147.IDictionary?簡化的DictionaryBase,要遍歷內(nèi)容其Item?為:?DictionaryEntry結(jié)構(gòu)?
?
148.轉(zhuǎn)換運(yùn)算符中關(guān)鍵字:?implicit,explicit.
?
149.is?運(yùn)算符不檢查兩個(gè)類型是否相同,但可以檢查類型是否兼容,如果轉(zhuǎn)換成功,則返回true.
?
150.as?運(yùn)算符轉(zhuǎn)換要么成功,否則就返回null.
?
151.定制異常,處理自定義異常.
?
152.事件處理.
?
153.控件屬性設(shè)置,例如:設(shè)定 [Conditional("DEBUG")]?call?some?method?assigned?by?the?attribute??only?available?if?DEBUG?is?defined......
?
154.調(diào)用堆棧,斷點(diǎn),命令窗口,輸出,自動(dòng)窗口,局部變量,監(jiān)視
?????Immediate?模式:調(diào)試和計(jì)算表達(dá)式
?????Command?模式:發(fā)布命令
?????計(jì)算表達(dá)式:在表達(dá)式前加上問號(hào)
?????Command?-〉Immediate?輸入immed?不需要大于號(hào),否則輸入〉cmd?在Immediate?模式下臨時(shí)進(jìn)入Command?模式
????(執(zhí)行單條命令)輸入〉alias,更多命令查看MSDN
局部變量,察看斷點(diǎn)前后三行的值
?
155.描述下C#中的程序集?程序集是有哪兩部分組成?
答:程序集是自我描述的安裝單元,由一個(gè)或多個(gè)文件組成,一個(gè)程序集可以是一個(gè)包含元數(shù)據(jù)的DLL或EXE,也可以由多個(gè)文件組成,例如資源文件、元數(shù)據(jù)、DLL和EXE。程序集的安裝僅是復(fù)制所有的文件而已,使用xcopy命令即可完成安裝,有兩種類型:私有的和共有的。
?
156.請(qǐng)寫出?BOOL??flag?與“零值”比較的?if?語句?請(qǐng)寫出?char??p?與“零值”比較的?if?語句?
答:if(flag){};if(!flag)。
?
157.說出下面幾個(gè)函數(shù)的區(qū)別:? private?void?test(string?str){…}?:通過值傳送變量 private?void?test(ref?string?str){…}?:值參數(shù)通過引用傳遞給方法,必須先初始化str private?void?test(out?string?str){…}:str通過引用被傳送,從test中返回時(shí),保留該方法對(duì)其的改變
?
158.什么是強(qiáng)類型系統(tǒng)?
答:C#?是強(qiáng)類型語言;因此每個(gè)變量和對(duì)象都必須具有聲明類型
?
159.?值類型和引用類型的區(qū)別?
答:值類型直接存儲(chǔ)其值,引用類型存儲(chǔ)對(duì)值的引用。值類型存儲(chǔ)在堆棧中,而引用類型存儲(chǔ)在托管堆上。值類型包括:簡單類型、結(jié)構(gòu)類型、枚舉類型;引用類型包括:類、數(shù)組、接口、委托、字符串、數(shù)組。
?
160.?如何理解委托?
答:有點(diǎn)類似于指針,但他是類型安全的,通過對(duì)于方法特征和返回類型的聲明,封裝了具有相同特征和返回類型的方法。不關(guān)心該方法是什么類型的對(duì)象,甚至是靜態(tài)的還是實(shí)例的。委托可以連接在一起,可以對(duì)一個(gè)事件調(diào)用多個(gè)方法。
?
161.?事務(wù)是什么?
答:在許多大型、關(guān)鍵的應(yīng)用程序中,計(jì)算機(jī)每秒鐘都在執(zhí)行大量的任務(wù)。更為經(jīng)常的不是這些任務(wù)本身,而是將這些任務(wù)結(jié)合在一起完成一個(gè)業(yè)務(wù)要求,稱為事務(wù)。當(dāng)某一個(gè)任務(wù)失敗時(shí),就恢復(fù)到指定的恢復(fù)點(diǎn),這個(gè)叫回滾。
?
162.?解釋重載函數(shù)、虛擬函數(shù)的概念?
答:重載方法:是指使用相同的方法名,但指定不同的參數(shù)(個(gè)數(shù),類型)。
虛擬方法:在基類中對(duì)要實(shí)現(xiàn)多態(tài)性的方法加上virtual關(guān)鍵字,在派生類中的同名方法前面,加上override關(guān)鍵字修飾,并改寫該方法的代碼。
?
163.請(qǐng)簡述以下兩個(gè)for循環(huán)的優(yōu)缺點(diǎn)
| for?(i=0;?i<N;?i++) { if?(condition) DoSomething(); else DoOtherthing(); } | if?(condition) { for?(i=0;?i<N;?i++) DoSomething(); } else { for?(i=0;?i<N;?i++) DoOtherthing(); } |
?
答:其實(shí)這兩個(gè)for循環(huán)在不同的環(huán)境下不同。總的來說前面的代碼簡潔,但是多執(zhí)行了N-1次,效率底些,后面的效率高些,但是不夠簡潔。
?
164.描述怎樣區(qū)分ExcuteNonQuery?,ExcuteDataReader和ExcuteScalar方法?
答:ExcuteNonQuery返回受影響的行數(shù);ExcuteDataReader返回DataReader;ExcuteScalar返回查詢結(jié)果的第一行的一列的值,忽略其他行列。
?
165.?列出ADO。NET中讀寫數(shù)據(jù)庫的主要的幾個(gè)類?它們的作用?
答:Connection數(shù)據(jù)庫連接;Command執(zhí)行SQL語句或存儲(chǔ)過程;DataAdapter用于填充DataSet和更新數(shù)據(jù)庫的一組數(shù)據(jù)命令和數(shù)據(jù)庫連接,斷開模式;DataReader,讀取數(shù)據(jù)庫信息,是只讀向前的;DataSet數(shù)據(jù)在內(nèi)存中的緩存。
?
166.?什么是中間語言(IL)?它的作用?
答:代碼在執(zhí)行前都要被編譯為托管代碼,與CPU無關(guān)的指令集。?
????其作用:支持平臺(tái)無關(guān)性,還支持語言的互操作性。
?
167.觸發(fā)器可以強(qiáng)制限制,這些限制比用?CHECK?約束所定義的更復(fù)雜。與?CHECK?約束不同的是,觸發(fā)器可以引用其它表中的列。
?
168.在ASP.NET中頁面之間傳遞值的方式?(盡可能敘述)
答: session(viewstate)? ? 簡單,但易丟失
application???????? ? 全局
cookie?????????????????? 簡單,但可能不支持,可能被偽造
input?ttype="hidden"????? 簡單,可能被偽造
url參數(shù)?????????????????? 簡單,顯示于地址欄,長度有限
數(shù)據(jù)庫??????????????????? 穩(wěn)定,安全,但性能相對(duì)弱
?
169.分析類和結(jié)構(gòu)的異同?
答:類是引用類型,可以繼承類、接口和被繼承,有默認(rèn)的構(gòu)造函數(shù),有析構(gòu)函數(shù),可以使用abstract和sealed,有protected修飾符,必須使用new初始化。
結(jié)構(gòu)是值類型,只能繼承接口,不能被繼承,沒有默認(rèn)的構(gòu)造函數(shù),可以創(chuàng)建,沒有析構(gòu)函數(shù),不可以用abstract和sealed,沒有protected修飾符,可以不用new初始化。 如何選擇使用結(jié)構(gòu)還是類:? 1.堆棧的空間有限,對(duì)于大量的邏輯的對(duì)象,創(chuàng)建類要比創(chuàng)建結(jié)構(gòu)好一些? 2.結(jié)構(gòu)表示如點(diǎn)、矩形和顏色這樣的輕量對(duì)象,例如,如果聲明一個(gè)含有?1000?個(gè)點(diǎn)對(duì)象的數(shù)組,則將為引用每個(gè)對(duì)象分配附加的內(nèi)存。在此情況下,結(jié)構(gòu)的成本較低。? 3.在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),類是最好的選擇? 4.大多數(shù)情況下該類型只是一些數(shù)據(jù)時(shí),結(jié)構(gòu)是最佳的選擇
?
171.敘述ASP。NET中的equiredFieldValidator和RegularExpressionValitor驗(yàn)證控件及作用?
答:equiredFieldValidator是必須字段驗(yàn)證,RegularExpressionValitor是正則表達(dá)式驗(yàn)證。
?
172.敘述下Using?的用法?
答:1.?using指令。using?+?命名空間名字,這樣可以在程序中直接用命令空間中的類型,而不必指定類型的詳細(xì)命名空間。
2.using別名。using?+?別名?=?包括詳細(xì)命名空間信息的具體的類型。當(dāng)一個(gè)cs引用多個(gè)命名空間時(shí),而有相同的類型時(shí)可以這樣做。比如namespace1?和namespace2下面都有myClass類時(shí),可以u(píng)sing?class1?=?namespace1.myClass;using?class2?=?namespace2.myClass。
3.using語句,定義一個(gè)范圍,在范圍結(jié)束時(shí)處理對(duì)象。
?
173.C#中接口和類有什么異同?
答:接口包括屬性、方法、事件,是負(fù)責(zé)功能的聲明和定義的,功能的實(shí)現(xiàn)從繼承他的類中實(shí)現(xiàn)。類是實(shí)現(xiàn)具體功能的,可以繼承多個(gè)接口,但是只能繼承一個(gè)基類。
?
174.什么是裝箱和拆箱?
答:裝箱就是把值類型轉(zhuǎn)換成引用類型,拆箱是把引用類型轉(zhuǎn)換成值類型。
?
175.什么是WEBSERVICE??
答:web服務(wù),是利用SOAP(簡單對(duì)象訪問協(xié)議,Simple?Object?Access?Protocol)在HTTP上執(zhí)行遠(yuǎn)程方法調(diào)用的一種方法,也可以使用WSDL(Web?Service?Description?Language,Web服務(wù)描述語言)來完整的描述Web服務(wù),基于XML標(biāo)準(zhǔn)。
?
176.軟件開發(fā)過程一般有幾個(gè)階段??
答:分析,開發(fā),測試,維護(hù)
?
177.在ASP。NET中自定義控件是什么??
答:自定義控件,跟HtmlControl或WebControl相似,編譯后可以添加引用到工具欄里面,直接用鼠標(biāo)拖動(dòng)使用
?
178.ASP.NET的Application、Session、Cookie、ViewState和Cache等變量的區(qū)別是什么?
答:Application:能夠包含任意大小的信息,在整個(gè)應(yīng)用程序周期中有效,是面對(duì)所有應(yīng)用程序用戶的,保存于服務(wù)器端。?
a)?Session:能夠保存相對(duì)少量的、簡單的數(shù)據(jù),一般在用戶活動(dòng)時(shí)間加上一端Timeout設(shè)定時(shí)間中有效(通常是20分鐘Timeout),這是面向單個(gè)用戶的信息,保存于服務(wù)器端。?
b)?Cookie:保存少量的、簡單的數(shù)據(jù),一般不允許超過4KB,使用期限可以進(jìn)行靈活設(shè)定,面向單個(gè)用戶,保存于瀏覽器中(也就是客戶端)。?
c)?ViewState:保存少量的數(shù)據(jù),在一個(gè)Web頁面周期內(nèi)有效,面向單個(gè)用戶,保存于客戶端。?
d)?Cache:緩存,大小任意,可以靈活設(shè)定可用時(shí)間,一般針對(duì)所有用戶,保存于客戶端。?
???
179.解釋下在ASP.NET中Response的作用?
答:Response對(duì)象用于向客戶端瀏覽器發(fā)送數(shù)據(jù),用戶可以使用該對(duì)象將服務(wù)器的數(shù)據(jù)以HTML的格式發(fā)送到用戶端的瀏覽器,它與Request組成了一對(duì)接收、發(fā)送數(shù)據(jù)的對(duì)象,這也是實(shí)現(xiàn)動(dòng)態(tài)的基礎(chǔ)。
?
180.解釋下在ASP.NET中Request的作用?
答:Request對(duì)象的主要作用就是:在服務(wù)器端接受并得到從客戶端瀏覽器提交或上傳的信息。包括從HTML表格用POST方法或GET方法傳遞的參數(shù)、cookie和用戶認(rèn)證。
?
181.?C#中能夠使用指針嗎?如果不能使用說明理由,如果能使用說出使用方法?
答:可以使用。只能在標(biāo)記為unsafe關(guān)鍵字的地方使用,任何方法、類、結(jié)構(gòu)、成員都能標(biāo)記為unsafe,也可以把方法中的一個(gè)代碼塊標(biāo)記為unsafe,但要注意,不能把局部變量本身標(biāo)記為unsafe,除非在unsafe的方法或代碼塊中聲明。
?
182.什么是中間語言(IL)?它的作用?
答:代碼在執(zhí)行前都要被編譯為托管代碼,與CPU無關(guān)的指令集。?
????其作用:支持平臺(tái)無關(guān)性,還支持語言的互操作性。
?
183.什么是裝箱和拆箱?
答:值類型轉(zhuǎn)換成引用類型是裝箱,引用類型轉(zhuǎn)換成值類型是拆箱。
?
184.出ADO。NET中讀寫數(shù)據(jù)庫的主要的幾個(gè)類?它們的作用?
答:Connection數(shù)據(jù)庫連接;Command執(zhí)行SQL語句或存儲(chǔ)過程;DataAdapter用于填充DataSet和更新數(shù)據(jù)庫的一組數(shù)據(jù)命令和數(shù)據(jù)庫連接,斷開模式;DataReader,讀取數(shù)據(jù)庫信息,是只讀向前的;DataSet數(shù)據(jù)在內(nèi)存中的緩存。
?
185.C#中接口和類有什么異同?
答:類是引用類型,可以繼承類、接口和被繼承,有默認(rèn)的構(gòu)造函數(shù),有析構(gòu)函數(shù),可以使用abstract和sealed,有protected修飾符,必須使用new初始化。
結(jié)構(gòu)是值類型,只能繼承接口,不能被繼承,沒有默認(rèn)的構(gòu)造函數(shù),可以創(chuàng)建,沒有析構(gòu)函數(shù),不可以用abstract和sealed,沒有protected修飾符,可以不用new初始化。 如何選擇使用結(jié)構(gòu)還是類:? 1.堆棧的空間有限,對(duì)于大量的邏輯的對(duì)象,創(chuàng)建類要比創(chuàng)建結(jié)構(gòu)好一些? 2.結(jié)構(gòu)表示如點(diǎn)、矩形和顏色這樣的輕量對(duì)象,例如,如果聲明一個(gè)含有?1000?個(gè)點(diǎn)對(duì)象的數(shù)組,則將為引用每個(gè)對(duì)象分配附加的內(nèi)存。在此情況下,結(jié)構(gòu)的成本較低。? 3.在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),類是最好的選擇? 4.大多數(shù)情況下該類型只是一些數(shù)據(jù)時(shí),結(jié)構(gòu)是最佳的選擇
?
186.解釋ASP。NET中的code-behind?
答:代碼隱藏,顯示邏輯的代碼和處理邏輯的代碼分離
?
187.什么是ASP。NET中的用戶控件?
答:是asp.net代碼創(chuàng)建的控件,就像在標(biāo)準(zhǔn)的ASP.NET?Web頁面中創(chuàng)建控件一樣,可以在多個(gè)ASP.NET頁面中重用它們。
?
188.在C#中,string?str?=?null?與?string?str?=?“”?請(qǐng)盡量說明其中的區(qū)別。
答:string?str=null沒有分配空間,string?str=“”分配了空間
?
189.?什么是受管制代碼?
答:由公共語言運(yùn)行環(huán)境進(jìn)行管理的代碼,它主要負(fù)責(zé)內(nèi)存管理。在.net平臺(tái)上運(yùn)行的代碼都是受管制代碼
?
?????190.C#中常用的訪問形式?它們各自的作用域?
答:public?不受限制的訪問。
????private?只能在本類中訪問
????protected?本類和繼承他的類中訪問
????internel表示在同一個(gè)應(yīng)用程序(application)或類庫(library)中都能使用
191.CTS,CLS,CLR分別作何解釋?
答: CTS:公共類型系統(tǒng).主要是為了語言之間的進(jìn)行標(biāo)準(zhǔn)化處理.
CLS:公共語言規(guī)范.主要是確保代碼可以在任何語言中訪問的最小標(biāo)準(zhǔn)集體
CLR:公共語言運(yùn)行時(shí).主要是管理代碼..處理,加載代碼,以及所有服務(wù)的代碼
?
192.?ASP。NET和ASP的主要優(yōu)勢(shì)?
答:ASP.Net的優(yōu)勢(shì):?
ASP.Net擺脫了以前ASP使用腳本語言來編程的缺點(diǎn),理論上可以使用任何編程語言包括C++?,?VB?,?JS等等,當(dāng)然,最合適的編程語言還是MS為.Net?Frmaework專門推出的C(讀c?sharp),它可以看作是VC和Java的混合體吧,盡管MS自己講C#內(nèi)核中更多的象VC,但實(shí)際上我還是認(rèn)為它和Java更象一些吧。首先它是面向?qū)ο蟮木幊陶Z言,而不是一種腳本,所以它具有面向?qū)ο缶幊陶Z言的一切特性,比如封裝性、繼承性、多態(tài)性等等,這就解決了剛才談到的ASP的那些弱點(diǎn)。封裝性使得代碼邏輯清晰,易于管理,并且應(yīng)用到ASP.Net上就可以使業(yè)務(wù)邏輯和Html頁面分離,這樣無論頁面原型如何改變,業(yè)務(wù)邏輯代碼都不必做任何改動(dòng);繼承性和多態(tài)性使得代碼的可重用性大大提高,你可以通過繼承已有的對(duì)象最大限度保護(hù)你以前的投資。并且C#和C++、Java一樣提供了完善的調(diào)試/糾錯(cuò)體系。
?
?????193.?NET的錯(cuò)誤處理機(jī)制是什么?
答:try{可能要出錯(cuò)的代碼}
catch{撲捉到錯(cuò)誤后的處理}
finally{不論代碼是否出錯(cuò)都要執(zhí)行}
?
194.?解釋Page.IsPostBack屬性?
答:使用者第一次瀏覽這個(gè)網(wǎng)頁時(shí)Page.IsPostBack?會(huì)傳回False,不是第一次瀏覽這個(gè)網(wǎng)頁時(shí)就傳回True
?
195..net?framework包含哪幾種技術(shù)?
答:Application?Framework,Domain?Framework
?
196.解釋下C#中的方法的重載?
答:重載方法:是指使用相同的方法名,但指定不同的參數(shù)(個(gè)數(shù),類型)。
?
197.事務(wù)是什么?
答:在許多大型、關(guān)鍵的應(yīng)用程序中,計(jì)算機(jī)每秒鐘都在執(zhí)行大量的任務(wù)。更為經(jīng)常的不是這些任務(wù)本身,而是將這些任務(wù)結(jié)合在一起完成一個(gè)業(yè)務(wù)要求,稱為事務(wù)。當(dāng)某一個(gè)任務(wù)失敗時(shí),就恢復(fù)到指定的恢復(fù)點(diǎn),這個(gè)叫回滾。
?
198.描述下ASP。NET中使用DataReader對(duì)象?和DataSet對(duì)象的區(qū)別?
答:dataset是保存數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),斷開模式,而DataReader不承擔(dān)保存數(shù)據(jù)的責(zé)任,需要自己手動(dòng)關(guān)閉連接數(shù)據(jù)庫,它只負(fù)責(zé)從數(shù)據(jù)源讀取數(shù)據(jù)到本地而已,是只讀向前的,它不是數(shù)據(jù)結(jié)構(gòu),而是網(wǎng)絡(luò)通訊組件的高層封裝。
?
199.分析類和結(jié)構(gòu)的異同?
答:類是引用類型,可以繼承類、接口和被繼承,有默認(rèn)的構(gòu)造函數(shù),有析構(gòu)函數(shù),可以使用abstract和sealed,有protected修飾符,必須使用new初始化。
結(jié)構(gòu)是值類型,只能繼承接口,不能被繼承,沒有默認(rèn)的構(gòu)造函數(shù),可以創(chuàng)建,沒有析構(gòu)函數(shù),不可以用abstract和sealed,沒有protected修飾符,可以不用new初始化。
如何選擇使用結(jié)構(gòu)還是類:?
1.堆棧的空間有限,對(duì)于大量的邏輯的對(duì)象,創(chuàng)建類要比創(chuàng)建結(jié)構(gòu)好一些?
2.結(jié)構(gòu)表示如點(diǎn)、矩形和顏色這樣的輕量對(duì)象,例如,如果聲明一個(gè)含有?1000?個(gè)點(diǎn)對(duì)象的數(shù)組,則將為引用每個(gè)對(duì)象分配附加的內(nèi)存。在此情況下,結(jié)構(gòu)的成本較低。?
3.在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),類是最好的選擇?
4.大多數(shù)情況下該類型只是一些數(shù)據(jù)時(shí),結(jié)構(gòu)是最佳的選擇
?
200.解釋ADO。NET中的使用Connection?類的CLOSE()和DISPOSE()的區(qū)別?
答:close只是關(guān)閉,dispose是釋放資源。
?
201.敘述ADO。NET中的DataAdapte類的作用?
答:斷開模式連接數(shù)據(jù)庫,并且填充DataSet。
?
202.什么是WEBSERVICE??
答:web服務(wù),是利用SOAP(簡單對(duì)象訪問協(xié)議,Simple?Object?Access?Protocol)在HTTP上執(zhí)行遠(yuǎn)程方法調(diào)用的一種方法,也可以使用WSDL(Web?Service?Description?Language,Web服務(wù)描述語言)來完整的描述Web服務(wù),基于XML標(biāo)準(zhǔn)。
?
203.敘述ASP。NET中的幾種驗(yàn)證控件(equiredFieldValidato,?CompareValidator,?RangeValidator,?RegularExpressionValitor,?CustomValidator,?ValidationSummary)及作用?
答:
a)?RequiredFieldValidator(必須字段驗(yàn)證);
b)?CompareValidator(比較驗(yàn)證);
c)?RangeValidator?(范圍驗(yàn)證);
d)?RegularExpresionValidator(正則表達(dá)式);
e)?ValidationSummary(驗(yàn)證總結(jié));???
f)?CustomValidator(自定義驗(yàn)證)
?
??????204.?用sealed修飾的類有什么特點(diǎn)
sealed?修飾符用于防止從所修飾的類派生出其它類。如果一個(gè)密封類被指定為其他類的基類,則會(huì)發(fā)生編譯時(shí)錯(cuò)誤。密封類不能同時(shí)為抽象類。
sealed?修飾符主要用于防止非有意的派生,但是它還能促使某些運(yùn)行時(shí)優(yōu)化。具體說來,由于密封類永遠(yuǎn)不會(huì)有任何派生類,所以對(duì)密封類的實(shí)例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來處理。
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Shadowing/p/3422185.html
總結(jié)
以上是生活随笔為你收集整理的C#精华面试题及答案 三的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将数据库文件.mdf导入/恢复到SQ
- 下一篇: C#线程同步总结