.Net招聘筆試題大全_第1頁(yè)
.Net招聘筆試題大全_第2頁(yè)
.Net招聘筆試題大全_第3頁(yè)
.Net招聘筆試題大全_第4頁(yè)
.Net招聘筆試題大全_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.Net招聘筆試題大全

1、SQLSERVER服務(wù)器中,給定表tablel中有兩個(gè)字段ID、LastUpdateDate,ID表示更新的事

務(wù)號(hào),LastUpdateDate表示更新時(shí)的服務(wù)器時(shí)間,請(qǐng)使用一句SQL語句獲得最后更新的事務(wù)號(hào)。

(10)

答:SELECTID

FROMtablel

WHERELastUpdateDate=(SELECTMAX(LastUpdateDate)FROMtablel)

2、根據(jù)線程安全的相關(guān)知識(shí),分析以下代碼,當(dāng)調(diào)用test方法時(shí)i>10時(shí)是否會(huì)引起死鎖?并簡(jiǎn)

要說明理由。(10分)

publicvoidtest(inti)

(

lock(this)

(

if(i>10)

test(i);

1

1

}

答:不會(huì)發(fā)生死鎖,(但有一點(diǎn)int是按值傳遞的,所以每次改變的都只是一個(gè)副本,因此不會(huì)

出現(xiàn)死鎖。但如果把int換做一個(gè)object,那么死鎖會(huì)發(fā)生)

3、分析以下代碼。(10)

publicstaticvoidtest(stringConnectString)

System.Data.01eDb.01eDbConnectionconn=newSystem.Data.01eDb.01eDbConnection0;

conn.ConnectionString=ConnectString;

try

conn.Open();

}catch(ExceptionEx)

(

MessageBox.Show(Ex.ToStringO);

}finaIIy

(

if(!conn.State.EquaIs(ConnectionState.CIosed))

conn.CloseO;

)

請(qǐng)問

1)以上代碼可以正確使用連接池嗎?

答:回答:如果傳入的connectionstring是一模一樣的話,可以正確使用連接池。不過一模一

樣的意思是,連字符的空格數(shù),順序完全一致。

2)以上代碼所使用的異常處理方法,是否所有在test方法內(nèi)的異常都可以被捕捉并顯示出來?

答:只可以捕捉數(shù)據(jù)庫(kù)連接中的異常吧.(finally中,catch中,如果有別的可能引發(fā)異常的

操作,也應(yīng)該用try,catch。所以理論上并非所有異常都會(huì)被捕捉。)

8、簡(jiǎn)要談一下您對(duì)微軟.NET構(gòu)架下remoting和webservice兩項(xiàng)技術(shù)的理解以及實(shí)際中的應(yīng)用。

(10)

答:WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進(jìn)制傳送提高效率。

9、公司要求開發(fā)一個(gè)繼承System.Windows.Forms.ListView類的組件,要求達(dá)到以下的特殊功

能:點(diǎn)擊ListView各列列頭時(shí),能按照點(diǎn)擊列的每行值進(jìn)行重排視圖中的所有行(排序的方式

如DataGrid相似)。根據(jù)您的知識(shí),請(qǐng)簡(jiǎn)要談一下您的思路:(10)

答:根據(jù)點(diǎn)擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中

10、給定以下XML文件,完成算法流程圖。(10)

<FileSystem>

<DriverC>

<DirDirName二"MSD0S622”>

<FiIeFiIeName二"Command,com,,></File>

</Dir>

<FiIeFiIeName二"MSDOS.SYS"X/File>

<FiIeFileName=wIO.SYS"X/File>

</DriverC>

</FiIeSystem>

請(qǐng)畫出遍歷所有文件名(FileName)的流程圖(請(qǐng)使用遞歸算法)。

答:

voidFindFile(Directoryd)

{

FileOrFolders=d.GetFiIeOrFoIders();

foreach(FileOrFolderfofinFileOrFolders)

(

if(fofisFiIe)

YouFoundafiIe;

eIseif(fofisDirectory)

FindFile(fof);

)

簡(jiǎn)單的說就是從根節(jié)點(diǎn)開始遍歷找子節(jié)點(diǎn),在從找到的子節(jié)點(diǎn)找它的子節(jié)點(diǎn),一層層下去

1,String和StringBuiIder的區(qū)別?

2、類的static型構(gòu)造方法是干什么用的?

1、System.String類是一種傳統(tǒng)的修改字符串的方式,它確實(shí)可以完成把一個(gè)字符串添加到另一個(gè)字符串

上的工作沒錯(cuò)。但是在.NET框架下,這個(gè)操作實(shí)在是劃不來。因?yàn)橄到y(tǒng)先是把兩個(gè)字符串寫入內(nèi)存,接著

刪除原來的String對(duì)象,然后創(chuàng)建一個(gè)String對(duì)象,并讀取內(nèi)存中的數(shù)據(jù)賦給該對(duì)象。這一來二去的,

耗了不少時(shí)間。

