ASP.NET面試問題總結_第1頁
ASP.NET面試問題總結_第2頁
ASP.NET面試問題總結_第3頁
ASP.NET面試問題總結_第4頁
ASP.NET面試問題總結_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、asp.net面試問題總結1 抽象類與接口的區(qū)別?抽象類是一個不完全的類,類里面有抽象的方法、屬性,也可以有具體的方法、屬性,需要進一步專業(yè)化。但接口是一個行為規(guī)范,里面所有的東西都是抽象的!一個類只可以繼承一個基類也就是父類,但可以實現(xiàn)多個接口。2 值類型與引用類型的區(qū)別?舉個實例?c#中支持兩種類型:值類型和引用類型。值類型(如char、int和float)枚舉類型、和結構類型引用類型包括 類(class)類型、接口類型、委托類型和數(shù)組類型值類型和引用類型的區(qū)別在于 值類型的變量直接包含其數(shù)據(jù),而引用類型的變量則存儲對象引用。對于引用類型,兩個變量可能引用同一個對象,因此對一個變量的操作可

2、能影響另一個變量所引用的對象。對于值類型,每個變量都有自己的數(shù)據(jù)副本,對一個變量的操作不可能影響另一個變量。 例: stringbuilder a=new stringbuilder();/將stringbuilder的一個首地址傳給a stringbuilder b=a;/將stringbuilder的一個首地址傳給b b.append(mxh); console.writeline(a); a=null; console.writeline(b); 輸出結果:mxh mxh a=null的意思是:a的引用置為空但此時stringbuilder的堆空間并沒有被釋放,因此在此之后,輸出b時,仍

3、然可以輸出mxh 3 重載與重寫的區(qū)別?1、方法的覆蓋是子類和父類之間的關系,是垂直關系;方法的重載是同一個類中方法之間的關系,是水平關系 2、覆蓋只能由一個方法,或只能由一對方法產(chǎn)生關系;方法的重載是多個方法之間的關系。 3、覆蓋要求參數(shù)列表相同;重載要求參數(shù)列表不同。 4、覆蓋關系中,調(diào)用那個方法體,是根據(jù)對象的類型(對象對應存儲空間類型)來決定;重載關系,是根據(jù)調(diào)用時的實參表與形參表來選擇方法體的。4 css的作用?css是cascading style sheets(層疊樣式表單)的簡稱。簡單的說,他可以提供更多的網(wǎng)頁樣式,使網(wǎng)頁的元素更豐富,比如他可以方便的設置文字的大小,間距,圖片

4、的陰影,位置等等。5 絕對路徑和相對路徑的區(qū)別?相對路徑:以引用文件之網(wǎng)頁所在位置為參考基礎,而建立出的目錄路徑。因此,當保存于不同目錄的網(wǎng)頁引用同一個文件時,所使用的路徑將不相同,故稱之為相對。絕對路徑:以web站點根目錄為參考基礎的目錄路徑。之所以稱為絕對,意指當所有網(wǎng)頁引用同一個文件時,所使用的路徑都是一樣的。其實絕對路徑與相對路徑的不同處,只在于描述目錄路徑時,所采用的參考點不同,由于對網(wǎng)站上所有文件而言,根目錄這個參考點對所有文件都是一樣的,因此,運用以根目錄為參考點的路徑描述方式才會被稱之為絕對路徑。6 冒泡排序?int array = new int * ;int temp =

5、0 ;for (int i = 0 ; i array.length - 1 ; i+)for (int j = i + 1 ; j array.length ; j+)if (arrayj arrayi)temp = arrayi ;arrayi = arrayj ;arrayj = temp ; 7 虛擬目錄的作用是什么?虛擬目錄就是將其他目錄以映射到方式虛擬到該ftp服務器的主目錄下,這樣,一個ftp服務器的主目錄實質(zhì)上就可以包括很多不同盤符,不同路徑的目錄,而不會受到所在盤的空間的限制了,當用戶登錄到主目錄下,還可以根據(jù)該帳戶的權限對它進行相應的操作,就像操作主目錄下的子目錄一樣。如果

6、用戶被鎖定在主目錄下,這項功能將允許他們訪問主目錄之外的其他目錄。8 高內(nèi)聚,低耦合的含義是什么?高內(nèi)聚:類與類之間的關系而定,高,意思是他們之間的關系要簡單明了,不要有很強的關系,不然,運行起來就會出問題。一個類的運行影響到其他的類。低偶和:類內(nèi)部的方法而言,把程序的功能盡量分散,別在一個類里只寫一個或很好的方法,因為那樣會給你的調(diào)試等帶來很多問題。出了錯你都不知道在什么地方。9 如何提高代碼的可重用性?1、盡量把重復的程序?qū)懗珊瘮?shù),然后每次需要運行的時候調(diào)用函數(shù)2、繼承性和多態(tài)性概念很好的支持了代碼的重用性3、使用三層架構,提高代碼的重用性等10 列舉ado.net常用對象,用途? con

