net笔试题(转贴)原文出自南方一著名公司技术高层blog:http:elwin.blogchina.com913935.html

    技术2022-05-11  64

     原文出自南方一著名公司技术高层blog:http://elwin.blogchina.com/913935.html

     

    .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.考虑可扩展性,猫的叫声可能引起其他联动效应。

    http://elwin.blogchina.com

    参考答案: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.  (考查值引用和对象引用)10210strstring being converted.评分标准:答对一点得2分,满分10分。

    7.  A    BA.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();        }

        }


    最新回复(0)