而使用System.Text命名空間下面的StringBuiIder類就不是這樣了,它提供的Append方法,能夠在已有

對(duì)象的原地進(jìn)行字符串的修改,簡(jiǎn)單而且直接。如果想要編寫將連續(xù)操作依次連接起來的單個(gè)語句,這將

很方便,

如果要操作一個(gè)不斷增長(zhǎng)的字符串,請(qǐng)你不要再用String類了。為什么涕淌要這樣說呢?我們來看看兩個(gè)

類的工作原理。

String類是一種傳統(tǒng)的修改字符串的方式,它確實(shí)可以完成把一個(gè)字符串添加到另一個(gè)字符串上的工作沒

錯(cuò)“但是在.NET框架下,這個(gè)操作實(shí)在是劃不來。因?yàn)橄到y(tǒng)先是把兩個(gè)字符串寫入內(nèi)存,接著刪除原來的

String對(duì)象,然后創(chuàng)建一個(gè)String對(duì)象,并讀取內(nèi)存中的數(shù)據(jù)賦給該對(duì)象.這一來二去的,耗了不少時(shí)

間。

而使用System.Text命名空間下面的StringBuiIder類就不是這樣了,它提供的Append方法,能夠在已有

對(duì)象的原地進(jìn)行字符串的修改,簡(jiǎn)單而且直接。

當(dāng)然,一般情況下你是覺察不出這二者效率的差異的,但如果你要對(duì)某個(gè)字符串進(jìn)行大量的添加操作,那

么用StringBuiIder類所耗費(fèi)的時(shí)間和String類簡(jiǎn)直不是一個(gè)數(shù)量級(jí)的。下面是一個(gè)例子,你自己試一試:

ImportsSystem

ImportsSystem.Text

NamespaceStringBuiIderSampIe

ClasscIsStrBuiIder

SharedSubMain()

DimiAsInteger

DimstartTimeAsDateTime

DimstopTimeAsDateTime

‘用String類來連接字符串

ConsoIe.WriteLine("String類”)

DimstrAsString=String.Empty

startTime=DateTime.Now

Console.WriteLine((“開始時(shí)間:”&startTime.ToString()))

Fori=0To99999

str&=i.ToString()

Nexti

stopTime=DateTime.Now

Console.WriteLine((“結(jié)束時(shí)間:“&stopTime.ToString()))

‘用StringBuiIder類來連接字符串

ConsoIe.WriteLine("StringBuiIder類”)

DimbuiIderAsNewStringBuiIder()

startTime=DateTime.Now

Console.WriteLine((“開始時(shí)間:”&startTime.ToString()))

Fori=0To99999

buiIder.Append(i.ToString())

Nexti

stopTime二DateTime.Now

Console.WriteLine((“結(jié)束時(shí)間:”&stopTime.ToString()))

EndSub

EndClass

EndNamespace

2、靜態(tài)構(gòu)造函數(shù)用于初始化任何靜態(tài)數(shù)據(jù),或用于執(zhí)行僅需執(zhí)行一次的特定操作°在創(chuàng)建第一個(gè)實(shí)例或引

用任何靜態(tài)成員之前,將自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)

31.公司要求開發(fā)一^繼承System.Windows.Forms.ListView類的組件,要求達(dá)到以下的特殊功能:點(diǎn)擊

ListView各列列頭時(shí),能按照點(diǎn)擊列的每行值進(jìn)行重排視圖中的所有行(排序的方式如DataGrid相似)。

根據(jù)您的知識(shí),請(qǐng)簡(jiǎn)要談一下您的思路

答:根據(jù)點(diǎn)擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中

32.給定以下XML文件,完成算法流程圖。

<FiIeSystem>

<DriverC>

<DirDirName二”MSD0S622”>

<FiIeFiIeName="C”X/FiIe>

</Dir>

<FiIeFiIeName二"MSDOS.SYS"X/File>

<FiIeFileName="10.SYS"X/File>

</DriverC>

</FileSystem>

請(qǐng)畫出遍歷所有文件名(FileName)的流程圖(請(qǐng)使用遞歸算法)。

答:

voidFindFiIe(Directoryd)

(

FileOrFolders=d.GetFileOrFolders();

foreach(FileOrFolderfofinFileOrFolders)

(

if(fofisFiIe)

YouFoundafile;

eIseif(fofisDirectory)

FindFile(fof);

)

)

33.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動(dòng)增長(zhǎng)的ID作為主鍵,注意:ID

可能不是連續(xù)的.

答:解1:selecttop10*fromAwhereidnotin(selecttop30idfromA)

2:selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)

34.面向?qū)ο蟮恼Z言具有性、性、性

答:封裝、繼承、多態(tài)。

35.能用foreach遍歷訪問的對(duì)象需要實(shí)現(xiàn)接口或聲明方法的類型。