7、nection,command,datareader,dataadpter,dataset .其上對于各種對象,連接不同的數(shù)據(jù)庫將會有不同的對象變體connection: 數(shù)據(jù)庫的連接需要此對象command:執(zhí)行數(shù)據(jù)表變化的命令dataadpter: 數(shù)據(jù)的集合,用于填充datareader和dataset主要是對數(shù)據(jù)庫的表信息進行兩種不同方式的讀取11 system.string和system.stringbuilder的區(qū)別? 如果要操作一個不斷增長的字符串,盡量不用string類,改用stringbuilder類。兩個類的工作原理不同:string類是一種傳統(tǒng)的修改字符串的方式,它確實

8、可以完成把一個字符串添加到另一個字符串上的工作沒錯,但是在.net框架下,這個操作實在是劃不來。因為系統(tǒng)先是把兩個字符串寫入內(nèi)存,接著刪除原來的string對象,然后創(chuàng)建一個string對象,并讀取內(nèi)存中的數(shù)據(jù)賦給該對象。這一來二去的,耗了不少時間。而使用system.text命名空間下面的stringbuilder類就不是這樣了,它提供的append方法,能夠在已有對象的原地進行字符串的修改,簡單而且直接。當然,一般情況下覺察不到這二者效率的差異,但如果你要對某個字符串進行大量的添加操作,那么stringbuilder類所耗費的時間和string類簡直不是一個數(shù)量級的12 如何在c#中實現(xiàn)繼

9、承,c#支持多重繼承嗎?在類名后面加上一個冒號,在加上基類的名字不支持多重繼承,但可以用接口實現(xiàn)13 什么是服務端控件?舉例?與一段html控件的區(qū)別?服務端控件只是對html控件以及js腳本做了封裝,方便程序員使用c等面向?qū)ο蟮恼Z言進行編程而已。如果你對html以及js熟悉的話,完全可以不用服務端控件來實現(xiàn)。采用服務端控件會犧牲一定程度的性能(雖然預編譯以及禁用viewstate可以優(yōu)化)。采用服務端控件的好處是:盡可能的隔離程序員與js以及html控件,可以更好的加快開發(fā)速度。但是對于訪問量很大的網(wǎng)站來說,性能的犧牲也是不可忽視的。所以規(guī)模較大的網(wǎng)站,多數(shù)采用的方式為使用開發(fā)邏輯代碼,頁面

10、級的展現(xiàn)還是盡量避免使用服務端控件,而是使用html控件以及js腳本來提升性能,改善用戶體驗。1、控件是服務端控件 用于響應服務端事件 如:2、html控件是客戶端控件 用于響應客戶端事件如:與html控件的區(qū)別在于服務器控件上面有標明 runat=”server” 14 什么是ajax技術,.net2.0是提供哪些接口實現(xiàn)?ajax是asynchronous javascript and xml 的縮寫,它不是一項技術,而是很多技術革新的集合,ajax使用通信技術,發(fā)送和接收對服務器的異步請求/響應,然后利用顯示技術處理響應.ajax是使用客戶端腳本與web服務器交換數(shù)據(jù)的web應用開發(fā)方法

