1 :維護數據庫的完整性、一致性、你喜歡用觸發器還是自寫業務邏輯?為什么
答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實現,這種方式的效率最好;其次用觸發器,這種方式可以保證無論何種業務系統訪問數據庫都能維持數據庫的完整性、一致性;最后再考慮用自寫業務邏輯實現,但這種方式效率最低、編程最復雜,當為下下之策
2 : ADO。NET相對于ADO等主要有什么改進?
答 ADO數據以Recordset 形式存儲 ADO.NET以DataSet形式存儲
Recordset對數據庫持續連接訪問ADO.NET提供對數據庫斷開連接
ADO.NET與ADO相比,優勢在于提供了數據集和數據適配器,有利于實現分布式處理,降低對數據庫服務器資源的消耗。
3 : ASP。NET與ASP相比,主要有哪些進步?
答 asp.net 可以使用強類型語言 頁面是編譯,執行速度快, 增加安全性和可靠性,通過繼承機制來支持代碼的重用,提供聲明性服務器控件減少代碼行數
Asp需要解釋,執行速度慢,重用代碼不方便,沒有調試機制
4:C#中的委托是什么?事件是不是一種委托?
答 委托本質上是一種“方法接口”,它相當于C/C++中的函數指針,當然它比函數指針安全,在C#中通常用于事件處理。與JAVA相比,可以避免使用大量小粒度的匿名類。(不過,也許微軟就是使用類似于JAVA的匿名類實現委托的,只不過從字面上看起不是那么回事罷了,誰知道呢?)
事件不是委托,不過由于事件的性質決定了處理它的程序邏輯能訪問的參數,因此,在C#中處理事件的邏輯都包裝為委托(一種“方法接口”)。實際上,如果你處理自定義的事件,就像JAVA中那樣用接口實現也是可以的,不過這么做在C#一般沒有什么特別的好處。
5:new有幾種用法
第一種:new Class();
第二種:覆蓋方法
public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何類型參數都必須有公共的無參數構造函數。
6:如何把一個array復制到arrayList里
答 foreach( object o in array )arrayList.Add(o);
7:datagrid.datasouse可以連接什么數據源
答 [dataset,datatable,dataview] dataset,datatable,dataview , IList
8:概述反射和序列化
答 反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態地創建類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。然后,可以調用類型的方法或訪問其字段和屬性
答 序列化:序列化是將對象轉換為容易傳輸的格式的過程。例如,可以序列化一個對象,然后使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。
9:概述o/r mapping 的原理答 利用反射,配置 將類于數據庫表映射
10:類成員有( )種可訪問形式
答 可訪問性:public ,protected ,private,internal
11:用sealed修飾的類有什么特點
答 sealed 修飾符用于防止從所修飾的類派生出其它類。如果一個密封類被指定為其他類的基類,則會發生編譯時錯誤。密封類不能同時為抽象類。
sealed 修飾符主要用于防止非有意的派生,但是它還能促使某些運行時優化。具體說來,由于密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數成員的調用可以轉換為非虛擬調用來處理。
11:列舉ADO.NET中的五個主要對象,并簡單描述
connection,command,dataReader,dataAdapter,dataset ...
12:執行下面代碼后:
String strTemp ="abcdefg 某某某";
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
問:i=(14 ) ;j=(11 )
i=(14 ) ;j=(11 ) 中文兩個字節
13:C#中,string str = null 與 string str ="",請盡量用文字說明區別。(要點:說明詳細的內存空間分配)
答 string str = null 是不分配內存空間,而string str = "" 給它分配長度為空字符串的內存空間。
14:概述.NET里對 remoting 和 webservice 兩項技術的理解和實際中的應用。
答 遠程邏輯調用,remoing接口只能用在.net中
15:什么是code-behind技術
答 aspx and cs 代碼隱藏
16:概述三層結構體系
答 表示層 數據層 業務層
17:用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關系以及為什么要這樣分層?
答:一般為3層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層一般分為二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層為了與用戶交互例如用戶添加表單。
優點: 分工明確,條理清晰,易于調試,而且具有可擴展性。
缺點: 增加成本。
18:什么是ASP.net中的用戶控件
答:用戶控件就是.ascx擴展名的東西嘍,可以拖到不同的頁面中調用,以節省代碼.比如登陸可能在多個頁面上有,就可以做成用戶控件,但是有一個問題就是用戶控件拖到不同級別的目錄下后里面的圖片等的相對路徑會變得不準確,需要自已寫方法調整.
19:什么叫應用程序域?什么是受管制的代碼?什么是強類型系統?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分別作何解釋?
答 應用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小
受管制的代碼:unsafe:非托管代碼。不經過CLR運行。
強類型系統 RTTI:類型識別系統。
裝箱就是把值類型到引用類型的轉換
拆箱就是引用類型到值類型的轉換
重載 方法名相同 不用個數的參數或者指定不同參數類型
CTS:通用語言系統。CLS:通用語言規范。CLR:公共語言運行庫。
class box{
int aa(object i)
{}
object bb()
{}
}
int bb=5
new box().aa(bb) //裝箱
int conver=(int)new box().zz(); //拆箱
//重載
public void aaa(int rad)
{ }
public void aaa(int len,int bre )
{ }
public void aaa(sting str)
{ }
20:列舉一下你所了解的XML技術及其應用
答:xml可以統一數據格式,XML可是好東西,保存配置,站與站之間的交流,WEB SERVICE都要用它.
21 :ADO.net中常用的對象有哪些?分別描述一下。
答:Connection 對象用于在應用程序和數據庫之間的連接
Command 可以檢索和操縱數據庫中的數據
DataAdapter對象充當DataSet和數據源之間用于檢索和保存數據的橋接器
DataSet 對象從數據庫檢索的數據可以存儲在其中能夠以XML形式保存
DataReader 是查詢結果的一種只進。只讀的視圖 不具有DataSet的任何復雜功能
所以可以加快訪問和查看數據的速度 不提供斷開式訪問
22:如何理解委托?
答:據說相當于函數指針,定義了委托就可以在不調用原方法名稱的情況下調用那個方法.
msdn2005中是這樣解釋的:
委托具有以下特點:委托類似于 C++ 函數指針,但它是類型安全的。
委托允許將方法作為參數進行傳遞。委托可用于定義回調方法
委托可以鏈接在一起;例如,可以對一個事件調用多個方法。
方法不需要與委托簽名精確匹配。
23:C#中的委托是什么?事件是不是一種委托?
答 委托可以把一個方法作為參數代入另一個方法。
委托可以理解為指向一個函數的引用。
是,是一種特殊的委托
24:UDP連接和TCP連接的異同。
答: udp前者只管傳,不管數據到不到,無須建立連接. tcp后者保證傳輸的數據準確,須要連結.
25:ASP.net的身份驗證方式有哪些?分別是什么原理?
答:Forms認證,windows集成認證等,passport驗證 None
26:進程和線程分別怎么理解?
答:進程是老子,線程是兒子,沒有老子就沒有兒子,一個老子可以有多個兒子.一個兒子可以成為別人的兒子,一個老子也可以為別的老子生兒子.
27:什么是code-Behind技術。
答:代碼分離,這是個明智的東西,或者可以理解成HTML代碼寫在前臺,C#代碼寫在后臺.當然前臺也有腳本,類的調用等,其實寫在一起也是可以的.
28:net中讀寫XML的類都歸屬于哪些命名空間?
答:System.Xml
29解釋一下UDDI、WSDL的意義及其作用
答:UDDI 用于注冊各個服務提供商提供的服務 以便可以共享它們 它還有助于WEB服務客戶或web用戶查找該Web服務
wsdl 是web服務描述語言(web Services Description Language)
30:什么是SOAP,有哪些應用。
答:SOAP(Simple Object Access Protocol )簡單對象訪問協議是在分散或分布式的環境中交換信息并執行遠程過程調用的協議,是一個基于XML的協議。使用SOAP,不用考慮任何特定的傳輸協議(最常用的還是HTTP協議),可以允許任何類型的對象或代碼,在任何平臺上,以任何一直語言相互通信。這種相互通信采用的是XML格式的消息,具體請看
31:如何理解.net中的垃圾回收機制。
答 GC?對象創建了總要清除啊,不然內存哪夠用?
32:常用的調用webservice方法有哪些?
答 HTTP-get Http-post Http-soap
33 概述.NET里對 remoting 和 webservice 兩項技術的理解和實際中的應用。
答 遠程邏輯調用,remoing接口只能用在.net中
34: 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
答 private : 私有成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。
35:列舉ASP.NET 頁面之間傳遞值的幾種方式。
答. 1.使用QueryString,
源頁面
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text
Response.Redirect(url);
目標頁面
Label1.Text=Request.QueryString["name"];
2.使用Session變量
源頁面
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.aspx");
目標頁面
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
3.使用Server.Transfer
源頁面代碼:
public string Name
{
get {
return TextBox1.Text; }
}
//然后調用Server.Transfer方法
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}
目標頁面代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
WebForm1 wf1;
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
}
36:一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數是多少, 用遞歸算法實現。
答:public class MainClass
{
public static void Main()
{
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);
}
}
37:override與重載的區別
答 :
override 與重載的區別。重載是方法的名稱相同。參數或參數類型不同,進行多次重載以適應不同的需要
Override 是進行基類中函數的重寫。為了適應需要。
38:請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
39:請編程實現一個冒泡排序算法?
答:
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
40:描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:不是。可以用任意類型。
41:求以下表達式的值,寫出您想到的一種或幾種實現方法: 1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum - I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
42:在下面的例子里
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()創建B的實例時,產生什么輸出?
答:X=1,Y=0;x= 1 y = -1
43:net中讀寫數據庫需要用到那些類?他們的作用?
答:DataSet:數據存儲器。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用于填充。
44:ASP.net的身份驗證方式有哪些?分別是什么原理?
答:Windwos(默認)用IIS...
From(窗體)用帳戶
Passport(密鑰)
45:在.net中,配件的意思是?
答:程序集。(中間語言,源數據,資源,裝配清單)
46:net Remoting 的工作原理是什么?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置
47:根據委托(delegate)的知識,請完成以下用戶控件中代碼片段的填寫:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//請在以下補齊代碼用來調用OnDBOperate委托簽名的OnNew事件。
}
}
}
答:if( OnNew != null
OnNew( this, e ;
48:SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句獲得最后更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
49:根據線程安全的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死鎖?并簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死鎖。但如果把int換做一個object,那么死鎖會發生)
50:簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:WS主要是可利用HTTP穿透防火墻。Remoting可以利用TCP/IP,二進制傳送提高效率
51:用C#實現以下功能
a 產生一個int數組,長度為100,并向其中隨機插入1-100,并且不能重復
答 :List L=new List();
Random random = new Random();
for (int i = 1; i <= 100; i++)
{
if (L.IndexOf(i) < 0)
{
L.Add(random.Next(1,100));
}
}
b 對上面生成的數組排序,需要支持升序、降序兩種順序
答 L.Reverse(L);
L.Sort(L);
52:請說明.net中的錯誤處理機制,并舉例
答 異常是從 Exception 類類繼承的對象。異常從發生問題的代碼區域引發,然后沿堆棧向上傳遞,直到應用程序處理它或程序終止。
try
{ //執行代碼,不確定是否會出錯 }
catch
{ //出錯處理 }
finally
{ //無論怎樣,都要執行 }
53:請說出強名的含義
答 垃圾回收的原理是根據是否空引用,和該數據類型占用內存來判斷該收回多少內存.強類型說白就是必須要有個數據類型.
54:請列出c#中幾種循環的方法,并指出他們的不同
答 FOR WHILE foreach do while
55:請指出.net中所有類型的基類
答 object
56:請指出GAC的含義
答 全局訪問緩存
57:SQL SREVER中,向一個表中插入了新數據,如何快捷的得到自增量字段的當前值
答 INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
58:什么是WEB控件?使用WEB控件有那些優勢?
答 web控件就是可以在服務器執行的控件,優勢在于可以回傳數據,帶有事件驅動
59: 請解釋ASP。NET中以什么方式進行數據驗證?
答 .net中提供了幾個數據驗證控件,可以在服務器端或者客戶端進行驗證。
60: 請談談對正則表達式的看法?
答 主要用在字符串的匹配上面,與具體的語言環境無關。
61: ASP。NET中共有幾種類型的控件?各有什么區別?
答 Html 控件 傳統的html標記
Web 控件 可以回傳數據,事件驅動
自定義 控件 在原有控件的基礎上增加功能
復合控件 多個子控件復合成一個新的控件
62: WEB控件可以激法服務端事件,請談談服務端事件是怎么發生并解釋其原理?自動傳回是什么?為什么要使用自動傳回。
答 通過實現IPostBack這個接口來執行事件。自動回傳就是AutoPostBack,使用自動回傳可以監視客戶端變化情況并將這種改變返回到服務器端
63: WEB控件及HTML服務端控件能否調用客戶端方法?如果能,請解釋如何調用?
答 能,服務器端控件在html中表現形式還是html標記,所以可以執行客戶端事件,有多種方式:1、control.Attributes["onclick"]="...;";
2、<script for="controlName" event="onclick"></script>
64: 請解釋ASP。NET中的web頁面與其隱藏類之間的關系?
答 繼承的關系
65: 什么是viewstate,能否禁用?是否所用控件都可以禁用?
答 可以全部禁用,viewstate就是hidden input,只不過加上了微軟的編碼方式記錄控件的狀態
66: 當發現不能讀取頁面上的輸入的數據時很有可能是什么原因造成的?怎么解決
答 可能就是事件沒有關聯,或者根本就沒有寫讀取代碼。
解決 檢查代碼, 設斷點調試
67:請解釋一個WEB頁面中代碼執行次序。
答 參看.cs 知道最先執行OnInit(); 然后到Page_Load,最后到具體的執行事件。
68:請解釋什么是上下文對象,在什么情況下要使用上下文對象
答 HttpContext, 在類中調用的時候需要用到HttpContext
69:請解釋轉發與跳轉的區別?
答 Transfer 是轉發 包括HttpHandler對象
Redirect 就是跳轉
70: 請解釋ASP。NET中button linkbutton imagebutton 及hyperlink這四個控件之間的功別
答 button imagebutton 將數據傳遞回服務器
hyperlinK 頁面之間的導航
linkbutton主要用于將數據保存到服務器或訪問服務器上的數據
71:請解釋一下。NET多層應用程序中層與層之間以那幾種方式進行數據傳遞。并解釋你自己的項目中采用那種方式進行。
答 這個傳遞方式不定,很多都是傳遞DataSet, XML也可以
72:如果出現ASP。NET中的事件不能觸發可能由于什么原因造成?
答 事件丟失,特別是使用vss的時候最容易造成這種情況,原因不明
73:如果需要在datagride控件中的某一列中添加下拉列表框并綁定數據怎么解決?
答 使用模板列來添加dropdownlist,綁定數據使用代碼前置的方式
74:請解釋asp.net中的數據綁定與傳統數據綁定有什么區別?
答 更靈活 更方便
75:請解釋.net采用委托實現的事件模型與JAVA中采用接口實現的事件模型有什么區別, 答 以圖示方式解釋。
76:請解釋接口的顯式實現有什么意義?
答 規定強制執行,保持一致
77: 什么情況用HTML控件,什么情況用WEB控件,并比較兩者差別
答 客戶端表現用html控件,如果想和server端交互,那么加上runat=server,它就成了服務器端控件,但它沒有web控件的很多方法和屬性,如果你需要用到,那么還是用web controls
78: C#中的接口和類有什么異同。
答 接口只能包含抽象方法,不能包含任何方法實現,不能創建接口實例,接口成員沒有訪問修飾符,接口成員必須是方法屬性事件或者索引器不能包含常數字段運算符也不能有靜態成員
posted on 2010-11-27 10:34
sanmao 閱讀(135)
評論(0) 編輯 收藏