答:(Enumerable、GetEnumeratoro

36.GC是什么?為什么要有GC?

答:GC是垃圾收集器。程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理°要請(qǐng)求垃圾收集,可

以調(diào)用下面的方法之一:

System,gc()

Runtime.getRuntime0.gc0

38.abstractclass和interface有什么區(qū)別?

答:

聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstractclass),它用于要?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è)有程序體.接口只可以定義staticfinal成員變量。接口

的實(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)了接口。

39.啟動(dòng)一個(gè)線程是用run()還是start()?

答:?jiǎn)?dòng)一個(gè)線程是調(diào)用start。方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由

JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個(gè)線程。

40.接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承實(shí)體類

(concreteclass)?

答:接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承實(shí)體類,但前提是實(shí)體類

必須有明確的構(gòu)造函數(shù)。

41.構(gòu)造器Constructor是否可被override?

答:構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

42.是否可以繼承String類?

答:String類是final類故不可以繼承。

43.try。里有一個(gè)return語句,那么緊跟在這個(gè)try后的fina11y0里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)

候被執(zhí)行,在return前還是后?

答:會(huì)執(zhí)行,在return前執(zhí)行。

44.兩個(gè)對(duì)象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話對(duì)不對(duì)?

答:不對(duì),有相同的hashcode。

45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

答:switch(expri)中,expri是一個(gè)整數(shù)表達(dá)式。因此傳遞給switch和case語句的參數(shù)應(yīng)該

是int、short、char或者byte。long,string都不能作用于swtich。

47.當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問。

48.abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

答:都不能。

49.List,Set,Map是否繼承自Collection接口?

答:List,Set是Map不是

50.Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用=還是equals。?它們有何區(qū)別?

答:Set里的元素是不能重復(fù)的,那么用iterator。方法來區(qū)分重復(fù)與否。equaIs()是判讀兩個(gè)Set是否

相等。

equals。和二二方法決定引用值是否指向同一對(duì)象equals。在類中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容

和類型相配的話,返回真值。

51.數(shù)組有沒有l(wèi)ength。這個(gè)方法?String有沒有l(wèi)ength。這個(gè)方法?

答:數(shù)組沒有l(wèi)ength。這個(gè)方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個(gè)方法。

52.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í)間到。

53.shorts1=1;s1=s1+1;有什么錯(cuò)?shorts1=1;s1+=1;有什么錯(cuò)?

答:shortsi=1:s'!=s1+1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型??尚?/p>

改為s1=(short)(s1+1)oshorts1=1;s1+=1正確。

54.談?wù)刦inal,finally.finalize的區(qū)別。

答:

final一修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被

繼承。因此一個(gè)類不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,

可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(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í)行其他清理工作。finalizeO方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

55.如何處理幾十萬條并發(fā)數(shù)據(jù)?

答:用存儲(chǔ)過程或事務(wù)。取得最大標(biāo)識(shí)的時(shí)候同時(shí)更新..注意主鍵不是自增量方式這種方法并發(fā)的時(shí)候是

不會(huì)有重復(fù)主鍵的..取得最大標(biāo)識(shí)要有一個(gè)存儲(chǔ)過程來獲取.

56.Session有什么重大BUG,微軟提出了什么方法加以解決?

答:是iis中由于有進(jìn)程回收機(jī)制,系統(tǒng)繁忙的話Session會(huì)丟失,可以用Sateserver或SQLServer

數(shù)據(jù)庫(kù)的方式存儲(chǔ)Session不過這種方式比較慢,而且無法捕獲Session的END事件。

57.進(jìn)程和線程的區(qū)別?

答:進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的單位;線程是CPU調(diào)度和分派的單位,一個(gè)進(jìn)程可以有多個(gè)線程,

這些線程共享這個(gè)進(jìn)程的資源。

58.堆和棧的區(qū)別?

答:

棧:由編譯器自動(dòng)分配、釋放。在函數(shù)體中定義的變量通常在棧上。

堆:一般由程序員分配釋放°用new、malloc等分配內(nèi)存函數(shù)分配得到的就是在堆上。

59.成員變量和成員函數(shù)前加static的作用?

答:它們被稱為常成員變量和常成員函數(shù),又稱為類成員變量和類成員函數(shù)。分別用來反映類的狀態(tài)。比

如類成員變量可以用來統(tǒng)計(jì)類實(shí)例的數(shù)量,類成員函數(shù)負(fù)責(zé)這種統(tǒng)計(jì)的動(dòng)作。

60.ASP.NET與ASP相比,主要有哪些進(jìn)步?

答:asp解釋形,aspx編譯型,性能提高,有利于保護(hù)源碼。

61.產(chǎn)生一個(gè)int數(shù)組,長(zhǎng)度為100,并向其中隨機(jī)插入1700,并且不能重復(fù)。

int[]intArr=newint[100];

ArrayListmyList=newArrayList();

Randomrnd=newRandom();

while(myList.Count<100)

(

intnunFrnd.Next(1,101);

if(!myList.Contains(num))

myList.Add(num);

)

for(inti=0;i<100;i++)

intArr[i]=(int)myList[i];