11、。這樣,web頁面不用打斷交互流程進行重新加裁,就可以動態(tài)地更新。使用ajax,用戶可以創(chuàng)建接近本地桌面應用的直接、高可用、更豐富、更動態(tài)的web用戶界面。15 頁面?zhèn)髦档膸追N方式,區(qū)別?1. session(viewstate) 簡單,但易丟失2. application 全局3. cookie 簡單,但可能不支持,可能被偽造4. input type=”hidden” 簡單,可能被偽造5. querystring(response. redirect() 參數(shù)簡單,顯示于地址欄,長度有限6. 數(shù)據(jù)庫 穩(wěn)定,安全,但性能相對弱16 datareader和dataset的區(qū)別? daatare

12、ader和datatset都是通過從數(shù)據(jù)源取數(shù)據(jù)。不同點:datareader提供只進行流的方式讀取數(shù)據(jù)。dataset提供一種容器里面主要由表以及表關系,由適配器來提供從數(shù)據(jù)源取得數(shù)據(jù)填充到此容器的表中。datareader和dataset最大的區(qū)別在于,datareader使用時始終占用sqlconnection,在線操作數(shù)據(jù)庫.任何對sqlconnection的操作都會引發(fā)datareader的異常.因為datareader每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的.因為datareader的特殊性和高性能.所以datareader是只進的.你讀了第一條后就不能再去讀取第一條了.

13、dataset則是將數(shù)據(jù)一次性加載在內(nèi)存中.拋棄數(shù)據(jù)庫連接.讀取完畢即放棄數(shù)據(jù)庫連接.因為dataset將數(shù)據(jù)全部加載在內(nèi)存中.所以比較消耗內(nèi)存.但是確比datareader要靈活.可以動態(tài)的添加行,列,數(shù)據(jù).對數(shù)據(jù)庫進行回傳更新操作17 靜態(tài)類與實體類的區(qū)別?18 不通過第三方變量,互換兩個變量的值? int x=3,y=5; x=x+y; y=x-y; x=x-y;19 在項目中你是怎么調(diào)試的?談談你的心得? 下斷點 逐步調(diào)試(逐語句和逐過程)20. asp.net和asp的區(qū)別? asp是解釋型 aspx是編譯型 性能提高,有利于保護源碼asp.net和asp的最大區(qū)別在于編程思維的轉(zhuǎn)換

14、,而不僅僅在于功能的增強。asp使用vbs/js這樣的腳本語言混合html來編程,而那些腳本語言屬于弱類型、面向結構的編程語言,而非面向?qū)ο螅@就明顯產(chǎn)生以下幾個問題: 1、代碼邏輯混亂,難于管理:由于asp是腳本語言混合html編程,所以你很難看清代碼的邏輯關系,并且隨著程序的復雜性增加,使得代碼的管理十分困難,甚至超出一個程序員所能達到的管理能力,從而造成出錯或這樣那樣的問題。 2、代碼的可重用性差:由于是面向結構的編程方式,并且混合html,所以可能頁面原型修改一點,整個程序都需要修改,更別提代碼重用了。 3、弱類型造成潛在的出錯可能:盡管弱數(shù)據(jù)類型的編程語言使用起來回方便一些,但相對于

15、它所造成的出錯幾率是遠遠得不償失的。 以上是語言本身的弱點,在功能方面asp同樣存在問題,第一是功能太弱,一些底層操作只能通過組件來完成,在這點上是遠遠比不上php/jsp,其次就是缺乏完善的糾錯/調(diào)試功能,這點上asp/php/jsp差不多。 那么,asp.net有哪些改進呢? asp.net擺脫了以前asp使用腳本語言來編程的缺點,理論上可以使用任何編程語言包括c+ , vb , js等等,當然,最合適的編程語言還是ms為.net frmaework專門推出的c(讀c sharp),它可以看作是vc和java的混合體吧,盡管ms自己講c#內(nèi)核中更多的象vc,但實際上我還是認為它和java更

16、象一些吧。首先它是面向?qū)ο蟮木幊陶Z言,而不是一種腳本,所以它具有面向?qū)ο缶幊陶Z言的一切特性,比如封裝性、繼承性、多態(tài)性等等,這就解決了剛才談到的asp的那些弱點。封裝性使得代碼邏輯清晰,易于管理,并且應用到asp.net上就可以使業(yè)務邏輯和html頁面分離,這樣無論頁面原型如何改變,業(yè)務邏輯代碼都不必做任何改動;繼承性和多態(tài)性使得代碼的可重用性大大提高,你可以通過繼承已有的對象最大限度保護你以前的投資。并且c#和c+、java一樣提供了完善的調(diào)試/糾錯體系。 asp(active server pages)是microsfot公司1996年11月推出的web應用程序開發(fā)技術,它既不是一種程序語

17、言,也不是一種開發(fā)工具,而是一種技術框架,不須使用微軟的產(chǎn)品就能編寫它的代碼,能產(chǎn)生和執(zhí)行動態(tài)、交互式、高效率的站占服務器的應用程序。運用asp可將vbscript、javascript等腳本語言嵌入到html中,便可快速完成網(wǎng)站的應用程序,無需編譯,可在服務器端直接執(zhí)行。容易編寫,使用普通的文本編輯器編寫,如記事本就可以完成。由腳本在服務器上而不是客戶端運行,asp所使用的腳本語言都在服務端上運行,用戶端的瀏覽器不需要提供任何別的支持,這樣大提高了用戶與服務器之間的交互的速度。此外,它可通過內(nèi)置的組件實現(xiàn)更強大的功能,如使用a-do可以輕松地訪問數(shù)據(jù)庫。 之后,微軟又推出asp.net。這不

