ASP.NET程序員面試試題


ASP.NET程序員面試試題(一)

 

 

姓名:_________班級:__________

 

 

 

一、填空題:(10分,每空1分)

1. 面向對象的語言具有______性、________性、_______性。

 

2. 能用foreach遍歷訪問的對象需要實現 ________接口或聲明___________方法的類型。

 

3. 列舉ADO.net中的五個主要對象________、__________、____________、_____________、_____________。

 

二、不定向選擇題(10分)

1. 以下敘述正確的是:

 

      A. 接口中可以有虛方法。    B. 一個類可以實現多個接口。

      C. 接口不能被實例化。      D. 接口中可以包含已實現的方法。

 

2. 從數據庫讀取記錄,你可能用到的方法有:

 

      A. ExecuteNonQuery            B. ExecuteScalar

 

      C. Fill                        D. ExecuteReader

 

三、程序題(40分):

 

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

 

答:

 

 

 

 

 

 

 

 

 

2. 有一組數字:20 , 10 ,8, 30, 5, 1, 2, 22 請用編程的方式冒泡排序法進行由小到大的方式排序。

 

答:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         3. 一列數的規則如下: 112358132134......

 

  求第30位數是多少, 用遞歸算法實現。

 

         答:

   

 

 

 

 

 

 

 

 

 

 

 

 

 

4. 程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)

 

要求:  1.要有聯動性,老鼠和主人的行為是被動的。

 

2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。

 

答:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、問答題:(40分)

 

1. 數組有沒有length()這個方法? String有沒有length()這個方法?

答:

 

 

 

 

 

2. Asp.Net中讀寫XML的類都歸屬於哪些命名空間?

 

答:

 

 

 

 

3. 概述三層架構的體系

 

答:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。

答:.

 

 

 

 

 

 

 

 

 

 

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

答:

 

 

 

 

 

 

 

 

 

 

 

 

6.你找工作時,最重要的考慮因素為何?

答:

 

 

 

 

 

 

 

 

 

7. 為什么我們應該錄取你?

答:

 

 

 

 

 

 

8. 請談談你個人的最大特色。

答:

 

 

 

ASP.NET程序員面試試題答案(一)

 

一、填空題:

1. 面向對象的語言具有_繼承_性、__封裝___性、__多態___性。

 

2. 能用foreach遍歷訪問的對象需要實現 ___IEnumerable ___接口或聲明____GetEnumerator___方法的類型。

 

3. 列舉ADO.net中的五個主要對象___Connection__、__Command___、___DataReader___、___DataAdapter____、___DataSet____。

 

二、不定向選擇題

1. 以下敘述正確的是: B C

 

      A. 接口中可以有虛方法。    B. 一個類可以實現多個接口。

      C. 接口不能被實例化。      D. 接口中可以包含已實現的方法。

 

2. 從數據庫讀取記錄,你可能用到的方法有:BCD

 

      A. ExecuteNonQuery            B. ExecuteScalar

 

      C. Fill                        D. ExecuteReader

 

三、程序題:

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

 

答:

解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)

 

 

2. 有一組數字:20 , 10 ,8, 30, 5, 1, 2, 22 請用編程的方式冒泡排序法進行由小到大的方式排序。

 

答:

從小到大的排序

 

class Program

 

    {

 

        public static void Sort(int[] myArray)

 

        {

 

        // 取長度最長的詞組 -- 冒泡法

 

        for (int j = 1; j < myArray.Length;j++)

 

        {

 

            for (int i = 0; i < myArray.Length - 1; i++)

 

            {

 

                 // 如果 myArray[i] > myArray[i+1] ,則 myArray[i] 上浮一位

 

                if (myArray[i] >myArray[i + 1])

 

                {

 

                    int temp = myArray[i];

 

                    myArray[i] = myArray[i + 1];

 

                    myArray[i + 1] = temp;

 

                }

 

            }

 

        }

 

        }

 

        static voidMain(string[] args)

 

        {

 

            int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22};

 

            Sort(myArray);

 

            for (int m = 0; m < myArray.Length; m++)

 

            {

 

                Console.WriteLine(myArray[m]);

 

            }

 

        }

 

從大到小的排序

 