這些是C#,ASP.NET,數(shù)據(jù)庫(kù)面試題,全部從網(wǎng)上收集而來,經(jīng)整理而發(fā)表,希望給大家?guī)韼?/p>

助,有錯(cuò)誤的地方還請(qǐng)各位高手指出,在下傾聽指教01.簡(jiǎn)

述private、protectedpublic、internal修飾符的訪問權(quán)限。

答.private:私有成員,在類的內(nèi)部才可以訪問。

protected:保護(hù)成員,該類內(nèi)部和繼承類中可以訪問。

public:公共成員,完全公開,沒有訪問限制。

internal:在同一命名空間內(nèi)可以訪問。

2.列舉ASP.NET頁(yè)面之間傳遞值的幾種方式。

答.1.使用QueryString,如?id=1;response.Redirect()

2.使用Session變量

3.使用Server.Transfer

3,一列數(shù)的規(guī)則如下:1、1、2、3、5、8、13、21、34求第30位數(shù)是多少,用遞歸算法實(shí)現(xiàn)。

答:publicclassMainClass

(

publicstaticvoidMain()

(

ConsoIe.WriteLine(Foo(30));

)

publicstaticintFoo(inti)

(

if(i<=0)

return0;

elseif(i>0&&i<=2)

return1;

elsereturnFoo(i-1)+Foo(i-2);

)

)

4.C#中的委托是什么?事件是不是一種委托?

答:

委托可以把一個(gè)方法作為參數(shù)代入另一個(gè)方法。

委托可以理解為指向一個(gè)函數(shù)的引用。

是,是一種特殊的委托

5.override與重載的區(qū)別

答:

override與重載的區(qū)別。重載是方法的名稱相同。參數(shù)或參數(shù)類型不同,進(jìn)行多次重載以適應(yīng)不同的需要

Override是進(jìn)行基類中函數(shù)的重寫。為了適應(yīng)需要。

6.如果在一個(gè)B/S結(jié)構(gòu)的系統(tǒng)中需要傳遞變量值,但是又不能使用Session、Cookie>Application,您有

幾種方法進(jìn)行處理?

答:

this.Server.Transfer

7.請(qǐng)編程遍歷頁(yè)面上所有TextBox控件并給它賦值為string.Empty?

答:

foreach(System.Windows.Forms.Controlcontrolinthis.Controls)

(

if(controlisSystem.Windows.Forms.TextBox)

(

System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;

tb.Text=String.Empty;

1

)

8.請(qǐng)編程實(shí)現(xiàn)一個(gè)冒泡排序算法?

答:

int口array=newint[*]

inttemp=0;

for(inti=0;i<array.Length-1;i++)

(

for(intj=i+1;j<array.Length;j++)

(

if(array[j]<array[i])

(

temp=array[i];

array[i]=array[j];

array[j]=temp;

)

)

)

9.描述一下C#中索引器的實(shí)現(xiàn)過程,是否只能根據(jù)數(shù)字進(jìn)行索引?

答:不是??梢杂萌我忸愋?。

10.求以下表達(dá)式的值,寫出您想到的一種或幾種實(shí)現(xiàn)方法:1-2+3-4+……+m

答:

intNum=this.TextBoxI.Text.ToString();

intSum=0;

for(inti=0;i<Num+1;i++)

(

if((i%2)==1)

I

Sum+=i;

)

eIse

Sum=Sum-I;

J

)

System.ConsoIe.WriteLine(Sum.ToString());