18、是asp的簡單升級,而是全新一代的動態(tài)網(wǎng)頁實現(xiàn)系統(tǒng),用于一臺web服務器建立強大的應用程序。是微軟發(fā)展的新體系結構.net的一部分,是asp和.net技術的結合。提供基于組件、事件驅(qū)動的可編程網(wǎng)絡表單,大大簡化了編程。還可以用asp.net建立網(wǎng)絡服務。 asp與asp.net的區(qū)別: 1.開發(fā)語言不同 asp僅局限于使用non-type腳本語言來開發(fā),用戶給web頁中添加asp代碼的方法與客戶端腳本中添加代碼的方法相同,導致代碼雜亂。 asp.net允許用戶選擇并使用功能完善的strongly-type編程語言,也允許使用潛加巨大的.net framework。 2.運行機制不同 asp是解

19、釋運行的編程框架,所以執(zhí)行效率加較低。 asp.net是編譯性的編程框架,運行是服務器上的編譯好的公共語言運行時庫代碼,可以利用早期綁定,實施編譯來提高效率。 3.開發(fā)方式 asp把界面設計和程序設計混在一起,維護和重用困難。 asp.net把界面設計和程序設計以不同的文件分離開,復用性和維護性得到了提高。 asp.net更好些21.c#中property與attribute的區(qū)別,它們各有什么用處,這種機制的好處在哪里?attribute:自定義屬性的基類;property :類中的屬性22.tcp連接與udp連接的區(qū)別? tcp協(xié)議是面向連接的,每個數(shù)據(jù)包的傳輸過程是:先建立鏈路、數(shù)據(jù)傳輸

20、、然后清除鏈路。數(shù)據(jù)包不包含目的地址。受端和發(fā)端不但順序一致,而且內(nèi)容相同。它的可靠性高.udp協(xié)議是面向無連接的,每個數(shù)據(jù)包都有完整的源、目的地址及分組編號,各自在網(wǎng)絡中獨立傳輸,傳輸中不管其順序,數(shù)據(jù)到達收端后再進行排序組裝,遇有丟失、差錯和失序等情況,通過請求重發(fā)來解決。它的效率比較高。 tcpudp面向連接面向非連接對系統(tǒng)資源的要求較多對系統(tǒng)資源的要求較少傳輸可靠傳輸不可靠傳輸大量數(shù)據(jù)傳輸少量數(shù)據(jù)速度慢速度快 23.有幾種索引?普通索引:這是最基本的索引類型,而且它沒有唯一性之類的限制。唯一性索引:這種索引和前面的“普通索引”基本相同,但有一個區(qū)別:索引列的所有值都只能出現(xiàn)一次,即必須

21、唯一。主鍵:主鍵是一種唯一性索引,但它必須指定為“primary key”。全文索引單列索引與多列索引24.sql server 2005的新特性?十大新特性1. 加強的t-sql(事務處理sql)2. clr(common language runtime,通用語言運行時)3. 服務代理(service broker)4. 數(shù)據(jù)加密5. stmp郵件6. http終端7. 多活動結果集(muiltiple active result sets,簡稱 mars)8. 專用管理員連接9. sql server 綜合服務(ssis)10. 數(shù)據(jù)庫鏡像25.vss全稱?visual source s

22、afe(項目文件管理)26.100的階乘和(用遞歸)? public static int foo(int i) if(i1)int n=i;int rs=1;while(n1)rs*=n-;return rs+foo(i-1)return 1;27.4個9寫個算式等于100?99+9/9=10028.c#中的委托是什么?事件是不是委托?委托可以把一個方法作為參數(shù)代入另一個方法。 委托可以理解為指向一個函數(shù)的引用。 是,是一種特殊的委托29.聚集索引與非聚集索引的區(qū)別?聚集索引是對原數(shù)據(jù)表進行排序,因此只要符合索引條件,就能夠直接連續(xù)的讀取數(shù)據(jù)記錄,幾乎可以達到對數(shù)據(jù)表的零掃描;而非聚集索引僅

23、僅只是另外建了一張索引表,取數(shù)據(jù)的時候,從索引表取得結果后,還需要到指針所指的數(shù)據(jù)行讀取相應數(shù)據(jù),因此,在性能上,聚集索引會大大優(yōu)于非聚集索引。30.項目開發(fā)流程?需求分析,架構設計,編碼,測試,部署31.怎么處理幾十萬條數(shù)據(jù)并發(fā)?舉個實例?用存儲過程或事務。取得最大標識的時候同時更新.注意主鍵不是自增量方式這種方法并發(fā)的時候是不會有重復主鍵的.取得最大標識要有一個存儲過程來獲取.32.vs 2008新特性?圖1主要是關注于linq我認為是vs 2008(.net 3.5)中最令人興奮的特性。linq使查詢成為了.net中頭等的編程概念,被查詢的數(shù)據(jù)可以是xml(linq to xml)、da

