.Net 面试题!(集合)

2006-4-15
面试题

.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:

        dufault;  //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怎么实现?


 

2006-4-15
面试问题 [转]

一、ADO 与ADO.NET两种数据访问方式区别?

1. ADO与ADO.NET简介
  ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。但是ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET和ADO是两种数据访问方式。
  
  2. 数据访问方式的历史
  下面简单的回顾一下微软的数据访问方式所走过的几个阶段。
  
  ODBC – (Open Database Connectivity)是第一个使用SQL访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。
  
  DAO - (Data Access Objects)不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。
  
  RDO – 在使用DAO访问不同的关系型数据库的时候,Jet引擎不得不在DAO和ODBC之间进行命令的转化,导致了性能的下降,而RDO(Remote Data Objects)的出现就顺理成章了。
  
  OLE DB – 随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了。
  
  ADO – 基于OLE DB之上的ADO更简单、更高级、更适合Visual Basic程序员,同时消除了OLE DB的多种弊端,取而代之是微软技术发展的趋势。
  
 

  
ADO架构图表

  
  3. ADO与ADO.NET对照
  在开始设计.NET体系架构时,微软就决定重新设计数据访问模型,以便能够完全的基于XML和离线计算模型。两者的区别主要有:
  
  ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。
  
  由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。
  
    
  4. 小结
  ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。

二、DataSet与DataReader的区别

ADO.NET提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和DataReader。DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。 
当使用DataSet时,经常会利用DataAdapter(也可能是CommandBuilder)与数据源进行交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。 
下列主题包括的信息涉及:使用DataSet或DataReader的最佳时机、如何优化访问它们所包含数据、以及如何优化使用DataAdapter(包括CommandBuilder)和DataView的技巧。 

DataSet与DataReader 
当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader。 
要通过应用程序执行以下操作,就要使用DataSet: 
r 在结果的多个离散表之间进行导航。 
r 操作来自多个数据源(例如,来自多个数据库、一个XML文件和一个电子表格的混合数据)的数据。 
r 在各层之间交换数据或使用XML Web服务。与DataReader不同的是,DataSet能传递给远程客户端。 
r 重用同样的记录集合,以便通过缓存获得性能改善(例如排序、搜索或筛选数据)。 
r 每条记录都需要执行大量处理。对使用DataReader返回的每一行进行扩展处理会延长服务于DataReader的连接的必要时间,这影响了性能。 
r 使用XML操作对数据进行操作,例如可扩展样式表语言转换(XSLT转换)或XPath查询。 

对于下列情况,要在应用程序中使用DataReader: 
r 不需要缓存数据。 
r 要处理的结果集太大,内存中放不下。 
r 一旦需要以仅向前、只读方式快速访问数据。 
注填充DataSet时,DataAdapter使用DataReader。因此,使用DataAdapter取代DataSet提升的性能表现为节省了DataSet占用内存和填充DataSet需要的循环。一般来说,此性能提升只是象征性的,因此,设计决策应以所需功能为基础。

三、基本概念

