编程题
已知两个字符串A,B,请编写一算法,求出这两个字符串的最长公共字符串?
请利用C#语言实现一个单件类,使得该类及其子类只能创建唯一的实现?
                          面试题
虚拟函数与非虚拟函数在使用上有什么区别?
override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数。
利用sql关键字对网站进行攻击,过滤关键字等。
在C#中用来控制代码可见性的关键字有哪些?并控制着怎样的可见性?
.net 2.0了解吗?变化是什么?为什么要引入这种变化?

解决方案 »

  1.   

    第一个问题是最长平台,网上代码很多,搜索关键字:最长平台
    第二个问题,简单点的实现类似下面的,这种实现不是很安全,多线程可能会出问题,多线程下的单体模式,实现起来有点问题,也就是加个锁,但是加锁之后会有新问题,你可以尝试一下。
    //下面是c++的,转到c#简单的吧
    class CGridMap
    {
    public:
    //获取唯一的CGridMap对象指针
    static CGridMap* GetSingleMap();
    private:
    //指向唯一CGridMap对象的指针
    static CGridMap* singleMap;
    CGridMap();
    }===
    CGridMap* CGridMap::singleMap = NULL;
    CGridMap* CGridMap::GetSingleMap()
    {
    if (singleMap == NULL)
    {
    singleMap = new CGridMap();
    }
    return singleMap;
    }//GetSingleMap虚拟函数与非虚拟函的区别,最重要的就是在多态性上,按照这点,自己去搜搜资料,扩展一下。
    “override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数。”
    这就是一个重载操作吧,你学过面向对象设计,这个是问题?
      

  2.   

    1。不是很明白,什么叫最长公共字符串?去掉重复的吗?归并发算法?
    2.单例模式,利用static object,lock(object)()3.被virtual修饰的方法可以被子类覆写
    4.这个什么意思?考重写和重载的区别吗?重载就是方法名相同,参数不同的函数
    重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。
    5.sql过滤关键字,比如',delete,等,尽量少用sql语句,用存储过程
    6.怎么叫控制代码可见性?#debug()??还是说Public,internal,private???
    7.自己查资料,增加了泛型
      

  3.   

    override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数。
    重写:
    public class A
    {
       public virtual void F()
       {
         console.writeline("aaa");
       }
    }
    public class B : A
    {
       public override void F()
       {
         console.writeline("bbb");
       }
    }
    重载:
    public int AA(int a)
    {
       return a
    }
    public string AA(string a,string b)
    {
      return console.writeline("{0}+{1}",a,b);
    }
      

  4.   

    面试题:
    1、虚函数可以在派生类中重写,虚函数OO中实现多态的基础
    2、单例模式(分饿汉式和懒汉式)类A:
       1、构造函数为私有(private A("参数"))
       2、定义一个静态本类型成员变量(饿汉式初始化private static A Instance=new A("参数");,懒汉式不初始化private static A Instance;)
       3、定义一个静态获取类实例成员方法(public static A GetInstance()),返回Instance
    3、重写 和 重载 的区别:重写函数签名要相同(啥都相同),重载函数名相同,参数个数、或者类型、或者排列顺序 三个之间至少有一个不同。
    4、三题和四题貌似已经给出答案了,这是哪家公司的面试题啊?
       避免使用字符串拼接的Sql语句,多用带参语句 或者使用存储过程,多虑关键字(drop delete……)
    5、题目的意思是public、private、protected、internal么?
    6、怎么不问.Net4.0的变化啊?
       .Net2.0增加了泛型,(貌似是照抄Java1.5的)
       什么泛型接口、泛型类、泛型委托、泛型方法等等
       没有泛型属性、也没有方形事件、还没有泛型索引器、更没有泛型字段
      

  5.   

    呵呵,都是些最基本的编程问题啦。把数据结构、C#和CLR以及设计模式搞清楚,这些问题都能解决了。
    (SQL注入攻击那题除外)背题还不如学习基础知识。