24、tabases(linq to sql、linq to dataset、linq to entities)和對象(linq to objects)。linq也是可擴展的,允許你建立自定義的linq數(shù)據(jù)提供者(比如:linq to amazon、linq to nhibernate、linq to ldap)。 字串5 廣州網(wǎng)站建設c#3.0中的一些新的語言特性和改進: 字串8 c#3.0新特性 字串7c#3.0中新引入的幾個特性大多數(shù)都僅僅是“編譯器技巧”或者“語法糖”,其實編譯器生成的il中間代碼和原來的是一樣的,這樣他們就獨立于 framework和clr運行時。但是,他們確實需要某些fr

25、amework的支持,比如system.core.dll程序集。這就是為什么擴展方法 仍然需要依靠于system.core.dll里包含的 system.runtime.compilerservices.extensionattribute。 字串4另一方面,查詢表達式只是實現(xiàn)了到擴展方法的映射,它包含在system.linq, system.data.linq和system.xml.linq命名空間中。 字串7 屬性: 字串8public class point 字串7 private int _x, _y; 字串2 public int x 字串9 get return _x; 字串4 s

26、et _x = value; public int y 字串1 get return _y; 字串1 set _y = value; 字串2 字串3 字串3 可以寫為: 字串8 public class point public int x get; set; public int y get; set; 字串4 局部變量類型: 字串3var num = 50;var str = simple string;var obj = new mytype();var numbers = new int 1,2,3;var dic = new dictionary(); 字串4 編譯器會生成il中間代

27、碼,就如同我們編譯了下面的代碼: 字串9int num = 50;string str = simple string;mytype obj = new mytype();int numbers = new int 1,2,3;dictionary dic = new dictionary(); 字串5 字串4 對象初始化和集合初始化: 字串3point p = new point();p.x = 0;p.y = 0; 字串1 現(xiàn)在,使用對象初始化,就可以像這樣子來重寫: 字串7point p = new point() x = 0, y = 0 ; 字串7 這個特性也可以使用在集合上,看看下

28、面這段示例: 字串4 list points = new list new point x = 2, y = 5 ,new point x = 1, y = -10 ,new point x = 3, y = 0 ; 字串6 查詢語法查詢表達式提供了一個語言集成的語法來查詢,它特別像關系和層次查詢語言比如sql和xquery。使用linq操作符(也就是 from.where.select)寫查詢很方便,visual studio為它提供了很好的智能感知和編譯時的檢查支持。當c#編譯器遇到了一個查詢語法表達式時,實際上它會被轉(zhuǎn)化為使用擴展方法和lambda表達 式的方法調(diào)用。 字串2我們舉一個例

29、子來解釋這個: 字串8var result = from c in customers where c.city.startswith(b)orderby c.lastnameselect new c.firstname, c.lastname, c.address ; 字串9 字串9 上面的代碼等價于: var result = customers.where( c = c.city.startswith(b) ) 字串9 .orderby( c = c.lastname ) 字串4 .select( c = new c.firstname, c.lastname, c.address );

30、 字串1 字串3 使用查詢語法的好處還有它會使代碼更簡單更易讀。同時注意,查詢表達式以from開頭,以select或者group結尾。 字串2 總結 字串8 c#3.0中新引入的幾個特性大多數(shù)都僅僅是“編譯器技巧”或者“語法糖”,其實編譯器生成的il中間代碼和原來的是一樣的,這樣他們就獨立于 framework和clr運行時。但是,他們確實需要某些framework的支持,比如system.core.dll程序集。這就是為什么擴展方法 仍然需要依靠于system.core.dll里包含的 system.runtime.compilerservices.extensionattribute。 另

31、一方面,查詢表達式只是實現(xiàn)了到擴展方法的映射,它包含在system.linq, system.data.linq和system.xml.linq命名空間中。 33.在父類中聲明一個私有變量,子類能不能訪問?不能34.構造方法是否能被聲明為私有的?能35.平時用到了什么命名空間?用到了哪些包? system.text;system.io;system.xml;system.data;等最好談談自己對這些命名空間的運用和認識;36.什么是應用程序域?應用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小。37.一個靜態(tài)類能否覆蓋它的基類?不能38.對webservice的了解?目前web