1、面向对象的语言具有封装性、继承性、多态性。
2、ADO.NET中的五个主要对象Connection、Command、DataSet、DataReader、DataAdapter
3、ASP.NET中的身份验证有Windows、Forms、Passport,一般采用Forms,比较简单、适用面广
4、接口----接口定义了一组方法(Method,子程序或函数例程[译注:指Visual Basic .NET中的Sub和Function])、属性(Property)、事件(Event)和域(Field,变量或特性),这些都被声明为公有。接口也可以被另一个接口继承。任何继承了一个接口的类或结构都必须实现接口继承链中所有接口所定义的成员。
5、继承------继承是指一个类——称为子类[译注:亦称派生类],可以基于另一个类——称为基类[译注:亦称父类、超类]。继承提供了一种建立对象层次的机制。继承使得你能够在你自己的类中使用另外一个类的接口和代码。
base->访问基类的成员。
this->引用调用一个方法的当前对象。
6、抽象类-------抽象类是一种特殊的基类。除了通常的类成员,它们还带有抽象类成员。抽象类成员是指没有实现而只有声明的方法和属性。所有直接从抽象类派生的类都必须实现所有这些抽象方法和属性。
抽象方法不能实例化。这样做[译注:指实例化一个抽象类]是不合逻辑的,因为那些抽象成员没有实现。那么,不能实例化一个类有什么好处呢?很多!抽象类稳坐类继承树的顶端。它们确定了类的结构和代码的意图。用它们可以得到更易搭建的框架。这是可能的,因为抽象类具有这个框架中所有基类的一般信息和行为。
7、接口和抽象类之间的区别--------接口和抽象类关系很紧密,它们都具有对成员的抽象。
对于一个抽象类,至少一个方法是抽象方法既可,这意味着它也可以具有具体方法[译注:Concrete Method,这只是相对于抽象方法而言,面向对象中并没有这个概念]。
对于一个接口,所有的方法必须都是抽象的。
实现了一个接口的类必须为接口中的所有方法提供具体的实现,否则只能声明为抽象类。
在C#中,多重继承(Multiple Inheritance)只能通过实现多个接口得到。抽象类只能单继承[译注:C#中的单继承是指所有类作为基类的时候都只能是派生类声明中唯一的基类,而不仅仅是抽象类]。
接口定义的是一个契约,其中只能包含四种实体,即方法、属性、事件和索引器。因此接口不能包含常数(Constant)、域、操作符、构造器、析构器、静态构造器或类型[译注:指嵌套的类型]。
同时,一个接口还不能包含任何类型的静态成员。修饰符abstract、public、protected、internal、private、virtual、override都是不允许出现的,因为它们在这种环境中是没有意义的。
类中实现的接口成员必须具有公有的可访问性。
8、多态性--------多态性反映了能够在多于一个类的对象中完成同一事物的能力——用同一种方法在不同的类中处理不同的对象。例如,如果Customer和Vendor对象都有一个Name属性,则我们可以写一个事物来调用Name属性而不管我们所使用的是Customer对象还是Vendor对象,这就是多态性。
交通工具是多态性的一个很好的例子。一个交通工具接口可以只包括所有交通工具都具有的属性和方法,还可能包括颜色、车门数、变速器和点火器等。这些属性可以用于所有类型的交通工具,包括轿车、卡车和挂车。 多态性不在交通工具的属性和方法背后实现代码。相反,多态性只是实现接口。如果轿车、卡车和挂车都实现了同样的交通工具接口,则所有这三个类的客户代码是完全一样的。
C#通过继承来为我们提供多态性。C#提供了virtual关键字用于定义一个支持多态的方法。
9、结构----------结构是和类相似的一种封装构造,因为它可以包含数据、类型和函数成员。但和类不同的
是,结构是值类型,因此存放在内存中称为栈的地方。结构通常用来存入简单数据类型--
在内存中有固定大小的实体----的集合,事实上,内建的基本值类型Int32、Int64、Double
等在.NET Framework中实现为结构。
10、委托---------委托是提供对具有特定返回类型和参数列表的方法的一般引用的引用类型。它的本质上和C或C++中的函数指针相似。但和C++函数指针不同的是,委托是完全面向对象的---它们既封装方法又封装对象实例。委托是用户定义的类型,所以当定义委托时,实际上是定义一个特定类型的委托,而不是一个
具体的实例
11、.Net中的内存回收机制
 垃圾回收器是用来管理应用程序的内存分配和释放的。在垃圾回收器出现以前,程序员在使用内存时需要向系统申请内存空间。有些语言,例如Visual Basic,可以自动完成向系统申请内存空间的工作。但是在诸如Visual C++的语言中要求程序员在程序代码中申请内存空间。如果程序员在使用了内存之后忘了释放内存,则会引起内存泄漏。但是有了垃圾回收器,程序员就不必关心内存中对象在离开生存期后是否被释放的问题。当一个应用程序在运行的时候,垃圾回收器设置了一个托管堆。托管堆和C语言中的堆向类似,但是程序员不需要从托管堆中释放对象,并且在托管堆中对象的存放是连续的。
  每次当开发人员使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。新创建的对象被放在上次创建的对象之后。垃圾回收器保存了一个指针,该指针总是指向托管堆中最后一个对象之后的内存空间。当新的对象被产生时,运行库就知道应该将新的对象放在内存的什么地方。同时开发人员应该将相同类型的对象放在一起。例如当开发人员希望向数据库写入数据的时侯,首先需要创建一个连接对象,然后是Command对象,最后是DataSet对象。如果这些对象放在托管堆相邻的区域内,存取它们就非常快。

四、Public、Protected、Internal、Protected internal、Private的访问权限

1、Public ------公共成员,成员对于任何人都是可见的。我们可以在类内部的和类的子孙的代码中通过使用类的实例来访问一个公有的成员。
2、Protected------保护成员,成员和私有成员类似,只能由包含它的类访问。然而,受保护成员可以由一个类的子类所使用。如果类中的一个成员可能被该类的子类访问,它应该声明未受保护的
3、Internal/Friend--------成员对整个应用程序是公有的,但对于其他的外部应用程序是私有的。当我们希望其他应用程序能够使用当前应用程序中的包含的一个类,但又希望这个类为当前应用程序保留一定的功能时,就要用到内部/友元成员。在C#中我们使用internal,而在Visual Basic .NET中我们使用Friend。