System.ConsoIe.ReadLine();

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ù)庫(kù)進(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.在下面的例子里

usingSystem;

classA

(

pubIicA()

(

PrintFieIds();

)

pubIicvirtuaIvoidPrintFieIds(){}

)

cIassB:A

(

intx=1;

inty;

pubIicB()

y=-1;

)

pubIicoverridevoidPrintFieldsO

(

Console.WriteLine("x=[0},y={1}z/,x,y);

J

當(dāng)使用newB()創(chuàng)建B的實(shí)例時(shí),產(chǎn)生什么輸出?

答:X=1,Y=0;x=1y=-1

13.什么叫應(yīng)用程序域?

答:應(yīng)用程序域可以理解為一種輕量級(jí)進(jìn)程。起到安全的作用。占用資源小。

14.CTS、CLS、CLR分別作何解釋?

答:CTS:通用語言系統(tǒng)。CLS:通用語言規(guī)范。CLR:公共語言運(yùn)行庫(kù)。

15.什么是裝箱和拆箱?

答:從值類型接口轉(zhuǎn)換到引用類型裝箱。從引用類型轉(zhuǎn)換到值類型拆箱。

16.什么是受管制的代碼?

答:unsafe:非托管代碼。不經(jīng)過CLR運(yùn)行。

17.什么是強(qiáng)類型系統(tǒng)?

答:RTTI:類型識(shí)別系統(tǒng)。

18.net中讀寫數(shù)據(jù)庫(kù)需要用到那些類?他們的作用?

答:DataSet:數(shù)據(jù)存儲(chǔ)器。

DataCommand:執(zhí)行語句命令。

DataAdapter:數(shù)據(jù)的集合,用語填充。

19.ASP.net的身份驗(yàn)證方式有哪些?分別是什么原理?

答:10。Windwos(默認(rèn))用IIS...From(窗體)用帳戶Passport(密鑰)

20.什么是Code-Behind技術(shù)?

答:代碼后植.

21.在.net中,配件的意思是?

答:程序集。(中間語言,源數(shù)據(jù),資源,裝配清單)

22.常用的調(diào)用WebService的方法有哪些?

答:1.使用WSDL.exe命令行工具。

2.使用VS.NET中的AddWebReference菜單選項(xiàng)

23..netRemoting的工作原理是什么?

答:服務(wù)器端向客戶端發(fā)送一個(gè)進(jìn)程編號(hào),一個(gè)程序域編號(hào),以確定對(duì)象的位置.

24.在C#中,stringstr=nulI與stringstr=請(qǐng)盡量使用文字或圖象說明其中的區(qū)別。

答:stringstr=null是不給他分配內(nèi)存空間,而stringstr="”給它分配長(zhǎng)度為空字符串的內(nèi)存空

間。

25.請(qǐng)?jiān)斒鲈赿otnet中類(class)與結(jié)構(gòu)(struct)的異同?

答:Class可以被實(shí)例化,屬于引用類型,是分配在內(nèi)存的堆上的,Struct屬于值類型,是分配在內(nèi)存的棧上

的.

26.根據(jù)委托(delegate)的知識(shí),請(qǐng)完成以下用戶控件中代碼片段的填寫:

namespacetest

(

pubIicdelegatevoidOnDBOperate();

pubIiccIassUserControlBase:System.Windows.Forms.UserControl

pubIiceventOnDBOperateOnNew;

privatevoidtooIBar_ButtonCIick(objectsender,System.Windows.Forms.TooIBarButtonCIickEventArgs

e)

(

if(e.Button.EquaIs(BtnNew))

(

//請(qǐng)?jiān)谝韵卵a(bǔ)齊代碼用來調(diào)用OnDBOperate委托簽名的OnNew事件。

}

)

)

答:if(OnNew!=null)

OnNew(this,e);

27.分析以下代碼,完成填空

stringstrTmp="abcdefg某某某“;

inti=System.Text.Encoding.Defau11.GetBytes(strTmp).Length;

intj=strTmp.Length;

以上代碼執(zhí)行完后,i=j=

答:i二13,產(chǎn)10

28.SQLSERVER服務(wù)器中,給定表tablel中有兩個(gè)字段ID、LastUpdateDate,ID表示更新的事務(wù)

號(hào),LastUpdateDate表示更新時(shí)的服務(wù)器時(shí)間,請(qǐng)使用一句SQL語句獲得最后更新的事務(wù)號(hào)

答:SelectIDFROMtablelWhereLastUpdateDate=(SeIectMAX(LastUpdateDate)FROMtablel)

29.根據(jù)線程安全的相關(guān)知識(shí),分析以下代碼,當(dāng)調(diào)用test方法時(shí)i>10時(shí)是否會(huì)引起死鎖?并簡(jiǎn)要說明理

publicvoidtest(inti)

Iock(this)

if(i>10)

test(i);

)

答:不會(huì)發(fā)生死鎖,(但有一點(diǎn)int是按值傳遞的,所以每次改變的都只是一個(gè)副本,因此不會(huì)出現(xiàn)死鎖。

但如果把int換做一個(gè)object,那么死鎖會(huì)發(fā)生)

30.簡(jiǎn)要談一下您對(duì)微軟.NET構(gòu)架下remoting和webservice兩項(xiàng)技術(shù)的理解以及實(shí)際中的應(yīng)用。

答:WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進(jìn)制傳送提高效率。

畫注冊(cè):登錄:發(fā)表文章

C#的四個(gè)基本技巧

2007-01-1610:46:01

大中小

1.如果可能盡量使用接口來編程

.NET框架包括類和接口,在編寫程序的時(shí)候,你可能知道正在用.NET的哪個(gè)類。然而,在這種情況

下如果你用.NET支持的接口而不是它的類來編程時(shí),代碼會(huì)變得更加穩(wěn)定、可用性會(huì)更高。請(qǐng)分析下面的

代碼:

privatevoidLoadList(object口items,ListBoxI)

for(inti=0;i<items.Length;i++)

I.Iterns.Add(iterns[i].ToString());

)

這個(gè)函數(shù)從一個(gè)可為任何對(duì)象的數(shù)組中加載UstBox,這段代碼被限定為只能使用數(shù)組。假想過些時(shí)

候你發(fā)現(xiàn)那些對(duì)象存在數(shù)據(jù)庫(kù)中,或別的集合中。那么你需要修改程序來使用不同的集合類型。如果你用