32、service廣泛采用https來保障安全,但是該方法也有很多的缺點,尤其是應用于現(xiàn)在越來越復雜的web service安全需求。1.https提供的是點對點安全保護,而web service的特點就是消息往往就要經(jīng)過多個中介才能到達最終的服務提供方,每個中介還有可能對消息做出些處理,也就是說它需要的是端到端的保護。這顯然是https所不能提供的。2.https是在傳輸層提供的安全,而不是在消息層面,也就是只有在傳輸?shù)倪^程中才有消息才是安全的(加密的),而一旦到達了終點就是明文的了。比如可以從消息隊列中將重要的信息竊取出來。3.在https的建立完共享密鑰后,傳遞消息的時候并沒有使用數(shù)字簽名技

33、術,所以也就無法得到抗否認性的能力。而這又是在電子商務中不可豁缺的。4.由于https提供的是傳輸層的安全,當然也就不可能達到消息安全所需要的靈活性的要求。比如加密消息中的部分元素;用不同的密鑰加密消息的不同部分,從而讓不同的消息接受者查看與之對應的信息。因此,為了適應web service對安全的特殊要求,ibm和ms等公司共同制定了ws-security規(guī)范。重新回顧安全問題的三個概念:confidentiality(機密性), integrity(完整性), authentication(身份鑒別),在web service使用soap(xml 格式)作為消息傳輸協(xié)議的背景下,分別產(chǎn)生了

34、xml digital signature,xml encryption和saml(xml格式的security token), 而ws-security則是如何將他們組合起來以滿足web service安全需求的一套規(guī)范web services enhancements 2.0 for microsoft .net (wse)是一個用來建設web服務的.net類庫,它支持最新的web服務協(xié)議,包括ws-security、ws-secureconversation、ws-trust、ws-policy、ws-securitypolicy、ws-addressing和 ws-attachment

35、s。 wse可使開發(fā)人員跨安全平臺建設可升級的、安全的web服務。它支持用傳輸?shù)姆绞桨l(fā)送soap消息,而不是http。另一個特點是具有建立soap路由器的功能,soap消息被發(fā)送給soap路由器,路由器再將工作交付給托管該服務的web服務器。39.索引的優(yōu)缺點?索引的作用就象書的目錄,給出條件查找目錄找出所需要的內(nèi)容 主要分為:主鍵索引和聚合索引優(yōu)點:1、創(chuàng)建索引可以大大提高系統(tǒng)的性能2、可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要原因3、可以加快表與表之間的連接,特別是在現(xiàn)實數(shù)據(jù)的參考完整性方面4、在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著的減少查詢中分組和排序的時間5、通過索引

36、可以在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)性能6、創(chuàng)建唯一索引可以保證數(shù)據(jù)的唯一性缺點:1、創(chuàng)建索引和維護索引要耗費的時間,這種時間隨著數(shù)據(jù)量的增加而增加2、索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每個索引還要占一定的物理空間,如果要建立聚集索引那么需要的空間將會更大3、當對表中的數(shù)據(jù)進行增加,刪除和修改的時候索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度經(jīng)常使用索引的列:1、經(jīng)常要搜索的列上,經(jīng)常連接的列上,經(jīng)常血藥排序的列上,經(jīng)常使用where子句中的列上 很少使用的列:1、查詢中很少使用的列,對于那些只有很少數(shù)據(jù)的列也不應該增加索引,對于那些定義為:text,image 和bit

37、數(shù)據(jù)的列也一樣40.怎么實現(xiàn)數(shù)據(jù)庫優(yōu)化?數(shù)據(jù)庫優(yōu)化主要涉及數(shù)據(jù)庫的查詢優(yōu)化:查詢速度慢的原因很多,常見如下幾種:1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷)2、i/o吞吐量小,形成了瓶頸效應。3、沒有創(chuàng)建計算列導致查詢不優(yōu)化。4、內(nèi)存不足5、網(wǎng)絡速度慢6、查詢出的數(shù)據(jù)量過大(可以采用多次查詢,其他的方法降低數(shù)據(jù)量)7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷)8、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。9、返回了不必要的行和列10、查詢語句不好,沒有優(yōu)化sql語句的優(yōu)化?1、關鍵字段簡歷索引。2、使用存儲過程,它使sql變得更

38、加靈活和高效。3、備份數(shù)據(jù)庫和清理垃圾數(shù)據(jù)。4、清理刪除日志。sql 語句優(yōu)化原則:1、 使用索引來更快便利表2、 is null 和 is not null 任何在 where 字句中使用is null 或 is not null 的語句優(yōu)化器是不允許使用索引的3、in 和 exists 的使用exists 要遠比 in 效率高 4、海量數(shù)據(jù)查詢時盡量少用格式轉(zhuǎn)換5、 oracle by 和 group by 使用oracle by 和 group by 短句任何一種索引都有助于select 的性能提高6、 查詢時盡量將操作移動到等號右邊7、 in or 子句常會時用工作表;使索引失效拆開子