class Program

 

    {

 

        public static void Sort(int[] myArray)

 

        {

 

       // 取長度最長的詞組 -- 冒泡法

 

        for (int j = 1; j < myArray.Length;j++)

 

        {

 

            for (int i = 0; i < myArray.Length - 1; i++)

 

            {

 

                 // 如果 myArray[i] < myArray[i+1] ,則 myArray[i] 下沉一位

 

                if (myArray[i] < myArray[i + 1])

 

                {

 

                    int temp = myArray[i];

 

                    myArray[i] = myArray[i + 1];

 

                    myArray[i + 1] = temp;

 

                }

 

            }

 

        }

 

        }

 

        static voidMain(string[] args)

 

        {

 

            int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22 };

 

            Sort(myArray);

 

            for (int m = 0; m < myArray.Length; m++)

 

            {

 

                Console.WriteLine(myArray[m]);

 

            }

 

        }

 

 

 

 

 

 

         3. 一列數的規則如下: 112358132134......

 

  求第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);
        }
    }
評分標准: 寫出return Foo(i -1) + Foo(i - 2); 得5分。

寫出if(i > 0 && i <= 2) return 1; 得5分。

          方法參數過多需要扣分(扣除分數 = 參數個數 - 1)

          不用遞歸算法扣5分

          (遞歸算法在樹結構建立等方面比較常用)

 

4. 程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)

 

要求:  1.要有聯動性,老鼠和主人的行為是被動的。

 

2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。

 

答:

要點: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 voidMain(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 voidMain(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. 數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String沒有length()這個方法。

2. Asp.Net中讀寫XML的類都歸屬於哪些命名空間?

 

答:System.Xml

3. 概述三層架構的體系

答:

    MVC是一種目前廣泛流行的軟件設計模式,MVC英文即Model-View-Controller,即把一個應用的輸入、處理、輸出

流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三

個層——模型層、視圖層、控制層。

   (1)表現層(View):

 

代表用戶交互界面,對於Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML、Applet。

   (2)模型層(Model):

就是業務流程/狀態的處理以及業務規則的制定。模型接受視圖請求的數據,並返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。

業務模型還有一個很重要的模型那就是數據模型。數據模型主要指實體對象的數據保存(持續化)。比如將一張訂單保存到數據庫,從數據庫獲取訂單。我們可以將這個模型單獨列出,所有有關數據庫的操作只限制在該模型中。

 

   (3)控制層(Controller ):

可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求。

       MVC優缺點

  優點:適用於團隊開發合作,增強了應用的可拓展性,使得應用程序更加健壯,更加有彈性,更加個性化。

                       

 

4. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。

答:. private :  私有成員, 在類的內部才可以訪問。

     protected : 保護成員,該類內部和繼承類中可以訪問。

     public :    公共成員,完全公開,沒有訪問限制。

     internal:  在同一命名空間內可以訪問。

 

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

答:

1.使用QueryString 問號傳參,  如....?id=1; response. Redirect()....

    2.使用Session變量

3.使用Server.Transfer

4.Cookie傳值
    5.ViewState狀態傳值
    6.Application

               7.Cache
               8.WebService

6.你找工作時,最重要的考慮因素為何?

 

工作的性質和內容是否能讓我發揮所長,並不斷成長。

 

7. 為什么我們應該錄取你?

 

您可以由我過去的工作表現所呈現的客觀數據,明顯地看出我全力以赴的工作態度。

 

8. 請談談你個人的最大特色。

 

我的堅持度很高,事情沒有做到一個令人滿意的結果,絕不罷手。

 

 

ASP.NET程序員面試試題答案(一)

 

一、填空題:

1. 面向對象的語言具有_繼承_性、__封裝___性、__多態___性。

 

2. 能用foreach遍歷訪問的對象需要實現 ___IEnumerable ___接口或聲明____GetEnumerator___方法的類型。

 

3. 列舉ADO.net中的五個主要對象___Connection__、__Command___、___DataReader___、___DataAdapter____、___DataSet____。

 

二、不定向選擇題

1. 以下敘述正確的是: B C

 

      A. 接口中可以有虛方法。    B. 一個類可以實現多個接口。

      C. 接口不能被實例化。      D. 接口中可以包含已實現的方法。

 

2. 從數據庫讀取記錄,你可能用到的方法有:BCD

 

      A. ExecuteNonQuery            B. ExecuteScalar

 

      C. Fill                        D. ExecuteReader

 

三、程序題:

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

 

答:

解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)

 

 

2. 有一組數字:20 , 10 ,8, 30, 5, 1, 2, 22 請用編程的方式冒泡排序法進行由小到大的方式排序。

 

答:

從小到大的排序

 

class Program

 

    {

 

        public static void Sort(int[] myArray)

 

        {

 

        // 取長度最長的詞組 -- 冒泡法

 

        for (int j = 1; j < myArray.Length;j++)

 

        {

 

            for (int i = 0; i < myArray.Length - 1; i++)

 

            {

 

                 // 如果 myArray[i] > myArray[i+1] ,則 myArray[i] 上浮一位

 

                if (myArray[i] >myArray[i + 1])

 

                {

 

                    int temp = myArray[i];

 

                    myArray[i] = myArray[i + 1];

 

                    myArray[i + 1] = temp;

 

                }

 

            }

 

        }

 

        }

 

        static voidMain(string[] args)

 

        {

 

            int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22};

 

            Sort(myArray);

 

            for (int m = 0; m < myArray.Length; m++)

 

            {

 

                Console.WriteLine(myArray[m]);

 

            }

 

        }

 

從大到小的排序

 

class Program

 

    {

 

        public static void Sort(int[] myArray)

 

        {

 

       // 取長度最長的詞組 -- 冒泡法

 

        for (int j = 1; j < myArray.Length;j++)

 

        {

 

            for (int i = 0; i < myArray.Length - 1; i++)

 

            {

 

                 // 如果 myArray[i] < myArray[i+1] ,則 myArray[i] 下沉一位

 

                if (myArray[i] < myArray[i + 1])

 

                {

 

                    int temp = myArray[i];

 

                    myArray[i] = myArray[i + 1];

 

                    myArray[i + 1] = temp;

 

                }

 

            }

 

        }

 

        }

 

        static voidMain(string[] args)

 

        {

 

            int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22 };

 

            Sort(myArray);

 

            for (int m = 0; m < myArray.Length; m++)

 

            {

 

                Console.WriteLine(myArray[m]);

 

            }

 

        }

 

 

 

 

 

 

         3. 一列數的規則如下: 112358132134......

 

  求第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);
        }
    }
