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. 请谈谈你个人的最大特色。

 

我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。

 

 

转载于:https://www.cnblogs.com/zones/archive/2012/03/07/2383386.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值