39、句(包含索引)8、 set shouplan _allon 查看執(zhí)行方案 dbll檢查數(shù)據(jù)庫數(shù)據(jù)完整性,它是一組用于驗證sql server 數(shù)據(jù)庫完整性程序9、慎用游標 (將符合條件數(shù)據(jù)放入歷史表,在臨時表定義游標)41.xml用dataset轉(zhuǎn)換?(1)返回完整路徑/ xml的路徑public static string getxmlfullpath(string strpath)/如果路徑中含有:符號,則認定為傳入的是完整路徑 if(strpath.indexof(:) 0) return strpath;else/返回完整路徑 return system.web.httpcontext

40、.current.server.mappath(strpath);(2) 讀取記錄讀取xml的數(shù)據(jù)到dataset中的方法為:/ 讀取xml直接返回dataset/ xml文件相對路徑public static dataset getdatasetbyxml(string strxmlpath) try dataset ds = new dataset(); /讀取xml到dataset ds.readxml(getxmlfullpath(strxmlpath); if(ds.tables.count 0) return ds;else return null;catch(exception)

41、 return null;42.什么是mvc模式?m,v,c分別代表什么?有什么好處?mvc英文即model-view-controller,即把一個應用的輸入、處理、輸出流程按照model、view、controller的方式進行分離,這樣一個應用被分成三個層模型層、視圖層、控制層。 視圖(view)代表用戶交互界面,對于web應用來說,可以概括為html界面,但有可能為xhtml、xml和applet。隨著應用的復雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個應用可能有很多不同的視圖,mvc設計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務流程的處理

42、。業(yè)務流程的處理交予模型(model)處理。比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型。 模型(model):就是業(yè)務流程/狀態(tài)的處理以及業(yè)務規(guī)則的制定。業(yè)務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數(shù)據(jù),并返回最終的處理結果。業(yè)務模型的設計可以說是mvc最主要的核心。目前流行的ejb模型就是一個典型的應用例子,它從應用技術實現(xiàn)的角度對模型做了進一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應用設計模型的框架。它僅僅告訴你按這種模型設計就可以利用某些技術組件,從而減少了技術上的困難。對一個開發(fā)者來說,就可以專注于業(yè)務模型的

43、設計。mvc設計模式告訴我們,把應用的模型按一定的規(guī)則抽取出來,抽取的層次很重要,這也是判斷開發(fā)人員是否優(yōu)秀的設計依據(jù)。抽象與具體不能隔得太遠,也不能太近。mvc并沒有提供模型的設計方法,而只告訴你應該組織管理這些模型,以便于模型的重構和提高重用性。我們可以用對象編程來做比喻,mvc定義了一個頂級類,告訴它的子類你只能做這些,但沒法限制你能做這些。這點對編程的開發(fā)人員非常重要。 業(yè)務模型還有一個很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實體對象的數(shù)據(jù)保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫,從數(shù)據(jù)庫獲取訂單。我們可以將這個模型單獨列出,所有有關數(shù)據(jù)庫的操作只限制在該模型中。 控制(contr

44、oller)可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個連接,控制層接受請求后, 并不處理業(yè)務信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。 mvc的優(yōu)點 大部分用過程語言比如asp、php開發(fā)出來的web應用,初始的開發(fā)模板就是混合層的數(shù)據(jù)編程。例如,直接向數(shù)據(jù)庫發(fā)送請求并用html顯示,開發(fā)速度往往比較快,

45、但由于數(shù)據(jù)頁面的分離不是很直接,因而很難體現(xiàn)出業(yè)務模型的樣子或者模型的重用性。產(chǎn)品設計彈性力度很小,很難滿足用戶的變化性需求。mvc要求對應用分層,雖然要花費額外的工作,但產(chǎn)品的結構清晰,產(chǎn)品的應用通過模型可以得到更好地體現(xiàn)。 首先,最重要的是應該有多個視圖對應一個模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應用的要求。例如,訂單模型可能有本系統(tǒng)的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對于訂單的處理都是一樣,也就是說訂單的處理是一致的。按mvc設計模式,一個訂單模型以及多個視圖即可解決問題。這樣減少了代碼的復制,即減少了代碼的維護量,一旦模型發(fā)生改變,也易于維護。43.xml

46、與html的區(qū)別?1. xml是區(qū)分大小寫字母的,html不區(qū)分。 2. 在html中,如果上下文清楚地顯示出段落或者列表鍵在何處結尾,那么你可以省略或者之類的結束 標記。在xml中,絕對不能省略掉結束標記。 3. 在xml中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字符作為結尾。這樣分析器就知道不用 查找結束標記了。 4. 在xml中,屬性值必須分裝在引號中。在html中,引號是可用可不用的。 5. 在html中,可以擁有不帶值的屬性名。在xml中,所有的屬性都必須帶有相應的值。44.堆和棧的區(qū)別?堆和棧的區(qū)別可以用如下的比喻來看出: 使用棧就象我們?nèi)ワ堭^里吃飯,只管點菜(發(fā)出

47、申請)、付錢、和吃(使用),吃飽了就走,不必理會切菜、洗菜等準備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。 使用堆就象是自己動手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由度大。堆和棧的區(qū)別主要分: 操作系統(tǒng)方面的堆和棧,如上面說的那些,不多說了。 還有就是數(shù)據(jù)結構方面的堆和棧,這些都是不同的概念。這里的堆實際上指的就是(滿足堆性質(zhì)的)優(yōu)先隊列的一種數(shù)據(jù)結構,第1個元素有最高的優(yōu)先權;棧實際上就是滿足先進后出的性質(zhì)的數(shù)學或數(shù)據(jù)結構。45.webservice傳輸數(shù)據(jù)時,怎么保證它的安全性? 使用數(shù)據(jù)摘要或?qū)?shù)據(jù)進行加密46.用一個數(shù)組存儲數(shù)據(jù),用javascrip