評分標准: 寫出return Foo(i -1) + Foo(i - 2); 得5分。

寫出if(i > 0 && i <= 2) return 1; 得5分。

          方法參數過多需要扣分(扣除分數 = 參數個數 - 1)

          不用遞歸算法扣5分

          (遞歸算法在樹結構建立等方面比較常用)

 

4. 程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)

 

要求:  1.要有聯動性,老鼠和主人的行為是被動的。

 

2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。

 

答:

要點: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 voidMain(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 voidMain(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. 數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String沒有length()這個方法。

2. Asp.Net中讀寫XML的類都歸屬於哪些命名空間?

 

答:System.Xml

3. 概述三層架構的體系

答:

    MVC是一種目前廣泛流行的軟件設計模式,MVC英文即Model-View-Controller,即把一個應用的輸入、處理、輸出

流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三

個層——模型層、視圖層、控制層。

   (1)表現層(View):

 

代表用戶交互界面,對於Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML、Applet。

   (2)模型層(Model):

就是業務流程/狀態的處理以及業務規則的制定。模型接受視圖請求的數據,並返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。

業務模型還有一個很重要的模型那就是數據模型。數據模型主要指實體對象的數據保存(持續化)。比如將一張訂單保存到數據庫,從數據庫獲取訂單。我們可以將這個模型單獨列出,所有有關數據庫的操作只限制在該模型中。

 

   (3)控制層(Controller ):

可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求。

       MVC優缺點

  優點:適用於團隊開發合作,增強了應用的可拓展性,使得應用程序更加健壯,更加有彈性,更加個性化。

                       

 

4. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。

答:. private :  私有成員, 在類的內部才可以訪問。

     protected : 保護成員,該類內部和繼承類中可以訪問。

     public :    公共成員,完全公開,沒有訪問限制。

     internal:  在同一命名空間內可以訪問。

 

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

答:

1.使用QueryString 問號傳參,  如....?id=1; response. Redirect()....

    2.使用Session變量

3.使用Server.Transfer

4.Cookie傳值
    5.ViewState狀態傳值
    6.Application

               7.Cache
               8.WebService

6.你找工作時,最重要的考慮因素為何?

 

工作的性質和內容是否能讓我發揮所長,並不斷成長。

 

7. 為什么我們應該錄取你?

 

您可以由我過去的工作表現所呈現的客觀數據,明顯地看出我全力以赴的工作態度。

 

8. 請談談你個人的最大特色。

 

我的堅持度很高,事情沒有做到一個令人滿意的結果,絕不罷手。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM