.NET程序員的數(shù)據(jù)庫面試題(含問和答 )
來源: 發(fā)布時間:2008-04-02 瀏覽:1978人次 字體:[大 中 小] Q1:維護數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么 答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實現(xiàn),這種方式的效率最好;其次用觸發(fā)器,這種方式可以保證無論何種業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都能維持數(shù)據(jù)庫的完整性、一致性;最后再考慮用自寫業(yè)務(wù)邏輯實現(xiàn),但這種方式效率最低、編程最復(fù)雜,當(dāng)為下下之策。 Q2:ADO。NET相對于ADO等主要有什么改進?
答:我個人認為,ADO.NET與ADO相比,優(yōu)勢在于提供了數(shù)據(jù)集和數(shù)據(jù)適配器,有利于實現(xiàn)分布式處理,降低了對數(shù)據(jù)庫服務(wù)器資源的消耗 Q3:ASP。NET與ASP相比,主要有哪些進步?
答:如果一定要說ASP.NET比ASP進步,還是有的:在形式上實現(xiàn)了面向?qū)ο缶幊蹋活A(yù)編譯的服務(wù)器端代碼;更好的安全機制(那些ASPX文件的后臺代碼是以另外一個賬號運行的,與啟動IIS的賬號不相同)等。 Q4:C#中的委托是什么?事件是不是一種委托? 答:委托本質(zhì)上是一種“方法接口”,它相當(dāng)于C/C 中的函數(shù)指針,當(dāng)然它比函數(shù)指針安全,在C#中通常用于事件處理。與JAVA相比,可以避免使用大量小粒度的匿名類。 事件不是委托,不過由于事件的性質(zhì)決定了處理它的程序邏輯能訪問的參數(shù),因此,在C#中處理事件的邏輯都包裝為委托(一種“方法接口”)。實際上,如果你處理自定義的事件,就像JAVA中那樣用接口實現(xiàn)也是可以的,不過這么做在C#一般沒有什么特別的好處。
Q5.您要創(chuàng)建一個顯示公司員工列表的應(yīng)用程序。您使用一個DataGrid控件顯示員工的列表。您打算修改這個控件以便在這個Grid的Footer顯示員工合計數(shù)。請問您應(yīng)該怎么做?( C? )
A.重寫OnPreRender事件,當(dāng)Grid的Footer行被創(chuàng)建時顯示合計數(shù)。
B.重寫OnItemCreated事件,當(dāng)Grid的Footer行被創(chuàng)建時顯示合計數(shù)。 C.重寫OnItemDataBound事件,當(dāng)Grid的Footer行被創(chuàng)建時顯示合計數(shù)。 D. 重寫OnLayout事件,當(dāng)Grid的Footer行被創(chuàng)建時顯示合計數(shù)。 Q6.您要創(chuàng)建ASP.NET應(yīng)用程序用于運行AllWin公司內(nèi)部的Web站點,這個應(yīng)用程序包含了50個頁面。您想要配置這個應(yīng)用程序以便當(dāng)發(fā)生一個HTTP代碼錯誤時它可以顯示一個自定義的錯誤頁面給用戶。您想要花最小的代價完成這些目標,您應(yīng)該怎么做?(多選)( CD )
A.在這個應(yīng)用程序的Global.asax文件中創(chuàng)建一個Application_Error過程去處理ASP.NET代碼錯誤。 B.在這個應(yīng)用程序的Web.config文件中創(chuàng)建一個applicationError節(jié)去處理ASP.NET代碼錯誤。 C.在這個應(yīng)用程序的Global.asax文件中創(chuàng)建一個CustomErrors事件去處理HTTP錯誤。 D.在這個應(yīng)用程序的Web.config文件中創(chuàng)建一個CustomErrors節(jié)去處理HTTP錯誤。 E.在這個應(yīng)用程序的每一頁中添加一個Page指示符去處理ASP.NET 代碼錯誤。 F. 在這個應(yīng)用程序的每一頁中添加一個Page指示符去處理ASP.NET HTTP錯誤。 Q7.您的公司有一個DB Server,名為AllWin,其上裝了MS SQLSERVER 2000?,F(xiàn)在需要您寫一個數(shù)據(jù)庫連接字符串,用以連接AllWin上SQL SERVER中的一個名為PubBase實例的Test庫。請問,應(yīng)該選擇下面哪一個字符串?( B )
A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI” B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI” C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI” D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI” Q8.您為AllWin公司創(chuàng)建了一個ASP.NET應(yīng)用程序。這個應(yīng)用程序調(diào)用一個 Xml Web Service。這個 Xml Web Service 將返回一個包含了公司雇員列表的DataSet對象。請問您該如何在這個程序中使用這個 Xml Web Service?( ? )
A.在“引用”對話框的.Net標簽中選擇 System.Web.Services.dll。 B.在“Web引用”對話框中輸入這個 XML Web service 的地址。 C.在您的 Global.asax.cs 中添加一條 using 語句并指定這個 XML Web service 的地址。 D.在您的 Global.asax.cs 中寫一個事件處理器導(dǎo)入這個 Xml Web Service 相應(yīng)的 .wsdl 和 .disco 文件。 Q9.您要創(chuàng)建一個ASP.NET應(yīng)用程序在DataGrid控件中顯示一個經(jīng)過排序的列表。產(chǎn)品數(shù)據(jù)被存放于一個名為PubBase的Microsoft SQL Server 數(shù)據(jù)庫。每個產(chǎn)品的主鍵是ProductID,Numeric型并且每個產(chǎn)品有一個字母描述字段,名為ProductName。您使用一個SqlDataAdapter對象和一個SqlCommand對象通過調(diào)用一個存儲過程從數(shù)據(jù)庫中獲取產(chǎn)品數(shù)據(jù)。您將SqlCommand對象的CommandType屬性設(shè)置為CommandType.StoredProcedure,并將它的CommandText屬性設(shè)置為procProductList。您成功的獲取了一個DataTable對象,其中是已經(jīng)按ProductID降序排列的產(chǎn)品列表。您打算顯示以相反的字母順序排列的ProductName,請問該怎么做? ( B )
A. 將SqlCommand對象的CommandType屬性修改為CommandType.Text,將CommandText屬性修改為”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后將這個DataTable對象綁定到DataGrid控件。 B. 創(chuàng)建一個基于這個DataTable對象的新的DataView并將這個DataView的Sort屬性設(shè)置為“ProductName DESC”。然后將這個DataView對象綁定到DataGrid控件。 C. 將DataGrid控件的AllowSorting屬性設(shè)置為True,并將DataGridColumn的SortExpression屬性設(shè)置為 “ProductName DESC”.以顯示ProductName。然后將這個DataTable對象綁定到DataGrid控件。 D. 將DataTable對象的DisplayExpression屬性設(shè)置為 “ORDER BY ProductName DESC”.。然后將這個DataTable對象綁定到DataGrid控件。 Q10.C#代碼實現(xiàn),確保windows程序只有一個實例(instance)
/// ///應(yīng)用程序的主入口點。 /// [STAThread] staticvoid Main() { //防止程序多次運行 if(!OneInstance.IsFirst("GetPayInfo")) { MessageBox.Show ("警告:程序正在運行中! 請不要重復(fù)打開程序!可在右下角系統(tǒng)欄找到!","程序錯誤提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop); return; } Application.Run(new Form1()); } // ******************* 防止程序多次執(zhí)行 ************************** publicabstractclass OneInstance { /// ///判斷程序是否正在運行 /// /// ///如果程序是第一次運行返回True,否則返回False publicstaticbool IsFirst(string appId) { bool ret=false; if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero) { CreateMutex(IntPtr.Zero,0,appId); ret=true; } return ret; } [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] privatestaticextern IntPtr OpenMutex( uint dwDesiredAccess, // access int bInheritHandle, // inheritance option string lpName // object name ); [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex( IntPtr lpMutexAttributes, // SD int bInitialOwner, // initial owner string lpName // object name ); } Q11. 簡述 private、 protected、 public、 internal 修飾符的訪問權(quán)限。
private : 私有成員, 在類的內(nèi)部才可以訪問。protected : 保護成員,該類內(nèi)部和繼承類中可以訪問。public : 公共成員,完全公開,沒有訪問限制。internal: 在同一命名空間內(nèi)可以訪問。 Q12. 寫出一條Sql語句: 取出表A中第31到第40記錄(SQLServer, 以自動增長的ID作為主鍵, 注意:ID可能不是連續(xù)的。)
select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) Q13 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
1. 使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session變量 3.使用Server.Transfer 2。請說明在.net中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺點。 session(viewstate) 簡單,但易丟失 application 全局 cookie 簡單,但可能不支持,可能被偽造 input ttype="hidden" 簡單,可能被偽造 url參數(shù)簡單,顯示于地址欄,長度有限 數(shù)據(jù)庫穩(wěn)定,安全,但性能相對弱 Q14.override與重載的區(qū)別
Override用來重寫父類的方法,重載使用相同名的方法或操作符擁有不同類型的參數(shù) Q15、.net的錯誤處理機制是什么
.net錯誤處理機制采用try->catch->finally結(jié)構(gòu),發(fā)生錯誤時,層層上拋,直到找到匹配的Catch為止。 本文來自: IT知道網(wǎng)(http://www.) 詳細出處參考:http://www./html/net/netmianshi/20080402/1189.html
|
|