48、t怎么實現(xiàn)?var arr = new array(hello,world);47.委托與事件的區(qū)別?事件只是委托的一個特殊形式委托能實現(xiàn)的,事件也能實現(xiàn)同理把事件代碼中的event去除掉,變成委托,代碼也不會出現(xiàn)問題.當使用event關鍵字,標識一個事件時,事件成員不能使用賦值將委托鏈表中的其他代碼注冊的方法去除掉這樣會破壞訂閱的完整性,當用event標識后,使用事件時,只能使用或來添加和刪除訂閱保證一行代碼訪問事件時不會產(chǎn)生誤操作同時在中,使用事件,框架會解析頁面標簽中的oneventname屬性,將屬性值注冊到事件鏈中去這些都是框架上做的一點代碼轉(zhuǎn)換48.談談設計模式,并說明?抽象工廠模

49、式、適配器模式、外觀模式 command命令模式,橋接模式,組合模式,裝飾模式,狀態(tài)模式,備忘錄模式等。軟件設計模式太多,就我的理解簡單說一下最常見的mvc模式。mvc模式是1996年由buschmann提出的:模型(model):就是封裝數(shù)據(jù)和所有基于對這些數(shù)據(jù)的操作。視圖(view):就是封裝的是對數(shù)據(jù)顯示,即用戶界面??刂破鳎╟ontrol):就是封裝外界作用于模型的操作和對數(shù)據(jù)流向的控制等。49.星際造農(nóng)民搬礦代碼?描述思路時在類的設計,多線程問題以及共享資源的同步問題。50.asp.net用戶登陸代碼?登錄邏輯學員自己寫。51.寫出微軟和第三方的三個框架?并用30字說明? sprin

50、g.net spring.net是一個應用程序框架,為.net提供了aop、依賴注入等功能 nhibernate nhibernate是一個面向.net環(huán)境的針對關系型數(shù)據(jù)庫的對象持久化類庫 log4net log4net 是一個可以幫助程序員把日志信息輸出到各種不同目標的.net類庫52.廣告漂移的html和js代碼?var brok=false; var mie=false; var aver=parseint(navigator.appversion.substring(0,1); var aname=navigator.appname; function checkbrok() if(

51、aname.indexof(internet explorer)!=-1) if(aver=4) brok=navigator.javaenabled(); mie=true; if(aname.indexof(netscape)!=-1) if(aver=4) brok=navigator.javaenabled(); var vmin=2; var vmax=5; var vr=2; var timer1; function chip(chipname,width,height) d=chipname; this.vx=vmin+vmax*math.random(); this.vy=vmin+vmax*math.random(); this.w=width; this.h=height; this.xx=0; this.yy=0; this.timer1=null; function movechip(chipname) if(brok) eval(chip=+chipname); if(!mie) pagex=window.pagexoffset; pagew=window.innerwidth; pagey=window.pageyoffset; pageh=window.innerheight; else pagex=window.documen

溫馨提示

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

評論

0/150

提交評論