4、Protected internal -------包括了Protected和Internal修饰符,成员只能由包含了基类的应用程序中的从该基类派生的子类所访问。当你希望一个类中的成员只能由其子类访问,并且拒绝其他应用程序访问该类的这个成员的时候,你就要将其声明未受保护内部成员。
5、Private -------私有成员,成员是隐藏的,只有对类本身是可用的。所有使用了一个类的实例的代码都不能直接访问一个私有成员,这个类的子类也不允许。

五、ASP.NET两个页面之间传递值的几种方式
ASP.NET提供了卓越的事件驱动编程模型,让开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,使用传统的ASP里,我们可以通过使用POST方法很容易地实现页面间传递值,同样的事情,在使用事件驱动编程模型的ASP.NET就不是那么容易了,当然了,我们仍然有一些方法可以实现同样的功能。本文将试着使用不同的可能的方法来解决这个问题,但可以预见是,本文将包含使用querystring,session变量以及server.Transfer方法来实现页面间的值传递。

使用QueryString
使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:
1,使用控件创建web表单(form)
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
4,在保存的URL里添加QueryString参数
5,使用Response.Redirect重定向到上面保存的URL
下面的代码片断演示了如何实现这个方法:
源页面代码:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}

使用Session变量
使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:
1,在页面里添加必要的控件
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
4,使用Response.Redirect方法重定向到另一个页面
5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它
下面的代码片断演示了如何实现这个方法:
源页面代码:
private void Button1_Click
(object sender, System.EventArgs e)
{
//textbox1 and textbox2 are webform
//controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.aspx";
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name";
Session.Remove("email";
}

使用Server.Transfer
这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:
1,在页面里添加必要的控件
2,创建返回值的Get属性过程
3,创建可以返回表单的按钮和链接按钮
4,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
5,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了
以下代码综合实现上述步骤过程的代码:
源页面代码:
把以下的代码添加到页面中
public string Name
{
get
{
return TextBox1.Text;
}
}

public string EMail
{
get
{
return TextBox2.Text;
}
}
然后调用Server.Transfer方法
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx";
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

六、ASP.NET的Application、Session、Cookie、ViewState和Cache等变量的区别是什么?

Application是公共的,所有人都能看到,所以可以用来做聊天室,

session是私有的,每个客户端都存在一个不同的session 生存期正常是20分钟,也可以自己设定为1分钟或2个小时

cookie是保存在本机的文件,记录短小的信息,除非你让cookie过期,否则会一直存在

viewstate类似于asp中的hidden控件,用来记录页面中的控件的状态的,主要在页面间信息传递时用,

cache是缓存,用来记录已经执行过的一些数据,比如读取数据库,目的是加速显示,减少服务器的负担,过期时间也是可以自己设定的,

七、C#中接口与类的区别?

1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引符的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数。
4、接口不能进行运算符的重载,类可以进行运算符重载。
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。
那么为什么还要有接口呢?主要原因是它是一种有效的契约。类有一些成员,不考虑把这些成员组合在一起,类只是一个拥有各种方法、字段和属性的列表,但为了能以某种方式使用类,必须知道类能执行那些功能,具体的操作就是声明执行一个或多个接口的类,类执行接口的方式是从接口中派生,再提供这个接口中定义的所有成员的执行方式。 

 

2006-4-15
微软面试100题 [转]

微软面试100题——要想成为盖茨就来试试!(转贴) 

1为什么下水道的井盖是圆的? 
   
    2美国有多少辆车?(一个常见的类似问题是:美国有多少家加油站?) 
   
    3美国有多少个下水道井盖? 
   
    4你让某些人为你工作了七天,你要用一根金条作为报酬。这根金条要被分成七块。你必须在每天的活干完后交给他们一块。如果你只能将这根金条切割两次,你怎样给这些工人分? 
   
   5一列火车以每小时15英里的速度离开洛杉矶,朝纽约进发。另外一列火车以每小时20英里的速度离开纽约,朝洛杉矶进发。如果一只每小时飞行25英里的鸟同时离开洛杉矶,在两列火车之间往返飞行,请问当两列火车相遇时,鸟飞了多远? 
   
    6假设一张圆盘像唱机上的唱盘那样转动。这张盘一半是黑色,一半是白色。假设你有数量不限的一些颜色传感器。要想确定圆盘转动的方向,你需要在它周围摆多少个颜色传感器?它们应该被摆放在什么位置? 
   
    7假设时钟到了12点。注意时针和分针重叠在一起。在一天之中,时针和分针共重叠多少次?你知道它们重叠时的具体时间吗? 
   
    8你有两个罐子,分别装着50个红色的玻璃球和50个蓝色的玻璃球。随意拿起一个罐子,然后从里面拿出一个玻璃球。怎样最大程度地增加让自己拿到红球的机会?利用这种方法,拿到红球的几率有多大? 
   
    9中间只隔一个数字的两个奇数被称为奇数对,比如17和19。证明奇数对之间的数字总能被6整除(假设这两个奇数都大于6)。现在证明没有由三个奇数组成的奇数对。 
   
    10一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯。 
   
    11假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球? 
   
    12假设你站在镜子前,抬起左手,抬起右手,看看镜中的自己。当你抬起左手时,镜中的自己抬起的似乎是右手。可是当你仰头时,镜中的自己也在仰头,而不是低头。为什么镜子中的影像似乎颠倒了左右,却没有颠倒上下? 
   
    13 你有4瓶药。每粒药丸的重量是固定的,不过其中有一瓶药受到了污染,药丸的重量发生了变化,每个药丸增加了一点重量。你怎样一下子测出哪瓶药是遭到污染的呢? 
   
    14下面玩一个拆字游戏,所有字母的顺序都被打乱。你要判断这个字是什么。假设这个被拆开的字由5个字母组成: 
   
    1. 共有多少种可能的组合方式? 
   
    2. 如果我们知道是哪5个字母,那会怎么样? 
   
    3. 找出一种解决这个问题的方法。 
   
    15有4个女人要过一座桥。她们都站在桥的某一边,要让她们在17分钟内全部通过这座桥。这时是晚上。她们只有一个手电筒。最多只能让两个人同时过桥。不管是谁过桥,不管是一个人还是两个人,必须要带着手电筒。手电筒必须要传来传去,不能扔过去。每个女人过桥的速度不同,两个人的速度必须以较慢的那个人的速度过桥。 
   
    第一个女人:过桥需要1分钟; 
   
    第二个女人:过桥需要2分钟; 
   
    第三个女人:过桥需要5分钟; 
   
    第四个女人:过桥需要10分钟。 
   
    比如,如果第一个女人与第4个女人首先过桥,等她们过去时,已经过去了10分钟。如果让第4个女人将手电筒送回去,那么等她到达桥的另一端时,总共用去了20分钟,行动也就失败了。怎样让这4个女人在17分钟内过桥?还有别的什么方法? 
   
    16如果你有一个5夸脱的水桶和一个3夸脱的水桶,如何准确量出4夸脱的水? 
   
    17你有一袋糖,有红色的,蓝色的,绿色的。闭上眼睛,拿出两块颜色一样的糖,你需要拿多少次才能确保有两块颜色相同的? 
   
    18如果你有两个桶,一个装的是红色的颜料,另一个装的是蓝色的颜料。你从蓝色颜料桶里舀一杯,倒入红色颜料桶,再从红色颜料桶里舀一杯倒入蓝颜料桶。两个桶中红蓝颜料的比例哪个更高?通过算术的方式来证明这一点。 
   
  运算 
   
    19链接表和数组之间的区别是什么? 
   
    20做一个链接表,你为什么要选择这样的方法? 
   
   
    21选择一种算法来整理出一个链接表。你为什么要选择这种方法?现在用o(n)时间来做。 
   
    22说说各种股票分类算法的优点和缺点。 
   
    23用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍。 
   
    24用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。 
   
    25用一种算法整理一个数组。你为什么选择这种方法? 
   
    26用一种算法使通用字符串相匹配。 
   
    27颠倒一个字符串。优化速度。优化空间。 
   
    28颠倒一个句子中的词的顺序,比如将“我叫克丽丝”转换为“克丽丝叫我”,实现速度最快,移动最少。 
   
    29找到一个子字符串。优化速度。优化空间。 
   
    30比较两个字符串,用o(n)时间和恒量空间。 
   
    31假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗? 
   
    32不用乘法或加法增加8倍。现在用同样的方法增加7倍。 
   
  应用 
   
    33如何将计算机技术应用于一幢100层高的办公大楼的电梯系统上?你怎样优化这种应用?工作日时的交通、楼层或时间等因素会对此产生怎样的影响? 
   
    34你如何对一种可以随时存在文件中或从因特网上拷贝下来的操作系统实施保护措施, 
  防止被非法复制? 
   
    35你如何重新设计自动取款机? 
   
    36假设我们想通过电脑来操作一台微波炉,你会开发什么样的软件来完成这个任务? 
   
    37你如何为一辆汽车设计一台咖啡机? 
   
    38如果你想给微软的word系统增加点内容,你会增加什么样的内容? 
   
    39你会给只有一只手的用户设计什么样的键盘? 
   
    40你会给失聪的人设计什么样的闹钟? 
   
  头脑 
   
    41如果你有一个许多部件可以拆卸的时钟,你将它一块块拆开,但是没有记住是怎样拆的。然后你将各个零件重新组装起来,最后发现有三个重要零件没有放进去。这时你如何重新组装这个时钟? 
   
   
    42如果你需要学习一门新的计算机语言,你会怎样做? 
   
    43假设由你负责设计比尔·盖茨的卫生间。当然,钱不成问题,但是你不可以和比尔谈。你会怎样做? 
   
    44到目前为止,你遇到的最难回答的问题是什么? 
   
    45如果微软公司说,我们愿意投资500万美元用来开发你提出的方案。那么你会做什么?为什么? 
   
    46如果你将世界上所有的计算机制造商召集起来,告诉他们必须要做一件事,你会让他们做什么事? 
   
    47如果你在五年内会得到一笔奖金,你认为会是因为什么?关注你的成绩的人会是谁? 
   
    48你如何教自己的奶奶使用微软excel表格系统? 
   
    49为什么当我们在任何一家宾馆打开热水龙头时,热水会马上流出来? 50你为什么想在微软工作? 
   
    51假设你回到家,进入自己的房间,打开电灯开关,可是一点反应都没有——灯没有亮。这时,你在判断问题出在哪里时,会依次采取怎样的做法? 
   
  请在a、b、c、d中选择正确的答案。 
   
    52. 下列哪项叙述是错误的? 
   
    (a)主观主义者可能也是相对论者。 
   
   
    (b)相对论者也可能是客观主义者。 
   
    (c)绝对论者也可能是主观主义者。 
   
    (d)客观主义者也可能是绝对论者。 
   
    53. 如果就像萨特的存在主义所说的,“人要为自己的热情负责”,那么无论我们做什么,我们都: 
   
    (a)违背了自己的意愿。 
   
    (b)没有经过思考。 
   
    (c)是自由的。 
   
    (d)是出于对上帝的蔑视。 
   
    54.萨特宣称,对人类来说,“存在先于本质”,换言之: 
   
    (a)当人们理智的时候,他们才符合人类的本质。 
   
    (b)根据上帝的指示,人们在本质上是注定要存在的。 
   
    (c)人类可以自由选择,甚至选择不以任何方式做任何事。 
   
    (d)人类是自由的,可以通过自己的行为而成为自己所愿意成为的任何角色。 
   
    55. 萨特说,“根本没有人类本性这种东西”,他的意思是: 
   
    (a)作为具有自我意识的生命,我们可以决定而且确实决定了自己成为一种什么样的生命。 
   
    (b)人类没有办法选择是痛苦还是绝望。 
   
    (c)人类不具有可以从在生物角度把他们归为一个物种的遗传特征。 
   
    (d)存在主义认为上帝的存在只是道德判断的先决基础。 
   
    56.康德说,一个行为符合义务并不能令它成为道德行为,当执行者只为了尽义务或因为这是他的义务而做,他的行为才是道德行为。康德这样说是为了表明: 
   
    (a)一个人行为的后果可能是好的也可能是坏的,一切取决于这个行为产生了多少快乐。 
   
    (b)出于自由意愿而做的行为永远是道德行为。 
   
    (c)一个行为的道德价值是由执行者的动机决定的,不是由这个行为的结果决定的。 
   
    (d)出于自身利益的行为不同于根据准则而做的行为。 
   
    57.康德认为,决定一个行为是否道德的关键是这个行为所依据的准则,而不是这个单独的行为本身。因为: 
   
    (a)根据定义,一个个体行为是不可以被普遍化的。 
   
    (b)我们的行为总是依据这样或那样的准则。 
   
    (c)没有准则,我们将无从知道应该怎样做。 
   
    (d)我们的准则是行为的客观法则,是我们行事的基础。 
   
    58.根据康德的观点,一项具有无法被成功普遍化的动机或目的的行为: 
   
    (a)根据结果的不同,可以是道德的或不道德的。 
   
    (b)根据该行为是否被该人所在社会所接受,可以是道德的或不道德的。 
   
    (c)是不道德的。 
   
    (d)根据该行为是否出于自由意愿,可以是道德的或不道德的。 
   
    59.康德说,“我可以判断其他所有有理性的人是否和我一样有义务去做某件事”,判断依据是: 
   
    (a)某些行为是否被不同文化普遍接受。 
   
    (b)其他人做和我一样的行为是否得到好的结果。 
   
    (c)这个行为在所有人看来都是好的。 
   
    (d)我的行为的动机可以被普遍化,没有被某些人抵触或不被接受。 
   
    60.行为实用主义者说,我们应该一直做那些能带来最大幸福的事,即使这意味着违反道德原则。原则实用主义者不同意这种意见,说我们应该遵守道德原则,即使我们认为违背这些原则会产生更好的结果,因为: 
   
    (a)服从道德原则为社会整体带来的幸福通常多于为少数例外者带来的不幸福。 
   
    (b)我们不应该成为任何道德原则的奴隶,道德只是个人选择问题。 
   
    (c)通常来说,为大多数人谋求最大幸福的行为并不总是符合道德的。 
   
    (d)即使我们服从道德原则,也总难免造成某些人的不幸福。 
   
    61.行为实用主义者指出,有时候违反某一道德准则能比遵守准则带来更大的幸福。他们认为,在这种情况下,违反道德准则是允许的: 
   
    (a)只要保证下不为例。 
   
    (b)只要这个行为所影响的人没有感到不快。 
   
    (c)只要实施行为者的动机或意图是为了尽自己的义务而不计后果。 
   
    (d)实用主义原则本身甚至要求人们这样做。 
   
  62.元帅领兵 
   
    元帅统领八员将,每将各分八个营,每营里面摆八阵,每阵配置八先锋,每个先锋八旗头,每个旗头有八队,每队分设八个组,每组带领八个兵。请你掐指算一算,元师共有多少兵? 
   
   
    63.运算符号的妙用 
   
    在1、2、3、4、5、6、7、8、9这一串数字中间,加入运算符号“+”或“-”,使其代数和等于99,按(1 …… 9)可以有17种解,倒过来的后者(9 …… 1)可以有11种解。有兴趣的读者,不妨一试。 
   
    64.两龟赛跑 
   
    有两只乌龟一起赛跑。甲龟到达10米终点线时,乙龟才跑到9米。现在如果让甲龟的起跑线退后1米,这时两龟再同时起跑比赛,问甲、乙两龟是否同时到达终点? 
   
    65.电视机的价格 
   
    麦克因工作繁忙,决定临时请尼克来协助他工作。规定以一年为期限,一年的报酬为600美元与一台电视机。 
   
    可是尼克做了7个月后,因急事必须离开麦克,并要求麦克付给他应得的钱和电视机。由于电视机不能拆散付给他,结果尼克得到了150美元和一台电视机。 
   
    现在请你想一想:这台电视机值多少钱? 
   
    66.这块石头究竟有多重 
   
    有4个小孩看见一块石头正沿着山坡滚下来,便议论开了。 
   
    “我看这块石头有17公斤重,”第一个孩子说。 
   
    “我说它有26公斤,”第二个孩子不同意地说。 
   
    “我看它重21公斤”,第三个孩子说。 
   
    “你们都说得不对,我看它的正确重量是20公斤,”第四个孩子争着说。 
   
    他们四人争得面红耳赤,谁也不服谁。最后他们把石头拿去称了一下,结果谁也没猜准。其中一个人所猜的重量与石头的正确重量相差2公斤,另外两个人所猜的重量与石头的正确重量之差相同。当然,这里所指的差,不考虑正负号,取绝对值。请问这块石头究竟有多重? 
   
    67.三只砝码称东西 
   
    现在有三种不同重量的标准砝码1克、3克、9克。请问可以称出多少不同物品的重量?在进行称量时,要称的东西与已知的标准砝码可以任意地放在天平的两盘之一。另外,每种砝码都只有一只,而且不准复制。 
   
    68.称米 
   
    现有米9公斤以及50克和200克的砝码各一个。问怎样在天平上只称量三次而称出2公斤米? 
   
    69.比萨饼交易 
   
    在我最喜欢的那家比萨饼店中,10寸的比萨卖4.99美元。店主说,他们有一笔12寸比萨饼的交易,定价为每份5.39美元。请问:该店在这笔比萨饼交易中给予了买方多少折扣? 
   
  70.伊沙贝拉时装精品屋 
   
    纽约伊沙贝拉时装精品屋,新近从意大利购进了一件女式冬装。这衣服的购入价格再加二成,是该店标出的销售价。 
   
    出于半个月内未卖出去,女老板又将这个定价减去了一成,很快被一位漂亮小姐买走了 
  。女老板获利400元。 
   
    请问,这件高档女式冬装购入价是多少? 
   
    71.称量罐头 
   
    为罐头工厂工作的送货员a,给一家食品公司送了10箱菠萝罐头。每个罐头重量是800克,每箱装20个。 
   
    正当他送完了货,要回工厂的时候,接到了从工厂打来的电话,说这10箱中有一箱由于机器出了问题而混进了次品,每个罐头缺50克的分量,要送货员把这箱罐头送回工厂以便更换。但是,怎样从中找出到底哪一箱是次品呢?最需要的当然是秤,可是手边又没有。 
   
    正在这时,他忽然发现不远的路旁有一台自动称量体重的机器,也就是投进去1元硬币就可以称量一次重量。他的口袋里刚好就有一个1元硬币。当然也就只能量一次。那么他应该怎么充分利用这只有一次的机会,来找到那一箱不符合规格的产品呢? 
   
    72.按劳取酬 
   
    有一个农场主,雇用了两个临时工帮忙种小麦。其中一个叫做汤姆,是一个耕地能手,但是他不会播种;而另一个叫做尼克,他并不擅长于耕地,但是,他却是播种的好手。这个农场主决定要种十公顷小麦,让他们各自包一半,于是,汤姆从东头开始耕地,而尼克从西头开始耕地。耕一亩地汤姆只要用二十分钟,而尼克却需要四十分钟,但是尼克播种的速度比汤姆要快三倍。 
   
    他们播种完工后,农场主按照他们的工作量给予他俩一共一百元的工钱。请问:他们应该怎么样分这份工钱才最合理? 
   
   73.四兄弟的年龄 
   
    一家有4个兄弟,他们4个的年龄乘起来的积为14。那么,他们各自的年龄是多大?当然年龄应该是整数。 
   
    74.爱的程度 
   
    在一所乡村学校中,一个刚刚毕业的男数学老师s很幸运地同时得到了两个女教师a、b的青睐。s满脑袋数字,在无法从两者之中选择的情况下,他只好对这两位女教师说,“希望你们用数字或者数学公式,来表示你们对我的爱的程度。” 
   
    a说,“与b比起来,我是一百倍地爱你。” 
   
    b说,“a对你的感情当然没有我对你的感情深。与a相比,我是一千倍地爱你。” 
   
    听了她们深情的话语,不知为什么数学老师s反而神情沮丧地说,“这不就等于说,你们两个都是完全不爱我吗?” 
   
    这究竟是怎么回事? 
   
    75.爬楼梯 
   
    一位先生要到10层楼的第8层去办事,不巧正赶上停电,电梯无法使用,他只能够步行上楼。如果他从第1层爬到第4层需要用48秒,那么请问,以同样的速度走到第8层需要多少秒? 
   
    76.空姐分配物品 
   
    在一架飞机上,中间是一条过道,两边是座位,每一排为三人。两位空姐a和b每人负责一边,对每位旅客分配旅行物品。 
   
    开始的时候,a给右边的旅客发放了6份,此时,b过来对她说,左边应该由a负责。于是a重新到左边开始发放,b接着给右边剩下的旅客发放物品,之后,又帮a发了15份,最后两人同时结束工作。 
   
    请问:a和b谁发的多?多发了多少份? 
   
  生产中需要一段铁链,库房中只有五截每截只有三个铁环的铁链,这五截铁链连起来的长度正好是所需要的。 
   
    问:在只切断三个铁环的情况下,怎样将这五截三铁环连起来? 
   
   
    77.巧分飞机票 
   
    旅行社刚刚为三位旅客预定了飞机票。这三位旅客是荷兰人科尔、加拿大人伯托和英国人丹皮。他们三人一个去荷兰,一个去加拿大,一个去英国。据悉科尔不打算去荷兰,丹皮不打算去英国,伯托则既不去加拿大,也不去英国。 
   
    问:这三张飞机票分别应该是他们谁的? 
   
    78.白帽和黑帽 
   
    老师让6名学生围坐成一圈,另让一名学生坐在中央,并拿出七顶帽子,其中四顶白色,三顶黑色。然后蒙住七名学生的眼睛,并给坐在中央的学生戴一顶帽子,而只解开坐在圈上的六名学生的眼罩。这时,由于坐在中央的学生的阻挡,每个人只能看到五个人的帽子。老师说:“现在,你们七人猜一猜自己的头上戴的帽子颜色。”大家静静地思索了好大一会。最后,坐在中央的、被蒙住双眼的学生举手说:“我猜到了。” 
   
    问:中央的被蒙住双眼的学生带的是什么颜色的帽子?他是怎样猜到的? 
   
    79.急中生智 
   
    有个农民挑了一对竹筐,赶集去买东西。当他来到一座独木桥上,对面来了个孩子,他想退回去让孩子先过桥,但是回身一看,后面也来了个孩子。正在进退两难之际,农民急中生智,想了个巧办法,使大家都顺利地通过了独木桥,而且三人之中谁也没有后退过一步。 
   
    问:农民是用的什么方法? 
   
    80.巧入房间 
   
    某地质勘探队有12名队员,他们同住在一栋楼的12个房间内。由于工作关系,资料不能集中,各人的房间内都有别人需要查对的资料。 
   
    这天,12位队员又要外出作业了。临行前,队长对大家说:“在外出作业期间,12个人一起回来是不可能的,如有队员回来查资料就困难了。现在咱们每个人都有打开自己门锁的两把钥匙,只准带走其中一把钥匙,余下的一把不准挂在门上,因为不安全,每个房间的门窗也必须关严,大家想一想,怎样才能使任何一个人回来都能打开12个房间呢?” 
   
    问:如果你是队员之一,你能想出办法来吗? 
   
    81.女儿的错 
   
    父亲打电话给女儿,要她替自己买一些生活用品,同时告诉她,钱放在书桌上的一个信封里。女儿找到信封,看见上面写着98,以为信封内有98元,就把钱拿出来,数也没数放进书包里。 
   
    在商店里,她买了90元的东西,付款时才发现,她不仅没有剩下8元,反而差了4元。 
   
    回到家里,她把这事告诉了父亲,怀疑父亲把钱点错了。父亲笑着说,他并没有数错,错在女儿身上。 
   
    问:女儿错在什么地方? 
   
    82.找硬币 
   
    3个日本孩子翻衣兜,他们把兜里所有的钱都掏出来,看看一共有多少钱。结果一共有320日元。其中有两枚硬币是100日元的,两枚是50日元的,两枚是10日元的。每一个孩子所带的硬币中没有相同的。而且,没带100日元硬币的孩子也没带10日元的硬币,没带50日元硬币的孩子也没带100日元的硬币。你能弄清楚这3个日本孩子原来各自带了什么硬币吗? 
   
    83.入睡与醒来 
   
    请问:从你生下来的那一刻起,你入睡和醒来的次数哪个多?多多少次? 
   
  84. 什么书中毛病最多? 
   
    85. 为什么好马不吃回头草? 
   
    86. 什么东西说“父亲”是不会相碰,叫“爸爸”时却会碰到两次? 
   
   
    87. 农夫养10头牛,只有19只角,为什么? 
   
    88. 打什么东西既不花力气又舒服? 
   
    89. 托尼总是喜欢把家里的闹钟整坏,妈妈为什么总是让不会修理钟表的爸爸代为修理? 
   
    90. 戴夫走路从来脚不沾地,这是为什么? 
   
    91. 生米不小心煮成熟饭时该怎么办? 
   
    92. 制造日期与有效日期是同一天的产品是什么? 
   
    93. 时钟敲了十三下,请问现在该做什么呢? 
   
  11. 在罗马数字中,零该怎么写? 
   
    94. 有对一模一样的双胞胎兄弟,哥哥的屁股有黑痣,而弟弟没有。但即使这对双胞胎穿着相同的服饰,仍然有人可立刻知道谁是哥哥,谁是弟弟。究竟是谁呢? 
   
    95. 家有家规,国有国规,那动物园里有啥规? 
   
   
    96. 先有男人,还是先有女人? 
   
    15. 什么人每天靠运气赚钱? 
   
    97. 玛丽整天说个不停,可有一个月她说的最少,那是为什么? 
   
    98. 戴维手里拿着火柴走到厨房,这有一个煤气灶和一个酒精灯,他如果想烧开水,请问:他应该先该点燃什么? 
   
    99. 老师说蚯蚓切成两段仍能再生,西恩照老师的话去做,蚯蚓却死了,为什么? 
   
    100. 汽车在右转弯时,哪只轮胎不转? 

转载于:https://www.cnblogs.com/rocky99261/archive/2007/04/02/1543393.html

你可能感兴趣的:(c#,数据库,设计模式)