[Collection接口來寫那段程序,你就不用修改那段程序了,對(duì)于任何實(shí)現(xiàn)ICollection接口的類型它都

能很好的工作:

privatevoidLoadList(IColIectionitems,ListBoxI)

(

foreach(objectoiniterns)

I.Iterns.Add(o.ToString());

)

IColIection被數(shù)組和所有System.Collection中的集合實(shí)現(xiàn)。此外,多維數(shù)組也支持ICollection

接口。如果那還不夠的話,數(shù)據(jù)庫(kù).NET類同樣支持ICollection接口。用接口寫的這個(gè)函數(shù)不用需改就可

以才許多中情況下使用。

2.使用屬性代替原始數(shù)據(jù)

因?yàn)閷傩砸呀?jīng)成為語言本身的元素,所以聲明數(shù)據(jù)元素時(shí)它的作用域等級(jí)沒有必要大于private。因

為代碼本身會(huì)把屬性看成數(shù)據(jù)元素,你并沒有失去使用簡(jiǎn)單數(shù)據(jù)類型的便利性。相反它會(huì)使你的代碼更加

靈活功能更加強(qiáng)大。屬性使你的數(shù)據(jù)元素封裝性更好。屬性可以讓你使用lazyevaluation來返回?cái)?shù)據(jù)。

lazyevaluation的意思是當(dāng)用戶請(qǐng)求時(shí)才計(jì)算它的值,而不是一直保留著它。

最后,屬性可以是virtual也可以是abstract。你也可以在接口中定義屬性。

這里還有維護(hù)方面的因素應(yīng)當(dāng)注意:盡管操作兩者的方法是一樣的,但是你把一個(gè)數(shù)據(jù)元素變成屬性,

那么原先客戶端的程序便不能訪問服務(wù)端的新版本程序了。實(shí)際上對(duì)于在Webservice中你想實(shí)現(xiàn)序列化

的值你可以把它們變成屬性來使用:

privateintTheMonth=0;

[XmlAttribute("Month")]

pubIicintMonth

(

get(

returnTheMonth;

)

set{

TheMonth=value;

)

)

簡(jiǎn)單通過屬性就可以使你的所有數(shù)據(jù)元素私有化。

3.在Producer/Consumer的Idiom中使用Delegate

當(dāng)你生成一個(gè)實(shí)現(xiàn)produceridiom類的時(shí)候,使用deIetate來通知consumer。這種方法相對(duì)于用接

口更加靈活。Delegate是多點(diǎn)傳送的,所以不用加額外的代碼你就何以支持多用戶。相對(duì)于用接口這樣做

可使類之間的耦合性降低。

下面的類處理鍵盤輸入并把它傳給所有的registeredIisteners:

pubIicclassKeyboardProcessor

