• 當前位置:好職網>職場指南>筆試>net筆試題

    net筆試題

    時間:2019-11-05 12:02:02 筆試 我要投稿

    net筆試題

    1. 填空: (1)面向對象的語言具有________性、_________性、________性。
    (2)能用foreach遍歷訪問的對象需要實現 ________________接口或聲明________________方法的類型。
    (3)列舉ADO.net中的五個主要對象_______________、_____________、_______________、_______________、_________________。

    2. 不定項選擇:
    (1) 以下敘述正確的是:
    A. 接口中可以有虛方法。 B. 一個類可以實現多個接口。
    C. 接口不能被實例化。 D. 接口中可以包含已實現的方法。
    (2) 從數據庫讀取記錄,你可能用到的方法有:
    A. ExecuteNonQuery B. ExecuteScalar
    C. Fill D. ExecuteReader
    3. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。

    4. 寫出一條Sql語句: 取出表A中第31到第40記錄(SQLServer, 以自動增長的ID作為主鍵,注意:ID可能不是連續的。)

    5 .列舉ASp.NET 頁面之間傳遞值的幾種方式。

    6. 寫出程序的輸出結果
    class Class1{
    private string str = \"Class1.str\";
    private int i = 0;
    static void StringConvert(string str){
    str = \"string being converted.\";
    }
    static void StringConvert(Class1 c){
    c.str = \"string being converted.\";
    }
    static void Add(int i){
    i++;
    }
    static void AddWithRef(ref int i){
    i++;
    }
    static void Main(){
    int i1 = 10;
    int i2 = 20;
    string str = \"str\";
    Class1 c = new Class1();
    Add(i1);
    AddWithRef(ref i2);
    Add(c.i);
    StringConvert(str);
    StringConvert(c);
    Console.WriteLine(i1);
    Console.WriteLine(i2);
    Console.WriteLine(c.i);
    Console.WriteLine(str);
    Console.WriteLine(c.str);
    }
    }

    7.寫出程序的輸出結果
    public abstract class A
    {
    public A()
    {
    Console.WriteLine(\A\);
    }
    public virtual void Fun()
    {
    Console.WriteLine(\"A.Fun()\");
    }
    }
    public class B: A
    {
    public B()
    {
    Console.WriteLine(\B\);
    }
    public new void Fun()
    {
    Console.WriteLine(\"B.Fun()\");
    }
    public static void Main()
    {
    A a = new B();
    a.Fun();
    }
    }

    8. 寫出程序的輸出結果:
    public class A
    {
    public virtual void Fun1(int i)
    {
    Console.WriteLine(i);
    }
    public void Fun2(A a)
    {
    a.Fun1(1);
    Fun1(5);
    }
    }

    public class B : A
    {
    public override void Fun1(int i)
    {
    base.Fun1 (i + 1);
    }
    public static void Main()
    {
    B b = new B();
    A a = new A();
    a.Fun2(b);
    b.Fun2(a);
    }
    }

    9. 一列數的規則如下: 1、1、2、3、5、8、13、21、34......
    求第30位數是多少, 用遞歸算法實現。(C#語言)

    10.程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)
    要求:1.要有聯動性,老鼠和主人的行為是被動的。
    2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。

    參考答案:
    1. (1)繼承性、封裝性、多態性。(考基本概念)
    (2)IEnumerable 、 GetEnumerator (對foreach機制的理解,本來不想出這題的,湊分)
    (3)... (送分題, 對ADO.net的了解)
    評分標準:一空1分,滿分10分。

    2. (1) B、C (考對接口的理解)(2)B、C、D (考查對ADO.net的熟練程度)
    評分標準: 一題5分,不選或者錯選均不得分。漏選得2分。滿分10分。

    3. . private : 私有成員, 在類的內部才可以訪問。
    protected : 保護成員,該類內部和繼承類中可以訪問。
    public : 公共成員,完全公開,沒有訪問限制。
    internal: 在同一命名空間內可以訪問。
    評分標準:答對1題2分,2題5分,3題7分。全對10分。 (送分題)

    4.解1: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)
    評分標準: 寫對即10分。(答案不唯一,datagrid 分頁可能需要用到)

    5.1.使用QueryString,如....?id=1; response. Redirect()....
    2.使用Session變量
    3.使用Server.Transfer
    ....等等
    評分標準: 答對1點得3分, 兩點7分, 3點10分。

    6.(考查值引用和對象引用)
    10
    21
    0
    str
    string being converted.
    評分標準:答對一點得2分,滿分10分。

    7.A
    B
    A.Fun()
    評分標準: 寫出A.B 得5分,寫出A.Fun()得5分,滿分10分。
    (考查在繼承類中構造函數, 以及new 方法, )


    8.2
    5
    1
    6
    評分標準: 答對一點得2分,兩點得5分,3點得7分。全對得10分。
    (一些人做這題,頭都暈了.... ^_^ )

    9.
    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);
    }
    }
    評分標準: 寫出return Foo(i -1) + Foo(i - 2); 得5分。
    寫出if(i > 0 && i <= 2) return 1; 得5分。
    方法參數過多需要扣分(扣除分數 = 參數個數 - 1)
    不用遞歸算法扣5分
    (遞歸算法在樹結構建立等方面比較常用)

    10
    要點:1. 聯動效果,運行代碼只要執行Cat.Cryed()方法。2. 對老鼠和主人進行抽象
    評分標準: <1>.構造出Cat、Mouse、Master三個類,并能使程序運行(2分)
    <2>從Mouse和Master中提取抽象(5分)
    <3>聯動效應,只要執行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。(3分)

    public interface Observer
    {
    void Response(); //觀察者的響應,如是老鼠見到貓的反映
    }
    public interface Subject
    {
    void AimAt(Observer obs);//針對哪些觀察者,這里指貓的要撲捉的對象---老鼠
    }
    public class Mouse : Observer
    {
    private string name;
    public Mouse(string name, Subject subj)
    {
    this.name = name;
    subj.AimAt(this);
    }

    public void Response()
    {
    Console.WriteLine(name + \" attempt to escape!\");
    }
    }
    public class Master : Observer
    {
    public Master(Subject subj)
    {
    subj.AimAt(this);
    }

    public void Response()
    {
    Console.WriteLine(\"Host waken!\");
    }
    }

    public class Cat : Subject
    {
    private ArrayList observers;
    public Cat()
    {
    this.observers = new ArrayList();
    }
    public void AimAt(Observer obs)
    {
    this.observers.Add(obs);
    }
    public void Cry()
    {
    Console.WriteLine(\"Cat cryed!\");
    foreach (Observer obs in this.observers)
    {
    obs.Response();
    }
    }
    }
    class MainClass
    {
    static void Main(string[] args)
    {
    Cat cat = new Cat();
    Mouse mouse1 = new Mouse(\"mouse1\", cat);
    Mouse mouse2 = new Mouse(\"mouse2\", cat);
    Master master = new Master(cat);
    cat.Cry();
    }
    }

    //---------------------------------------------------------------------------------------------
    設計方法二: 使用event -- delegate設計..
    public delegate void SubEventHandler();
    public abstract class Subject
    {
    public event SubEventHandler SubEvent;
    protected void FireAway()
    {
    if (this.SubEvent != null)
    this.SubEvent();
    }
    }
    public class Cat : Subject
    {
    public void Cry()
    {
    Console.WriteLine(\"cat cryed.\");
    this.FireAway();
    }
    }
    public abstract class Observer
    {
    public Observer(Subject sub)
    {
    sub.SubEvent += new SubEventHandler(Response);
    }
    public abstract void Response();
    }
    public class Mouse : Observer
    {
    private string name;
    public Mouse(string name, Subject sub) : base(sub)
    {
    this.name = name;
    }
    public override void Response()
    {
    Console.WriteLine(name + \" attempt to escape!\");
    }
    }
    public class Master : Observer
    {
    public Master(Subject sub) : base(sub){}
    public override void Response()
    {
    Console.WriteLine(\"host waken\");
    }
    }
    class Class1
    {
    static void Main(string[] args)
    {
    Cat cat = new Cat();
    Mouse mouse1 = new Mouse(\"mouse1\", cat);
    Mouse mouse2 = new Mouse(\"mouse2\", cat);
    Master master = new Master(cat);
    cat.Cry();
    }
    }

    1. C#中 property 與 attribute的區別,他們各有什么用處,這種機制的好處在哪里?
    2. 講一講你理解的web service,在dot net framework中,怎么很好的結合xml?(講概念就行了)
    3. C#, Java 和 c++的特點,有什么相同的地方,不同的地方,C#分別從c++和java中吸取了他們那些優點?
    4. C#可否對內存進行直接的操作?(這可是個難點哦?要注意。
    5. 用Visual C++ 6.0編寫的代碼(unmanaged code),如何在CLR下和其他dot net component結合?
    6. 以前作過的一些項目?介紹一下自己的編程經驗。(這是蒙混不過去的,基本一問就知道是真是假)
    7. 你對公司有什么期望?你的薪水期望值?為什么學計算機?以前的工作經驗(這非常重要)?


    Q3: 維護數據庫的完整性、一致性、你喜歡用觸發器還是自寫業務邏輯?為什么
    Q4:ADO。NET相對于ADO等主要有什么改進?
    Q5:ASp。NET與ASp相比,主要有哪些進步?
    Q6:C#中的委托是什么?事件是不是一種委托?
    Q7:描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
    Q8:C#中要使一個類支持FOREACH遍歷,實現過程怎樣?
    Q10:寫一個HTML頁面,實現以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。并在2分鐘后自動關閉頁面。
    Q11:你對XMLHTTp、WEBSERVICE 了解嗎?簡單描述其特點、作用
    Q12:接口和抽象類有什么區別?你選擇使用接口和抽象類的依據是什么?
    Q13:自定義控件和一般用戶控件的異同?如果要用這兩者之一,你會選擇哪種?為什么
    Q14:大概描述一下ASp。NET服務器控件的生命周期
    Q15:UML
    Q16:面向對象的概念,主要特點
    Q17:類劃分的依據。類粒度問題
    Q18:事物管理問題


    第一,談談final, finally, finalize的區別。
    第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?
    第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
    第四,&和&&的區別。
    第五,HashMap和Hashtable的區別。
    第六,Collection 和 Collections的區別。
    第七,什么時候用assert。
    第八,GC是什么? 為什么要有GC?
    第九,String s = new String(\"xyz\");創建了幾個String Object?
    第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
    第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
    第十二,sleep() 和 wait() 有什么區別?
    第十三,Java有沒有goto?
    第十四,數組有沒有length()這個方法? String有沒有length()這個方法?
    第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
    第十六,Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
    第十七,給我一個你最常見到的runtime exception。
    第十八,error和exception有什么區別?
    第十九,List, Set, Map是否繼承自Collection接口?
    第二十,abstract class和interface有什么區別?
    第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
    第二十二,接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
    第二十三,啟動一個線程是用run()還是start()?
    第二十四,構造器Constructor是否可被override?
    第二十五,是否可以繼承String類?
    第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
    第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
    第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
    第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
    第三十,當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?
    第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    第三十二,編程題: 寫一個Singleton出來。


    數據庫方面:


    1.存儲過程和函數的區別
    2.事務是什么?
    3.游標的作用?如何知道游標已經到了最后?
    4.觸發器分為事前觸發和事后觸發,這兩種觸發有和區別。語句級觸發和行級觸發有何區別。


    1。用C#實現以下功能

    a 產生一個int數組,長度為100,并向其中隨機插入1-100,并且不能重復。

    b 對上面生成的數組排序,需要支持升序、降序兩種順序
    2。請說明在.net中常用的幾種頁面間傳遞參數的方法,并說出他們的優缺點。
    3。請說明.net中的錯誤處理機制,并舉例
    4。請說出強名的含義
    5。請列出c#中幾種循環的方法,并指出他們的不同
    6。請指出.net中所有類型的基類
    7。請指出GAC的含義
    8。SQL SREVER中,向一個表中插入了新數據,如何快捷的得到自增量字段的當前值


    您在什么情況下會用到虛方法?它與接口有什么不同?
    Q:Override與重載有什么區別?
    Q:值類型與引用類型有什么區別?
    Q:怎樣理解靜態變量?
    Q:向服務器發送請求有幾種方式?
    Q:DataReader與Dataset有什么區別?
    Q:如果在一個B/S結構的系統中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
    Q:用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關系以及為什么要這樣分層?
    Q:軟件開發過程一般有幾個階段?每個階段的作用?
    Q:微軟推出了一系列的Application Block,請舉出您所知道的Application Block并說明其作用?
    Q:請列舉一些您用到過的設計模式以及在什么情況下使用該模式?
    Q:您對WebService的體會?
    Q:您對編程的興趣如何?工作中遇到不懂的問題是怎樣去解決的?您一般怎樣去提高自己的編程水平?
    Q:您離職的原因是什么?
    Q:通過超鏈接怎樣傳遞中文參數?
    Q:請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty?
    Q:請編程實現一個冒泡排序算法?


    1、override與重載的區別
    2、.net的錯誤處理機制是什么
    3、C#中接口和類的異同
    4、DataReader和DataSet的異同


    1.有哪幾種方法可以實現一個類存取另外一個類的成員函數及屬性,并請舉列來加以說明和分析.
    2.如果需記錄類的實例個數,該如何實現,請寫一個簡單的類于以證明.
    3.A類是B類的基類,并且都有自己的構造,析構函數,請舉例證明B類從實例化到消亡過程中構造,析構函數的執行過程.
    4.需要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續空格的話,僅保留一個空格,即允許字符串中間有多個空格,但連續的空格數不可超過一個.


    一.填空題
    1.c#中的三元運算符是__?:___?
    2.當整數a賦值給一個object對象時,整數a將會被__裝箱(封裝)___?
    3.類成員有_____種可訪問形式?
    this.;new Class().Method;
    4.public static const int A=1;這段代碼有錯誤么?是什么?
    const不能用static修飾
    5.float f=-123.567F;

    int i=(int)f;
    i的值現在是_____?
    123

    6.利用operator聲明且僅聲明了“==”,有什么錯誤么?

    7.委托聲明的關鍵字是______? delagete
    8.用sealed修飾的類有什么特點?密封,不能繼承
    9.在Asp.net中所有的自定義用戶控件都必須繼承自________?Control
    10.在.Net中所有可序列化的類都被標記為_____?

    11.在.Net托管代碼中我們不用擔心內存漏洞,這是因為有了______?gc
    12.下面的代碼中有什么錯誤嗎?_______

    using System;

    class A

    {

    public virtual void F(){

    Console.WriteLine(\"A.F\");

    }

    }

    abstract class B:A

    {

    public abstract override void F(); // new public abstract void F();



    }


    13.當類T只聲明了私有實例構造函數時,則在T的程序文本外部,___可以___(可以 or 不可以)從T派生出新的類,不可以____(可以 or 不可以)直接創建T的任何實例。
    14.下面這段代碼有錯誤么?

    switch (i){

    case():

    CaseZero();

    break;

    case 1:

    CaseOne();

    break;

    case 2:

    dufau<
    //wrong


    CaseTwo();

    break;

    }
    15.在.Net中,類System.Web.UI.page 可以被繼承么?可以


    二.簡答題
    1.在c#中using和new這兩個關鍵字有什么意義,請寫出你所知道的意義?using 指令 和語句 new 創建實例 new 隱藏基類中方法
    4.談談類和結構的區別?類是引用類型、結構是值類型
    5.一個長度為10000的字符串,通過隨機從a-z中抽取10000個字符組成。請用c#語言編寫主要程序來實現。
    6.對于這樣的一個枚舉類型:

    enum Color:byte{

    Red,

    Green,

    Blue,

    Orange

    }

    string[] ss=Enum.GetNames(typeof(Color));

    byte[]
    bb=Enum.GetValues(typeof(Color));
    試寫一段程序顯示出枚舉類型中定義的所有符號名稱以及它們對應的數值。
    7.您了解設計模式么?請列出您所知道的設計模式的名稱。 //
    8.請在SQL Server中設計表來保存一個樹狀結構的組織結構圖(假設結構圖中只有名稱這一項內容需要保存),如果我想查詢某一職位下的所有職位,用一個存儲過程來實現,你有什么思路?
    9.什么叫做SQL注入,如何防止?請舉例說明。
    10.下面這段代碼輸出什么?為什么?

    int i=5;

    int j=5;

    if (Object.ReferenceEquals(i,j))

    Console.WriteLine(\"Equal\");

    else


    Console.WriteLine(\"Not Equal\");
    //不相等,因為比較的是對象


    1.寫一個實現對一段字符串翻轉的方法,附加一些條件,如其中包括“,”、“.”,對其設計測試用 例 。
    2.對一支紙杯設計測試用例(可以是廣義的杯,不一定是某一支特定功能的杯)
    開發語言概念題
    3.什么是反射?
    4.用Singleton如何寫設計模式
    5.C#中的垃圾回收機制是怎樣的?
    6.什么是Application pool?
    7.鏈表和數組的區別,各有什么優缺點.
    8.Remoting在客戶端服務器怎么實現 ?
    9.什么是友元函數?
    10.用標準C如何實現多態?
    11.什么是虛函數?
    12.什么是抽象函數?
    13.什么是內存泄漏,怎樣最簡單的方法判斷被存泄漏 ?


    英語題
    14.用英文介紹一下使用C#/C++做的項目,主要功能
    15.如果要與美國開電話會議,會如何與美國的工程師溝通
    16.如果老板認為你的技術落后,你會怎么回答

    數據庫知識題
    17.使用什么工具來調用存儲過程
    18.SQL Server的兩種索引是何形式?索引的作用?索引的優缺點?
    19.觸發器的作用

    其它知識題及問題
    20.什么是Web Service?
    21.什么是XML?
    22.Socket怎么實現?


    原文地址:【.NET面試題】C#系列2

    【.NET面試題】C#系列2 (轉載)
    2008-07-13 11:23

    值類型和引用類型的區別?

    net筆試題

    答:基于值類型的變量直接包含值。將一個值類型變量賦給另一個值類型變量時,將復制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復制對對象的引用,而不復制對象本身。所有的值類型均隱式派生自 System.ValueType。與引用類型不同,從值類型不可能派生出新的類型。但與引用類型相同的是,結構也可以實現接口。與引用類型不同,值類型不可能包含 null 值。然而,可空類型功能允許將 null 賦給值類型。 每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。

    值類型主要由兩類組成:結構、枚舉

    結構分為以下幾類:Numeric(數值)類型、整型、浮點型、decimal、bool、用戶定義的結構。

    引用類型的變量又稱為對象,可存儲對實際數據的引用。聲明引用類型的關鍵字:class、interface、delegate、內置引用類型: object、string

    如何理解委托

    答:委托類似于 C++ 函數指針,但它是類型安全的。委托允許將方法作為參數進行傳遞。委托可用于定義回調方法。委托可以鏈接在一起;例如,可以對一個事件調用多個方法。方法不需要與委托簽名精確匹配。有關更多信息,請參見協變和逆變。C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。

    C#中的接口和類有什么異同。

    答:異:不能直接實例化接口。接口不包含方法的實現。接口、類和結構可從多個接口繼承。但是C# 只支持單繼承:類只能從一個基類繼承實現。類定義可在不同的源文件之間進行拆分。

    同:接口、類和結構可從多個接口繼承。接口類似于抽象基類:繼承接口的任何非抽象類型都必須實現接口的所有成員。接口可以包含事件、索引器、方法和屬性。一個類可以實現多個接口。

    ASp.net的身份驗證方式有哪些

    答:Windows 身份驗證提供程序:

    提供有關如何將 Windows 身份驗證與 Microsoft Internet 信息服務 (IIS) 身份驗證結合使用來確保 ASp.NET 應用程序安全的信息。

    Forms 身份驗證提供程序:

    提供有關如何使用您自己的代碼創建應用程序特定的登錄窗體并執行身份驗證的信息。使用 Forms 身份驗證的一種簡便方法是使用 ASp.NET 成員資格和 ASp.NET 登錄控件,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據的方法。

    passport 身份驗證提供程序:

    提供有關由 Microsoft 提供的集中身份驗證服務的信息,該服務為成員站點提供單一登錄和核心配置

    活動目錄的作用

    答:Active Directory存儲了有關網絡對象的信息,并且讓管理員和用戶能夠輕松地查找和使用這些信息。Active Directory使用了一種結構化的數據存儲方式,并以此作為基礎對目錄信息進行合乎邏輯的分層組織。

    解釋一下UDDI、WSDL的意義及其作用

    答:UDDI:統一描述、發現和集成協議(UDDI, Universa Description, Discovery and Integration)是一套基于Web的、分布式的、為Web服務提供的信息注冊中心的實現標準規范,同時也包含一組使企業能將自身提供的Web服務注冊以使得別的企業能夠發現的訪問協議的實現標準。UDDI 提供了一組基于標準的規范用于描述和發現服務,還提供了一組基于因特網的實現。

    WSDL:WSDL描述Web服務的公共接口。這是一個基于XML的關于如何與Web服務通訊和使用的服務描述;

    服務 URL 和命名空間 :

    網絡服務的類型(可能還包括 SOAp 的函數調用,正像我所說過的,WSDL 足夠自如地去描述網絡服務的廣泛內容)。

    有效函數列表,每個函數的參數,每個參數的類型 ,每個函數的返回值及其數據類型。什么是SOAp

    答:SOAp(Simpe Object Access protoco )簡單對象訪問協議是在分散或分布式的環境中交換信息并執行遠程過程調用的協議,是一個基于XML的協議。使用SOAp,不用考慮任何特定的傳輸協議(最常用的還是HTTp協議),可以允許任何類型的'對象或代碼,在任何平臺上,以任何一直語言相互通信。

    SOAp 是一種輕量級協議,用于在分散型、分布式環境中交換結構化信息。 SOAp 利用 XML 技術定義一種可擴展的消息處理框架,它提供了一種可通過多種底層協議進行交換的消息結構。這種框架的設計思想是要獨立于任何一種特定的編程模型和其他特定實現的語義。

    SOAp 定義了一種方法以便將 XML 消息從 A 點傳送到 B 點。為此,它提供了一種基于 XML且具有以下特性的消息處理框架:1) 可擴展,2) 可通過多種底層網絡協議使用,3) 獨立于編程模型。

    如何部署一個ASp.net頁面

    答:VS 2005和VS 2003都有發布機制。2003可以發布然后再復制部署。VS2005基本上可以直接部署到對應位置。

    如何理解.net中的垃圾回收機制

    答:.NET Framework 的垃圾回收器管理應用程序的內存分配和釋放。每次您使用 new 運算符創建對象時,運行庫都從托管堆為該對象分配內存。只要托管堆中有地址空間可用,運行庫就會繼續為新對象分配空間。但是,內存不是無限大的。最終,垃圾回收器必須執行回收以釋放一些內存。垃圾回收器優化引擎根據正在進行的分配情況確定執行回收的最佳時間。當垃圾回收器執行回收時,它檢查托管堆中不再被應用程序使用的對象并執行必要的操作來回收它們占用的內存。

    概述.NET中的GC機制。

    答:GC的全稱是garbage collection,中文名稱垃圾回收,是.NET中對內存管理的一種功能。垃圾回收器跟蹤并回收托管內存中分配的對象,定期執行垃圾回收以回收分配給沒有有效引用的對象的內存。當使用可用內存不能滿足內存請求時,GC會自動進行。

    在進行垃圾回收時,垃圾回收器會首先搜索內存中的托管對象,然后從托管代碼中搜索被引用的對象并標記為有效,接著釋放沒有被標記為有效的對象并收回內存,最后整理內存將有效對象挪動到一起

    ASp.NET中常見內置對象?

    答:Response、Request、Server、Session、Application、Cookie

    死鎖的必要條件?怎么克服?

    答:系統的資源不足,進程的推進的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,進程獲得資源時,未使用完前,不能強行剝奪。

    接口是否可以繼承接口?抽象類是否可以實現接口?抽象類是否可以繼承實體類?

    答:接口是可以繼承接口的,抽象類是可以實現接口的,抽象類可以繼承實體類,但是有個條件,條件是,實體類必須要有明確的構造函數。

    構造器Constructor是否可以被繼承?是否可以被Override?

    答:Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading).

    是否可以繼承String類?

    答:因為String類是final類所以不可以繼承string類。

    當一個線程進入一個對象的方法后,其它線程是否可以進入該對象的方法?

    答:不可以,一個對象的方法只能由一個線程訪問。

    用最有效的方法算出2乘以8等于幾?

    答:2<<3.

    C#是否可以對內存直接進行操作?

    答:C#是可以對內存進行直接操作的,雖然很少用到指針,但是C#是可以使用指針的,在用的時候需要在前邊加unsafe,,在.net中使用了垃圾回收機制(GC)功能,它替代了程序員,不過在C#中不可以直接使用finalize方法,而是在析構函數中調用基類的finalize()方法。

    數組有沒有Length()這和方法?string有沒有這個方法?

    答:數組中沒有這個方法,但有這個屬性,string中有這個方法。

    Error和Exception有是區別?

    答:error表示恢復不是不可能,但是很困難,exception表示一種實際或實現問題,它表示程序運行正常不可以發生的。

    HashMap和Hashtable區別?

    答:HashMap是Hashtable的輕量級實現,非線程安全的實現他們都實現了map接口,主要區別是HashMap鍵值可以為空null,效率可以高于Hashtable。

    Collection和Collections的區別?

    答:Collection是集合類的上級接口,Collections是針對集合類的一個幫助類,它提供一系列靜態方法來實現對各種集合的搜索,排序,線程安全化操作。

    Override, Overload,的區別?

    答:Override是重寫的意思,它表示重寫基類的方法,而且方法的名稱,返回類型,參數類型,參數個數要與基類相同。

    Overload是重載是意思,它也表示重寫基類的方法,但是只要方法名相同,別的可以不同。

    在一個BS結構中需要傳遞變量值時,不能使用session,cookie,application,你有幾中方法?

    答:this.server.Transfer,Querystring.

    C#種索引器實現過程,是否只能根據數字索引?

    答:不是的,可以是任意類型。

    Const和ReadOnly?

    答:Const用來申明編程時申明常量,ReadOnly用來申明運行時常量。

    UDp和TCp連接有和異同?

    答:TCp是傳輸控制協議,提供的是面向連接的,是可靠的,字節流服務,當用戶和服務器彼此進行數據交互的時候,必須在他們數據交互前要進行TCp連接之后才能傳輸數據。TCp提供超時重撥,檢驗數據功能。

    UDp是用戶數據報協議,是一個簡單的面向數據報的傳輸協議,是不可靠的連接。

    進程和線程分別該怎么理解?

    答:進程是比線程大的程序運行單元,都是由操作系統所體會的系統運行單元,一個程序中至少要有一個進程,有一個進程中,至少要有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內存單元,線程是共享內存,從而極大的提高了程序的運行效率同一個進程中的多個線程可以并發執行。

    在.NET中所有類的基類是?

    答:object。

    能用foreach遍歷訪問的對象需要實現?

    答:需要實現IEnumerable接口和GetEnumerator ()方法。

    Heap與stack的差別?

    答:Heap是堆,空間是由手動操作分配和釋放的,它的存儲區很大的自由存儲區。

    Stack是棧,是由是操作系統自動分配和釋放的,棧上的空間是有限的。程序在編譯期間變量和函數分配內存都是在棧上進行的,且在運行時函數調用時的參數的傳遞也是在棧上進行的。

    請編程遍歷頁面上所有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 ;

    }

    }



    原文地址:【.NET面試題】.NET牛人應該知道些什么?

    【.NET面試題】.NET牛人應該知道些什么?
    2008-07-13 11:32

    .NET牛人應該知道些什么?

    A、任何一個使用.NET的人

    1、描述線程與進程的區別?
    2、什么是Windows服務,它的生命周期與標準的EXE程序有什么不同 ?
    3、Windows上的單個進程所能訪問的最大內存量是多少?它與系統的最大虛擬內存一樣嗎?這對于系統設計有什么影響?
    4、EXE和DLL之間的區別是什么?
    5、什么是強類型,什么是弱類型?哪種更好些?為什么?
    6、pID是什么?在做系統的故障排除時如何使用它?
    7、單個TCp/Ip端口上能夠偵聽多少個進程?
    8、什么是GAC?它解決了什么問題?

    B、中級.NET開發人員

    1、闡述面向接口、面向對象、面向方面編程的區別
    2、什么是Interface?它與Class有什么區別?
    3、什么是反射?
    4、使用ASMX的XML Web服務與使用SOAp的.NET Remoting的區別?
    5、類型系統是由XMLSchema表示的嗎?CLS是XMLSchema表示的嗎?
    6、從概念上闡述前期綁定(early-binding)和后期綁定(late-binding)的區別?
    7、調用Assembly.Load算靜態引用還是動態引用?
    8、何時使用Assembly.LoadFrom?何時使用Assembly.LoadFile?
    9、什么叫Assembly Qualified Name?它是一個文件名嗎?它有什么不同? Assembly.Load(\"foo.dll\"); 這句話是否正確?
    10、做強簽名的assembly與不做強簽名的assembly有什么不同?
    11、DateTime是否可以為null?
    12、什么叫JIT?什么是NGEN?它們分別有什么限制和好處?
    13、.NET CLR中一代的垃圾收集器是如何管理對象的生命周期的?什么叫非確定性終結? Finalize()和Dispose()之間的區別?
    14、using() 語法有用嗎?什么是IDisposable?它是如何實現確定性終結的。
    15、tasklist /m \"mscor*\" 這句命令是干嘛的?
    16、in-proc和out-of-proc的區別 .NET里的哪一項技術能夠實現out-of-proc通訊?
    17、當你在ASp.NET中運行一個組件時,它在Windows Xp, Windows 2000, Windows 2003上分別跑在哪個進程里面?

    C、高級開發人員/架構師

    1、DateTime.parse(myString); 這行代碼有什么問題?
    2、pDB是什么東西? 在調試中它應該放在哪里?
    3、什么叫圈復雜度(cyclomatic complexity)?為什么它很重要?
    4、寫一個標準的lock(),在訪問變量的前后創建臨界區,要有\"雙重檢查\", 什么叫FullTrust?放入GAC的assembly是否是FullTrust的?
    代碼加上需要安全權限的特性有什么好處?
    5、gacutil /l &brvbar; find /i \"Corillian\" 這句命令的作用是什么? sn -t foo.dll 這句命令是干嘛的?
    6、DCOM需要防火墻打開哪些端口?端口135是干嘛用的?
    7、對比OOp和SOA,它們的目的分別是什么?
    8、XmlSerializer是如何工作的?使用這個類的進程需要什么ACL權限?
    9、為什么不提倡catch(Exception)? Debug.Write和Trace.Write有什么不同?何時應該使用哪一個? Debug Build和Release Build的區別,是否會有明顯的速度變化?請說明理由。
    10、JIT是以assembly為單位發生還是以方法為單位發生?這對于工作區有何影響?
    11、對比抽象基類和接口的使用 a.Equals(b)和a == b一樣嗎? 在對象比較中,對象一致和對象相等分別是指什么? 12、在.NET中如何實現深拷貝(deep copy)? 請解釋一下IClonable 什么叫裝箱?
    string是值類型還是引用類型?
    13、XmlSerializer使用的針對屬性的模式有什么好處?解決了什么問題?
    14、為什么不應該在.NET中使用out參數?它究竟好不好? 特性能夠放到某個方法的參數上?如果可以,這有什么用?

    D、C# 組件開發人員

    1、什么時候使用override?什么時候使用new? 什么叫shadowing?
    2、解釋virtual、sealed、override和abstract的區別 Foo.Bar, Version=2.0.205.0, Culture=neutral, publicKeyToken=593777ae2d274679d 解釋這個字符串每個部分的重要性和作用
    3、解釋public、protected、private和internal的區別 使用primary Interop Assembly (pIA)有什么好處?
    4、NUnit是通過什么機制獲知需要測試哪些方法的? 5、catch(Exception e){throw e;}和catch(Exception e){throw;}的區別
    6、typeof(foo)和myFoo.GetType()的區別?
    7、public class c{ public c(string a) : this() {;}; public c() {;} } 解釋第一個構造函數中發生了什么? 這個構造函數有什么用? 8、this是干嘛用的?能夠用在static方法中?


    E、ASp.NET (UI)開發人員

    1、闡述一個基于瀏覽器的Form pOST如何變成一個服務器端的事件,如Button1_OnClick。
    2、什么是postBack? 什么是ViewState? 它是否被編碼過? 是否被加密過?誰會使用ViewState?
    3、 <machinekey>元素是干嘛用的?它用于哪兩項ASp.NET技術?
    4、說出ASp.NET 1.1中的3種Session State提供程序以及它們的優缺點?
    5、什么叫Web Gardening? 在設計中如何使用它? 假設有一個ASp.NET應用程序,那么單獨一個進程中允許多少應用程序對象?那兩個進程呢?啟用了Web Gardening的2個進程呢?這對設計有何影響?
    6、ASp.NET會重用多個請求之間的線程嗎?是否每個HttpRequest都有自己的線程?
    7、你是否應該用ASp.NET的Thread Local存儲? [ThreadStatic]屬性在ASp.NET中有用嗎?它有沒有副作用?是好是壞?
    8、如何使用HttpHandler簡化現有的為.aspx頁面提供驗證圖片的設計 HttpModule訂閱的是什么類型的事件? 這對于實現有何影響?如果不打算重新編譯ASp.NE應用程序,應該怎么做?
    9、說出表示任意一個終端(URL)的方式,以及ASp.NET中把請求路由到那個終點的方式 解釋cookie的工作原理。給出一個濫用Cookie的例子。 10、解釋HttpRequest.ValidateInput()的重要性? 哪些數據是通過HTTp Header傳遞的? 對比HTTp動詞GET和pOST?
    11、什么是HEAD? 說出至少6個HTTp狀態碼以及它們的含義
    12、if-not-modified-since的工作原理是什么? 用ASp.NET如何實現它?
    13、解釋 <@OutputCache%>和如何使用VaryByparam、VaryByHeader. VaryByCustom是如何工作的?
    14、如何通過q=? (除了q=5)來實現ASp.NET HTML輸出緩沖和緩沖過期(比如http://localhost/page.aspx?q=5)?

    F、XML開發人員

    1、XML命名空間的作用? 何時適合使用DOM?何時不適合?有沒有尺度限制? 什么是WS-I基本配置?它重要在哪里? 寫一個小XML文檔,其中使用的是默認的命名空間,以及一個合法的(前綴)命名空間,其中要有分別屬性這兩個命名空間的元素 元素和特性的基本區別在哪里? 格式完好的XML和有效的XML有什么區別?
    2、.NET中如何驗證XML?
    3、myXmlDocument.SelectNodes(\"http://mynode\"); 為什么這句代碼不好?什么時候它是好的?
    4、拉式解析(XmlReader)與事件讀取器(Sax)的區別 XpathDocument和XmlDocument的區別? 在何種情況下應該用哪一個?
    5、“XML片斷”與“XML文檔”有什么區別 什么叫格式規范的XML?
    6、XML InfoSet規范與Xml DOM有什么不同? InfoSet是要解決什么問題? 比較DTD和XSD,它們的相似點與區別分別是什么?哪個更好些?為什么?
    7、System.Xml支持DTD嗎?如果支持,如何使用? XML Schema能夠表示為對象圖?對象圖能夠表示為XML Schema?

    原文地址:t_sql中的COUNT函數

    1 count函數的定義
    count函數的定義可見MSDN。定義如下:
    view source
    print?

    COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )



    view source
    print?

    那么COUNT 有兩種使用方式COUNT(expression)和COUNT(*),它返回一個對一個表按某列計數的值。



    view source
    print?

    COUNT(*)返回表的行數。它不會過濾null和重復的行。



    view source
    print?

    COUNT(expression)會過濾掉null值,所以值null行不會加入到計數當中,但如果不在expression前面加上distinct關鍵字,它是會過濾掉重復行的。



    view source
    print?

    以此可以得出一個結論:count(*)返回值總是大于或等于count(expression)的返回值。



    view source
    print?

    在應用中,好多人喜歡使用COUNT(1),這里面的1其實就是一個expression,因為你的表中沒有列名為1的列,那么它的返回結果是和COUNT(*)一模一樣的,



    view source
    print?

    個人覺得效率也是沒有差別的。



    view source
    print?

    ;WITH cte1(c1,c2, Description) AS(

    SELECT 1, 1, \This is a fox\ UNION ALL

    SELECT 2, NULL, \Firefox\ UNION All

    SELECT NULL, 2, \people consider foxes as clever but sly animals\ UNION All

    SELECT NULL, NULL, NULL UNION ALL

    SELECT 3, NULL, \This is me\ UNION ALL

    SELECT 3, 3, \Fox on the run\)



    結果如下:

    如結果所示,COUNT(*),COUNT(2)和COUNT(3)是一模一樣的。而COUNT(c1)顯然過濾掉了NULL值。
    注意,COUNT 的參數expression可以為常量(像上面的2,3…),表的列,函數,還可以是語句,具體可見MSDN的定義。下面展示了這個應用。
    如果想為cte1中列Description中有字符串\fox’進行計數,典型的做法是:
    view source
    print?

    SELECT COUNT(*) FROM cte1

    WHERE pATINDEX(\%fox%\,cte1.Description) <> 0



    這種做法是where中過濾,另外一種方式是在expression中定義查找條件:
    view source
    print?

    SELECT COUNT(NULLIF(pATINDEX(\%fox%\, cte1.Description), 0))

    FROM cte1



    如果description列中沒有字符串\fox\那么pATINDEX函數返回的是0,NULLIF函數因為兩個參數相等,那么結果是NULL,因為NULL不會參與計數,所以列中沒有\fox’的行不會
    參與計數,達到了查找的目的。
    當然,我們還可在expression中使用case表達式:
    view source
    print?

    SELECT COUNT(CASE

    WHEN pATINDEX(\%fox%\,cte1.Description) <> 0 THEN 1

    ELSE <STRONG>NULL</STRONG> END)

    FROM cte1



    注意ELSE語句后面必須是NULL,如果是非NULL,ELSE語句也會參與COUNT計數的。
    2 在count函數后接聚合窗口函數OVER。注意聚合窗口函數中是不能有ORDER BY,ORDER BY只能出現在排名函數的over子句中。OVER字句的定義見MSDN。
    view source
    print?

    SELECT c.*, COUNT(*) OVER(pARTITION BY c.c1) \c1 * count\,

    COUNT(c1) OVER(pARTITION BY c.c1) \c1 c1 count\,

    COUNT(*) OVER(pARTITION BY c.c2) \c2 count\,

    COUNT(CASE

    WHEN LEFT(c.Description, 1) IN (\T\) THEN 1

    ELSE NULL END) OVER(pARTITION BY LEFT(c.Description, 1)) \start with T\,

    COUNT(CASE

    WHEN LEFT(c.Description, 1) IN (\T\, \F\, \p\) THEN 1

    ELSE NULL END) OVER(pARTITION BY LEFT(c.Description, 1)) \start with T, F OR p\

    FROM cte1 c



    view source
    print?

    注意OVER字句不能為OVER(pARTITION BY c.c1 ORDER BY c.c1),這是因為count不是排名函數。



    view source
    print?

    以上的運行結果為:



    view source
    print?

    <A href=\"blogs_com/fgynew/WindowsLiveWriter/t_sqlcount_11359/result333_4.png\"><IMG style=\"BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISpLAY: inline; BORDER-TOp: 0px; BORDER-RIGHT: 0px\" title=result333 border=0 alt=result333 src=\"blogs_com/fgynew/WindowsLiveWriter/t_sqlcount_11359/result333_thumb_1.png\" width=804 height=183></A>




    可以看出,在使用OVER子句時候,COUNT還是遵循了最基本的準則,COUNT(*)會對null行計數,而COUNT(expression)則不會。
    以上在COUNT 的expression中設置條件顯然不是一種很優化的方式,因為這種方式會首先讀取表中的所有數據,是對表進行掃描,而在where子句中設置條件進行過濾是一種很好的方式。因為從邏輯上講,where先于select執行,所有數據庫引擎只會讀取部分數據,不是讀取所有數據。如果要對以表中c1列的null進行統計,可以有兩種方式:
    view source
    print?

    SELECT COUNT(*)

    FROM cte1

    WHERE c1 IS NULL



    或者:
    view source
    print?

    SELECT COUNT(CASE

    WHEN c1 IS NULL THEN \x\

    ELSE NULL END)

    FROM cte1

    【net筆試題】相關文章:

    1..net筆試題

    2.360筆試題

    3.12580筆試題

    4.筆試-CRI 2010筆試題

    5.net面試常見問題

    6.筆試題

    7.五礦筆試題專業筆試題

    8.KPMG筆試題