熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET面試題及答案

2013-11-13 10:10:46  來源: .NET編程 

   簡述 private protected public internal 修飾符的訪問權限
    答 private :   私有成員 在類的內部才可以訪問
    protected : 保護成員該類內部和繼承類中可以訪問
    public :    公共成員完全公開沒有訪問限制
    internal:   在同一命名空間內可以訪問
    列舉ASPNET 頁面之間傳遞值的幾種方式
    答 使用QueryString  如…?id=; response Redirect()…
    使用Session變量
    使用ServerTransfer
    一列數的規則如下 ……  求第位數是多少 用遞歸算法實現
    答public class MainClass
    {
    public static void Main()
    {
    ConsoleWriteLine(Foo())
    }
    public static int Foo(int i)
    {
    if (i <=
    return ;
    else if(i > && i <=
    return ;
    else return Foo(i ) + Foo(i
    }
    }
    C#中的委托是什麼?事件是不是一種委托?
    答 :
    委托可以把一個方法作為參數代入另一個方法
    委托可以理解為指向一個函數的引用
    是是一種特殊的委托
    override與重載的區別
    答 :
    override 與重載的區別重載是方法的名稱相同參數或參數類型不同進行多次重載以適應不同的需要
    Override 是進行基類中函數的重寫為了適應需要
    如果在一個B/S結構的系統中需要傳遞變量值但是又不能使用SessionCookieApplication您有幾種方法進行處理?
    答 :
    thisServerTransfer
    請編程遍歷頁面上所有TextBox控件並給它賦值為stringEmpty?
    答
    foreach (SystemWindowsFormsControl control in thisControls)
    {
    if (control is SystemWindowsFormsTextBox)
    {
    SystemWindowsFormsTextBox tb = (SystemWindowsFormsTextBox)control ;
    tbText = StringEmpty ;
    }
    }
    請編程實現一個冒泡排序算法?
    答
    int [] array = new int [*] ;
    int temp = ;
    for (int i = ; i < arrayLength ; i++)
    {
    for (int j = i + ; j < arrayLength ; j++)
    {
    if (array[j] < array[i])
    {
    temp = array[i] ;
    array[i] = array[j] ;
    array[j] = temp ;
    }
    }
    }
    描述一下C#中索引器的實現過程是否只能根據數字進行索引?
    答不是可以用任意類型
    求以下表達式的值寫出您想到的一種或幾種實現方法 ++……+m
    答
    int Num = ConvertToInt(thisTextBoxText)
    int Sum = ;
    for (int i = ; i < Num + ; i++)
    {
    if((i%) ==
    {
    Sum += i ;
    }
    else
    {
    Sum = Sum  I ;
    }
    }
    SystemConsoleWriteLine(SumToString())
    SystemConsoleReadLine() ;

  net做B/S結構的系統您是用幾層結構來開發每一層之間的關系以及為什麼要這樣分層?
    答一般為
    數據訪問層業務層表示層
    數據訪問層對數據庫進行增刪查改
    業務層一般分為二層業務表觀層實現與表示層的溝通業務規則層實現用戶密碼的安全等
    表示層為了與用戶交互例如用戶添加表單
    優點  分工明確條理清晰易於調試而且具有可擴展性
    缺點  增加成本
    在下面的例子裡
    using System;
    class A
    {
    public A()
    {
    PrintFields()
    }
    public virtual void PrintFields(){}
    }
    class B:A
    {
    int x=;
    int y;
    public B()
    {
    y=;
    }
    public override void PrintFields()
    {
    ConsoleWriteLine(x={}y={}xy)
    }
    當使用new B()創建B的實例時產生什麼輸出?
    答X=Y=;x= y =
    什麼叫應用程序域?
    答應用程序域可以理解為一種輕量級進程起到安全的作用占用資源小
    CTSCLSCLR分別作何解釋?
    答CTS:通用語言系統CLS:通用語言規范CLR:公共語言運行庫
    什麼是裝箱和拆箱?
    答從值類型接口轉換到引用類型裝箱從引用類型轉換到值類型拆箱
    什麼是受管制的代碼?
    答unsafe:非托管代碼不經過CLR運行
    什麼是強類型系統?
    答RTTI:類型識別系統
    中讀寫數據庫需要用到那些類?他們的作用?
    答DataSet:數據存儲器
    DataCommand:執行語句命令
    DataAdapter:數據的集合用語填充
    的身份驗證方式有哪些?分別是什麼原理?
    答Windwos(默認)用IIS…From(窗體)用帳戶…Passport(密鑰)
    什麼是CodeBehind技術?
    答代碼後植
    net中配件的意思是?
    答程序集(中間語言源數據資源裝配清單)
    常用的調用WebService的方法有哪些?
    答使用WSDLexe命令行工具
    使用VSNET中的Add Web Reference菜單選項
    net Remoting 的工作原理是什麼?
    答服務器端向客戶端發送一個進程編號一個程序域編號以確定對象的位置
    在C#中string str = null 與 string str = 請盡量使用文字或圖象說明其中的區別
    答string str = null 是不給他分配內存空間而string str = 給它分配長度為空字符串的內存空間
    請詳述在dotnet中類(class)與結構(struct)的異同?
    答Class可以被實例化屬於引用類型是分配在內存的堆上的Struct屬於值類型是分配在內存的棧上的
    根據委托(delegate)的知識請完成以下用戶控件中代碼片段的填寫
    namespace test
    {
    public delegate void OnDBOperate()
    public class UserControlBase : SystemWindowsFormsUserControl
    {
    public event OnDBOperate OnNew;
    privatevoidtoolBar_ButtonClick(objectsenderSystemWindowsFormsToolBarButtonClickEventArgs e)
    {
    if(eButtonEquals(BtnNew))
    {
    //請在以下補齊代碼用來調用OnDBOperate委托簽名的OnNew事件
    }
    }
    }
    答if( OnNew != null )
    OnNew( this e )
    分析以下代碼完成填空
    string strTmp = abcdefg某某某;
    int i= SystemTextEncodingDefaultGetBytes(strTmp)Length;
    int j= strTmpLength;
    以上代碼執行完後i= j=
    答i=j=
    SQLSERVER服務器中給定表 table 中有兩個字段 IDLastUpdateDateID表示更新的事務號 LastUpdateDate表示更新時的服務器時間請使用一句SQL語句獲得最後更新的事務號
    答Select ID FROM table Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table
    根據線程安全的相關知識分析以下代碼當調用test方法時i>時是否會引起死鎖?並簡要說明理由
    public void test(int i)
    {
    lock(this)
    {
    if (i>
    {
    i;
    test(i)
    }
    }
    }
    答不會發生死鎖(但有一點int是按值傳遞的所以每次改變的都只是一個副本因此不會出現死鎖但如果把int換做一個object那麼死鎖會發生)
    簡要談一下您對微軟NET 構架下remoting和webservice兩項技術的理解以及實際中的應用
    答WS主要是可利用HTTP穿透防火牆而Remoting可以利用TCP/IP二進制傳送提高效率
    公司要求開發一個繼承SystemWindowsFormsListView類的組件要求達到以下的特殊功能點擊ListView各列列頭時能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)根據您的知識請簡要談一下您的思路
    答根據點擊的列頭包該列的ID取出按照該ID排序後在給綁定到ListView中
    給定以下XML文件完成算法流程圖
    <FileSystem>
    < DriverC >
    <Dir DirName=MSDOS>
    <File FileName = ></File>
    </Dir>
    <File FileName =MSDOSSYS ></File>
    <File FileName = IOSYS ></File>
    </DriverC>
    </FileSystem>
    請畫出遍歷所有文件名(FileName)的流程圖(請使用遞歸算法)
    答
    void FindFile( Directory d )
    {
    FileOrFolders = dGetFileOrFolders()
    foreach( FileOrFolder fof in FileOrFolders )
    {
    if( fof is File )
    You Found a file;
    else if ( fof is Directory )
    FindFile( fof )
    }
    }
    寫出一條Sql語句取出表A中第到第記錄(SQLServer以自動增長的ID作為主鍵注意ID可能不是連續的
    答:  select top * from A where id not in (select top id from A)
    解:  select top * from A where id > (select max(id) from (select top id from A )as A)
    面向對象的語言具有________性_________性________性
    答封裝繼承多態
    能用foreach遍歷訪問的對象需要實現 ________________接口或聲明________________方法的類型
    答IEnumerable GetEnumerator
    GC是什麼? 為什麼要有GC?
    答GC是垃圾收集器程序員不用擔心內存管理因為垃圾收集器會自動進行管理要請求垃圾收集可以調用下面的方法之一
    Systemgc()
    RuntimegetRuntime()gc()
    String s = new String(xyz創建了幾個String Object?
    答兩個對象一個是xyx一個是指向xyx的引用對象s
    abstract class和interface有什麼區別?
    答
    聲明方法的存在而不去實現它的類被叫做抽象類(abstract class)它用於要創建一個體現某些基本行為的類並為該類聲明方法但不能在該類中實現該類的情況不能創建abstract 類的實例然而可以創建一個變量其類型是一個抽象類並讓它指向具體子類的一個實例不能有抽象構造函數或抽象靜態方法Abstract 類的子類為它們父類中的所有抽象方法提供實現否則它們也是抽象類為取而代之在子類中實現該方法知道其行為的其它類可以在類中實現這些方法
    接口(interface)是抽象類的變體在接口中所有方法都是抽象的多繼承性可通過實現這樣的接口而獲得接口中的所有方法都是抽象的沒有一個有程序體接口只可以定義static final成員變量接口的實現與子類相似除了該實現類不能從接口定義中繼承行為當類實現特殊接口時它定義(即將程序體給予)所有這種接口的方法然後它可以在實現了該接口的類的任何對象上調用接口的方法由於有抽象類它允許使用接口名作為引用變量的類型通常的動態聯編將生效引用可以轉換到接口類型或從接口類型轉換instanceof 運算符可以用來決定某對象的類是否實現了接口

  啟動一個線程是用run()還是start()?
    答啟動一個線程是調用start()方法使線程所代表的虛擬處理機處於可運行狀態這意味著它可以由JVM調度並執行這並不意味著線程就會立即運行run()方法可以產生必須退出的標志來停止一個線程
    接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
    答接口可以繼承接口抽象類可以實現(implements)接口抽象類是否可繼承實體類但前提是實體類必須有明確的構造函數
    構造器Constructor是否可被override?
    答構造器Constructor不能被繼承因此不能重寫Overriding但可以被重載Overloading
    是否可以繼承String類?
    答String類是final類故不可以繼承
    try {}裡有一個return語句那麼緊跟在這個try後的finally {}裡的code會不會被執行什麼時候被執行在return前還是後?
    答會執行在return前執行
    兩個對象值相同(xequals(y) == true)但卻可有不同的hash code這句話對不對?
    答不對有相同的hash code
    swtich是否能作用在byte上是否能作用在long上是否能作用在String上?
    答switch(expr)中expr是一個整數表達式因此傳遞給 switch 和 case 語句的參數應該是 int short char 或者 bytelongstring 都不能作用於swtich
    當一個線程進入一個對象的一個synchronized方法後其它線程是否可進入此對象的其它方法?
    不能一個對象的一個synchronized方法只能由一個線程訪問
    abstract的method是否可同時是static是否可同時是native是否可同時是synchronized?
    答都不能
    List Set Map是否繼承自Collection接口?
    答ListSet是Map不是
    Set裡的元素是不能重復的那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
    答Set裡的元素是不能重復的那麼用iterator()方法來區分重復與否equals()是判讀兩個Set是否相等
    equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋為的是當兩個分離的對象的內容和類型相配的話返回真值
    數組有沒有length()這個方法? String有沒有length()這個方法?
    答數組沒有length()這個方法有length的屬性String有有length()這個方法
    sleep() 和 wait() 有什麼區別?
    答sleep()方法是使線程停止一段時間的方法在sleep 時間間隔期滿後線程不一定立即恢復執行這是因為在那個時刻其它線程可能正在運行而且沒有被調度為放棄執行除非(a)醒來的線程具有更高的優先級
    (b)正在運行的線程因為其它原因而阻塞
    wait()是線程交互時如果線程對一個同步對象x 發出一個wait()調用該線程會暫停執行被調對象進入等待狀態直到被喚醒或等待時間到
    short s = ; s = s + ;有什麼錯? short s = ; s += ;有什麼錯?
    答short s = ; s = s + ;有錯s是short型s+是int型不能顯式轉化為short型可修改為s =(short)(s + short s = ; s += 正確
    談談final finally finalize的區別
    答
    final修飾符(關鍵字)如果一個類被聲明為final意味著它不能再派生出新的子類不能作為父類被繼承因此     一個類不能既被聲明為 abstract的又被聲明為final的將變量或方法聲明為final可以保證它們在使用中     不被改變被聲明為final的變量必須在聲明時給定初值而在以後的引用中只能讀取不可修改被聲明為     final的方法也同樣只能使用不能重載
    finally再異常處理時提供 finally 塊來執行任何清除操作如果拋出一個異常那麼相匹配的 catch 子句就會     執行然後控制就會進入 finally 塊(如果有的話)
    finalize方法名Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理     工作這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的它是在 Object 類中定義的     因此所有的類都繼承了它子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作finalize()      方法是在垃圾收集器刪除對象之前對這個對象調用的
    如何處理幾十萬條並發數據?
    答用存儲過程或事務取得最大標識的時候同時更新注意主鍵不是自增量方式這種方法並發的時候是不會有重復主鍵的取得最大標識要有一個存儲過程來獲取
    Session有什麼重大BUG微軟提出了什麼方法加以解決?
    答是iis中由於有進程回收機制系統繁忙的話Session會丟失可以用Sate   server或SQL   Server數據庫的方式存儲Session不過這種方式比較慢而且無法捕獲Session的END事件
    進程和線程的區別?
    答進程是系統進行資源分配和調度的單位線程是CPU調度和分派的單位一個進程可以有多個線程這些線程共享這個進程的資源
    堆和棧的區別?
    答
    棧由編譯器自動分配釋放在函數體中定義的變量通常在棧上
    堆一般由程序員分配釋放用newmalloc等分配內存函數分配得到的就是在堆上
    成員變量和成員函數前加static的作用?
    答它們被稱為常成員變量和常成員函數又稱為類成員變量和類成員函數分別用來反映類的狀態比如類成員變量可以用來統計類實例的數量類成員函數負責這種統計的動作
    ASPNET與ASP相比主要有哪些進步?
    答asp解釋形aspx編譯型性能提高有利於保護源碼
    產生一個int數組長度為並向其中隨機插入並且不能重復
    int[] intArr=new int[];
    ArrayList myList=new ArrayList()
    Random rnd=new Random()
    while(myListCount<
    {
    int num=rndNext(
    if(!myListContains(num))
    myListAdd(num)
    }
    for(int i=;i<;i++)
    intArr[i]=(int)myList[i];


From:http://tw.wingwit.com/Article/program/net/201311/12807.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.