1. 程式人生 > >.net面試題(含答案)

.net面試題(含答案)

a 產生一個int陣列,長度為100,並向其中隨機插入1-100,並且不能重複。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
       20.
請敘述類與結構的區別。  1)、結構是值型別;
  2)、結構不支援繼承;
  3)、結構不能定義預設的建構函式;
  4)、結構不能定義解構函式;
  5)、結構不能使用初始值設定域值。
========================================================================================================
asp.net面試集合
答:儘可能用約束(包括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#中的介面和類有什麼異同。 答   介面只能包含抽象方法,不能包含任何方法實現,不能建立介面例項,介面成員沒有訪問修飾符,介面成員必須是方法屬性事件或者索引器不能包含常數字段運算子也不能有靜態成員