(

privateOnGetLinetheFunc=null;

pubIicOnGetLineOnGetLineCaIIback(

get(

returntheFunc;

1

set(

theFunc=value;

)

)

pubIicvoidRun(){

//Readinput.

//IfthereisanyIisteners,pubIish:

strings;

do{

s=Console.ReadLine();

if(s.Length==0)

break;

if(theFunc!=nuII){

System.Delegate[]funcs=theFunc.GetInvocationList();

foreach(OnGetLinefinfuncs){

try(

f(s);

}catch(Exceptione){

Console.WriteLine

("CaughtException:{0}”,e.Message);

1

)

)

)while(true);

J

任何數(shù)目的Iisteners都可注冊(cè)到producer,它們所要做的只是提供一個(gè)特定的函數(shù):deletate<>

4.注意初始化順序

C#中對(duì)于一些變量聲明加入了initializer的概念。它們?cè)跇?gòu)造函數(shù)之前被執(zhí)行,實(shí)際上變量在基

類的構(gòu)造函數(shù)執(zhí)行前之前被初始化。

所以,在初始化變量的時(shí)候不要用基類中的數(shù)據(jù),因?yàn)樗鼈冞€沒有被構(gòu)造。

國(guó)注冊(cè):登錄:發(fā)表文章

40種網(wǎng)站設(shè)計(jì)常用技巧

000672-2715:18:17

大中小

1.oncontextmenu="window.event.returnVaIue二faIse"將徹底屏蔽鼠標(biāo)右鍵

<tabIeborderoncontextmenu=return(faIse)><td>no</tabIe>可用于Table

2.<bodyonseIectstart="returnfalse”)取消選取、防止復(fù)制

3.onpaste=,zreturnfalse”不準(zhǔn)粘貼

4.oncopy="returnfalse;"oncut=,returnfalse;“防止復(fù)制

5.<linkreI="ShortcutIcon“href=,,favicon.icoz,>IE地址欄前換成自己的圖標(biāo)

6.<1inkreI="Bookmark“href="favicon.ico”>可以在收藏夾中顯示出你的圖標(biāo)

7.<inputstyIe=,/ime-mode:disabIedz,>關(guān)閉輸入法

8.永遠(yuǎn)都會(huì)帶著框架

<scriptIanguage=,JavaScript”><!—

if(window==top)top.location.href="frames.htm";//frames,htm為框架網(wǎng)頁(yè)

//—></script>

9.防止被人frame

<SCRIPTLANGUAGE=JAVASCRIPTX!—

if(top.location!=self.location)top.location=seIf.location;

//—></SCRIPT>

W.網(wǎng)頁(yè)將不能被另存為

<noscriptXiframesrc="/bIog/*.htmI>";</iframeX/noseript>

11.<inputtype=buttonvaIue二查看網(wǎng)頁(yè)源代碼

oneIick=/,window.Iocation="view-source:"+"http://www.wiII””>

12.刪除時(shí)確認(rèn)

<ahref=/zjavascript:if(confirm("確實(shí)要?jiǎng)h除嗎?"))location="boos.asp?&areyou=刪除&page=1刪

除<3

13.取得控件的絕對(duì)位置

//Javascript

<scriptlanguage="Javascript”>

functiongetIE(e){

vart=e.offsetTop;

varl=e.offsetLeft;

whiIe(e=e.offsetParent)

alert("top="+t+”/nIeft="+I);

)

</script>

//VBScript

<scriptIanguage=/,VBScriptz/><!一

functiongetIE0

dimt,La,b

seta=document,aII.img1

t=document.aII.img1.offsetTop

I=document.all.img1.offsetLeft

whilea.tagName<>“BODY”

seta=a.offsetParent

t=t+a.offsetTop

l=l+a.offsetLeft

wend

1^8n*一斗二〃機(jī)&函「(13)&〃2代=〃&1,64,“得到控件的位置〃

endfunction

-X/script>

14.光標(biāo)是停在文本框文字的最后

<scriptlanguage="javascript”>

functioncc()

(

vare=event.srcElement;

varr=e.createTextRange();

r.moveStart("character”,e.vaIue.length);

r.colIapse(true);

r.select();

)

</script>

<inputtype=textname=text1value="123"onfocus="cc()”>

15.判斷上一頁(yè)的來源

javascript:

document,referrer

16.最小化、最大化、關(guān)閉窗口

<objectid=hh1cIassid=z,cIsid:ADB880A6-D8FF-11CF-9377-00AA003B7A1

<paramname="Command"vaIue=,/Minimize^X/object>

<objectid=hh2cIassid="cIsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11,z>

<paramname="Command“vaIue=/,Maximize,,X/object>

<OBJECTid=hh3classid="cIsid:adb880a6-d8ff-11cf-9377-00aa003b7a11z,>

<PARAMNAME="Command"VALUE=Z,CIosez,X/0BJECT>

<inputtype二buttonvalue二最小化oneIick=hh1.CIick()>

<inputtype二buttonvalue二最大化oneIick=hh2.Click()>

<inputtype=buttonvalue二關(guān)閉oneIick=hh3.Click()>

本例適用于IE

17.屏蔽功能鍵Shift,Alt.Ctrl

<script>

functionIook()(

if(event.shiftKey)

25代(“禁止按5卜汗1鍵!”);〃可以換成ALTCTRL

)

document.onkeydown=look;

</script>

18.網(wǎng)頁(yè)不會(huì)被緩存

<METAHTTP-EQUIV="pragma“CONTENT="no-cache”>

<METAHTTP-EQUIV=,zCache-ControI,zCONTENT^no-cache,must-revalidate”>

<METAHTTP-EQUIV="expires"CONTENT="Wed,26Feb199708:21:57GMT">

或者<METAHTTP-EQUIV=~expires〃CONTENT="0”>

19.怎樣讓表單沒有凹凸感?

<inputtype二textstyIe="border:1solid#000000z/>

<inputtype=textstyIe=,zborder-1eft:none;border-right:none;border-top:none;border-bottom:

1solid#000000z,X/textarea>

20.<div><span>&<Iayer>的區(qū)別?

<div>(division)用來定義大段的頁(yè)面元素,會(huì)產(chǎn)生轉(zhuǎn)行

<span>用來定義同一行內(nèi)的元素,跟<出丫>的唯一區(qū)別是不產(chǎn)生轉(zhuǎn)行

<layer)是ns的標(biāo)記,ie不支持,相當(dāng)于<div>

21.讓彈出窗口總是在最上面:

<bodyonbIur="this.focus();

22.不要滾動(dòng)條?

讓豎條沒有:

<bodystyIe=,,overfIow:scroII;overfIow-y:hidden”>

</body>

讓橫條沒有:

<bodystyIe="overfIow:scroII;overfIow-x:hidden”>

</body>

兩個(gè)都去掉?更簡(jiǎn)單了

<bodyscroIl=z/no,z>

</body>

23.怎樣去掉圖片鏈接點(diǎn)擊后,圖片周圍的虛線?

<ahref=zz#zzonFocus=,,this.bIur0,z><imgsrc="/blog/logo,jpg"border=0X/a>

24.電子郵件處理提交表單

<formname="forml“method="post"action="mailto:****@***.com“enctype=,,text/pIainz/>

<inputtype=submit>

</form>

25.在打開的子窗口刷新父窗口的代碼里如何寫?

window,opener,location.reload()

26.如何設(shè)定打開頁(yè)面的大小

<bodyonIoad=//top.resizeTo(300,200)

打開頁(yè)面的位置〈bodyonload="top.moveBy(300,200)

27.在頁(yè)面中如何加入不是滿鋪的背景圖片,拉動(dòng)頁(yè)面時(shí)背景圖不動(dòng)

<STYLE>

body

{background-image:urI(/bIog/1ogo.gif);background-repeat:no-repeat;

background-position:center:background-attachment:fixed}

</STYLE>

28.檢查一段字符串是否全由數(shù)字組成

<scriptIanguage=,zJavascript"X!一

functioncheckNum(str){returnstr.match(//D/)==nu11}

aIert(checkNum(“1232142141,z))

aIert(checkNum(“123214214a1"))

//―></script>

29,獲得一個(gè)窗口的大小

document,body,cIientWidth;document,body,cIientHeight

30.怎么判斷是否是字符

if(/[Vx00-/xff]/g.test(s))alert(“含有漢字”);

elsealert("全是字符");

31.TEXTAREA自適應(yīng)文字行數(shù)的多少

<textarearows=1name=s1coIs=27onpropertychange=,,this.style.posHeight=this.scrolIHeight'^

</textarea>

32.日期減去天數(shù)等于第二個(gè)日期

<scriptlanguage=Javascript>

functioncc(dd,dadd)

(

//可以加上錯(cuò)誤處理

vara=newDate(dd)

a=a.vaIueOf()

a=a-dadd*24*60*60*1000

a=newDate(a)

aIert(a.getFuIIYear()+“年”+(a.getMonth()+1)+“月〃+a.getDate()+“日”)

}

cc(“12/23/2002”,2)

</script>

33.選擇了哪一個(gè)Radio

<HTMLXscriptlanguage=,,vbscript”>

functioncheckme()

foreachobinradio1

ifob.checkedthenwindow,alertob.vaIue

next

endfunction

</scriptXBODY>

<INPUTname="radiol”type="radio"value="styIe"checked>StyIe

<INPUTname="radiol“type="radio“vaIue="barcode”>Barcode

<INPUTtype="button"vaIue="check"oneIick="checkme()〃>

</BODYX/HTML>

34.腳本永不出錯(cuò)

<SCRIPTLANGUAGE="JavaScript”)

<!—Hide

functionkiIlErrorsO(

returntrue;

J

window,onerror=kiIlErrors;

//~>

</SCRIPT>

35.ENTER鍵可以讓光標(biāo)移到下一個(gè)輸入框

<inputonkeydown="if(event.keyCode=13)event.keyCode二9”>

36.檢測(cè)某個(gè)網(wǎng)站的鏈接速度:

把如下代碼加入<body>區(qū)域中:

<scriptIanguage=Javascript>

tim=1

setInterval(z,tim++z/,100)

b=1

varautourl=newArray()

autourI[1]=//”

autourI[2]=,”

autourI[3]=,”

autourI[4]=,,”

autourI[5]=/,”

functionbutt()(

document,writeC<formname=autof>")

for(vari=1;i<autourI.Iength;i++)

document,write(,z<inputtype二textname=txt"+i+"size=10vaIue二7bIog/測(cè)試中>"二》<input

type=text

name=urI"+i+"size=40>=》<inputtype=buttonvaIue=G0

oneIick=window.open(this.form,urI"+i+”.vaIue)><br/>")

document,write(,z<inputtype=submitvaIue=刷新></form>")

)

butt0

functionauto(urI)

eIse

b++

J

functionrun(){for(vari=1;i<autourI.Iength;i++)document,write('?mg

src=http:Z/^+autourI+,,/,,+Math.random()+"width=1height=1

onerror=auto("http://"+autourl+"")>")}

run()</script>

37.各種樣式的光標(biāo)

auto:標(biāo)準(zhǔn)光標(biāo)

default:標(biāo)準(zhǔn)箭頭

hand:手形光標(biāo)

wait:等待光標(biāo)

text:I形光標(biāo)

vertical-text:水平I形光標(biāo)

no-drop:不可拖動(dòng)光標(biāo)

not-aIIowed:無效光標(biāo)

help:?幫助光標(biāo)

all-scrolI:三角方向標(biāo)

move:移動(dòng)標(biāo)

crosshair:十字標(biāo)

e-resize

n-resize

nw-resize

w-resize

s-resize

se-resize

sw-resize

38.頁(yè)面進(jìn)入和退出的特效

j?A55?<metahttp-equiv=//Enter,/content=z,reveaITrans(duration=x,transition=y)zz>

推出頁(yè)面〈metahttp-equiv="Exit“content="revealTrans(duration。,transition=y)”>

這個(gè)是頁(yè)面被載

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論