面试题(2)—— 常见算法

  1. 查询出表中10-20条记录 、查询第m条到第n条记录:
    select top n-m+1 * from test where (id not in(select top m-1 id from test))

     

  2. 查询出数组中第二大值

    用两个变量max,max2,其中max储存最大值,max2储存第二大值
    初始化的时候,将数组中的第一个元素中较大的存进max,较小的存进max2
    然后从第三个元素(下标为2)的元素开始,如果遇到的数比max,就让max2=max;max等于遇到的数一直循环,直到数组尾部最后输出max2

     

  3. 一个天秤,一个7克砝码,一个2克砝码,将150克食盐分成90克与50

    1. 先把140克放在天平上分成相等两份各70克,再把其中70克同样平均分成两份各35克,35+7*2+2-1

    2. 第一次:先称 7+2克盐 (相当于有三个法码2,7,9)
      第二次:2+7+9=18克盐 (相当于有2,7,9,18四个法码)
      第三次:7+18=x+2,得出x23,那就是有27克盐
      23+9+18=50克盐.

  4. 面试算法题  例如 输入123,输出321

    

  5. 面试算法题 台阶一次只可以上一级或者两级,求 例如10级台阶有多少种上法

     

  6.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m 

    方法一:通过顺序规律写程序,同时也知道flag标志位的重要性

    

    方法二:通过奇偶性

    

   7. 1234个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

      

   8. 一个6位数乘以一个3位数,得到一个结果。但不清楚6位数的两个数字是什么,而且结果中有一位数字也不清楚,请编程找出问号代表的数字,答案可能有多个

  

   9. 已知1112358132134....C#递归写出算法,算出第30个数

  

   10.有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"

  

 

  11. C# 九九乘法表算法实现

  

  12. 冒泡排序

  

  13.选择排序

  首先在未排序列中找到最小的元素,存放到排序序列的起始位置。然后在从剩余未排序元素中继续寻找最小的元素,放到排序序列末尾。以此类推,直到所有元素均排序完毕。

  

  14.程序设计

  问题:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

  思路:构造出CatMouseMaster三个类,并能使程序运行;MouseMaster中提取抽象;联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒

  这个例子可以看出 委托事件的应用是极其面向对象的,或者说很对象化

[csharp] view plain copy print?

namespace DelegateEvent    

{    

    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(Respose);   //注册猫叫事件(表达有点含糊),当此事件触发的时候,老鼠会做出回应    

        }    

        public abstract void Respose();     

    }    

    //定义一个观察者,老鼠    

    public class Mouse : Observer    

    {    

        private string name;    

        public Mouse(string name, Subject sub)  //定义构造函数,并初始化父类    

            : base(sub)    

        {    

            this.name = name;    

        }    

    

        public override void Respose()    

        {    

            Console.WriteLine(name+" attempt to escape!");    

        }    

    }    

    //定义一个观察者,主人    

    public class Master : Observer    

    {    

        public Master(Subject sub) : base(sub) { }    

        public override void Respose()    

        {    

            Console.WriteLine("host waken");    

        }    

    }    

    

    class Program    

    {    

        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();    

            Console.Read();    

        }    

    }    

}   

posted @ 2018-06-27 10:04  竹林逸雪  阅读(184)  评论(0编辑  收藏  举报