• .net面试题2


    1.面向对象的三大特性

    答:封装, 每个对象都包含啦他能进行操作所需要的所有信息,因此对象不必依靠其他的对象来完成自己的操作,这样的特性叫封装。 继承, 继承代表一种“is-a”的关系,最好好处是少啦好多的代码 多态, 是允许将父对象设置为和一个和多个它的子对象相等的技术,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,也就是说,父的行为像儿子,而不是儿子的行为像父亲。

    2.ADO.NET的五大对象

    答:是一种数据访问技术,使得应用程序可以连接到数据库,并以各种方式操作存储在其中的数据。该技术基于.net Framework。ADO.NET软件栈包含两个主要部分:提供者和服务。1.Connection(连接数据库)2.Command(执行T-sql语句)3.DataAdapter(用户填充DataSet,断开模式)4.DataReader(读取数据库,一种读取模式,只是向前的)5.DataSet(数据集,好比电脑的内存)

    3.5大访问权限

    答:c#中类及类的成员的修饰符 对访问成员没有级别限制: 1.public 公开 类及类成员的修饰符 对访问成员没有级别限制 2.private 私有 类成员的修饰符 只能在类的内部访问 3.protected 受保护的 类成员的修饰符 只能在该类和类的派生类中间访问,不管该派生类和基类是否在同一程序集中4. internal 内部的 类及类成员的修饰符 访问权限在程序集中 5.protected internal受保护的内部 ,如果是继承关系,无论是不是同一个程序集都可以访问,如果不是继承关系,只能在同一个程序集中访问 可以在类前面修饰只有public和internal,如果没有写任何修饰符,默认是internal 我们可以说类的访问权限:1.public class 任何地方该类都可以被访问到;2.internal class只有在同一个程序集内(你可以这样解释:如果想建立一个解决方案,里面有三个项目,那么就有三个程序集,如果你把第一个项目里的类设置为internal class,那么第一项目想调用这个类是不可能的,因为不在同一个程序集中)

    4.sql查询第30到40条的数据

    答:分页1.select top 10 * from a where id not in(select top 30 id from a order by id) order by id

    2.普通写法:select * from a where id between 30 and 40.

    5.类好接口的区别

    答:

    类:描述了一个实体,包括实体的状态,也包括实体可能发出的动作。

    接口:定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。

    1.接口与类区别:

    (1)接口有点象一个规范、一个协议,是一个抽象的概念;

    (2)而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。

    (3)从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。
    2接口             抽象类

    多继承 支持    不支持

    类型限制  没有    有,只能是引用类型

    方法实现 继承类型中必须给出方法   实现继承类中可以不给出

    扩展性 计较麻烦   相对比较灵活

    多层继承 比较麻烦,需要借助虚函数  交灵活

    6.读取数据库的三个方法

    答:1.DataSet+DataAdpater;2.DataTable+DataAdPater;3.DataReader;

    7.可是用foreach遍历的条件

    答:实现IEnumerable,声明GetEnumerator。

    8.有个字符串,把字符串里面的成员添加到数组里面,成员用逗号分开。

    答:int i,j=0,k=0;//声明几个整形变量,

    char str[]="abdfafa,sdfafaf,sdfssdfaf,sdfafafas,sdddgg";

    char list[100][100];  //这个用于存储分离后的各个字符串,二维数组,最多分离100个字符串,每个字符串的元素最多100个

    meset(list,0,sizef(list));//使用memset函数,对list中的所有元素赋值为0,sizeof(list)是用于获取list的总占用空间

    for(i=0;i<strlen(str);++i)//for循环从零开始,每次循环后,i自增长,循环条件是i必须小于str的长度,否则退出循环,

    {

    if(str[i]==',')

    {//如果str中的第i个字符串为逗号

    list[j][k]=0;//分离出的第j个字符串中的第k个字符为0,也就是字符串结束符

        ++J;//j自动长表示下一个被分离的字符串

      k=0;//因为要将字符写到写一个被分离的字符串中,从零开始,

    }

    else{

    否则不是逗号

    list[j][k]=str[i];//二维数组list中的第j个字符串str中的第i个字符

    ++k;//切换到下一个字符

    }

    }

    8.递归算法 1 1 2 3 5 8……….

    答:static void main(string[] args)

    {

    console.writeline(process(30));

    console.readline();

    }

    publice static int process1(int i)

    {

    if(i==0) return 0;

    if(i==1) return 1;

    else

     return process1(i-1)+process1(i-2);

    }

    9.asp.net的之间的几种传值方法?

    答:1.使用QueryString

    2.使用Session

    3.使用Server.Transfer

    4.Cookie传值

    5.Application传值

    6.数据库

    7.配置文件

    10c#中委托是什么?事件是不是一种委托?

    答:委托是可以把方法作为参数传入另一个方法。

    事件是一种特殊的委托。

    11override和重载的区别?

    答:重载是方法名称相同,参数或是参数类型不同,进行多次重载以适应不同的需要。

    overrider是对基类的重写,以适应需要。

    12简述三层架构?

    答:通常情况下三层架构是指把业务分为三成:表现层(UI),业务逻辑层(BLL),数据访问层(DAL).

    区分代码是为了实现“高内聚,低耦合”的思想。

    表现层:通常讲就是展现给用户的界面,即用户使用一个系统的时候所看见的。

    业务逻辑层:针对问题的操作,也可以说是对数据层的操作,对数据业务逻辑的处理。

    数据访问层:直接操作数据库,针对数据进行增加,修改,删除,查询,等每层之间是一种垂直关系。

    优点:分工明确,易于调试,条理清晰,而且具有可扩展性。

    缺点:增加成本。

    13:MVC模式简述?

    答:MVC(Model -View-Controller)模型-视图-控制器

    MVC是一种典型的平行关系,没有谁是上谁是下得关系.模型负责业务领域问题,视图负责显示方面的问题,控制器把数据读取出来填充模型交给视图去处理。

    验证是在模型中处理。强制性使用应用程序的输入,处理,输出分开。MVC最大的好处是将逻辑和页面分开。

    14:什么是装箱和拆箱?

    答:从值类型到引用类型的转换是装箱,

    从引用类型到值类型的转换是拆箱。

    15.net中类和结构的区别?

    答:相同点:语法相同。

    不同点:

    1.类似引用类型,继承自sysytem.object。结构是值类型,继承自system.valuetype,因此不具有多态的特性。但是system.VALUETYPE是引用类型。

    2.从职能观点来说,class用于表现行为,结构用来存数数据。

    3.class支持继承,可以继承类和接口的继承,结构不支持继承,不能从class继承,也不能作为class基类继承,但是可以继承接口。

    4.class可以声明无参数构造函数和析构函数,结构只能声明带参数的构造函数,不能声明析构函数,

    5.实例化时类需要使用new关键字,struct声明时可以不需要new关键字,如果不使用new来实例化struct,则其所有的字段都处于为分配的状态,直到所有字段完成初始化,否则引用为赋值的字段会导致编译错误。

    6.class的复制可分为深复制和浅复制,必须经过特殊的方法才能完成。struct创建的对象复制简单,可直接使用等号连接就可以。

    7class有垃圾回收机制保证内存的回收处理,struct使用完后立即自动解除内存分配。

    8作为参数传递时.CLASS是以按址方式传递,而struct是按值方式传递。

    16堆和栈的区别?

    答:栈是编译时就分配好内存空间,因此你的代码中必须有就栈的大小就有明确的定义,

    堆是程序运行期间自动分配内存,你可以根据程序的运行情况分配内存的大小。

    17gc是是什么?为什么要有gc?

    答:gc是垃圾收集器,程序员不用担心内存分配问题,因为gc会自动管理内存,

    要请求回收垃圾,可以使用以下调用方法。sysytem.c(); Runtime.GetRuntime.Gc();

    18值类型和引用类型的区别?

    答:

    1.赋值方式不同:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
    2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。
    3.值类型不可能包含 null 值:然 

    而,可空类型功能允许将 null 赋给值类型。 
    4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。  

    19c#中接口和类的异同?

    答:不同点:

    不能直接实例化接口

    接口不包含方法的实现

    接口可以多继承,类只能单继承

    类可以在不同的源文件之间进行拆分

    相同点

    接口和类都可以多个接口继承

    接口和类都包含事件,索引器,方法,属性。

     20集合类?

    答:arrylist,queue,stack,hashtable,sortedlist,dictionary。

    21,使用的框架技术。

    22单例模式?

    public class Singleton
    {
            private static Singleton instance;

            private Singleton()
            {
           
            }

            public static Singleton GetInstance()
            {
                    if(instance==null)
                    {
                            instance=new Singleton();
                    }
                    return instance;
            }
    }

    22.查询表中姓名相同的个数?

    答:select count(*) as 个数 from (select name from a order by name having count(*)>1)

    23.查询每个月的注册用户?

    答select count(*),to_char(regddate,'yyyymm') from A group by to_char(regdate,'yyyymm')

    24.把字符串逆序输出?

    答: string s="123456";
           char[] t = s.ToCharArray();
           for (int m = t.Length - 1; m >= 0; m--)
            Console.WriteLine(Convert.ToString(t[m]));
            Console.ReadLine();

    25:截取有逗号的字符串为数组存储?

    答:string str="abcdefg;laskdg,dfasd";

    int strlen=str.lenght;

    string[] s=new string[strlen];

    for(int i=0;i<strlen;i++)

    {

    s[i]=str.strsubstring(i,1);

    }

    for(int i=0;i<S.lenght;i++)

    {

    console.writeline(s[i]);

    }

    }

    }

    26给你string一个字符串“abcd,as,ccd,dsa”反转这个字符串为"dsa,ccd,as,abcd"

    答:string s=“abcd,as,ccd,dsa”;

         string[] n=s.Split(,);

         List<string>  list=new List<string>();

          int N=n.length;

         for(int i=0;i<n.lenght;++i)

        {

              list.Add(n[i]);

        }

        for(int j=N-1;j>=0;j--)

       {

        console.write(list[i]);

       if(i!=0)

       console.write(",");

        }

    }

    27:sql语言语句查询每门课都大于80分的学生的姓名?

    答:select   Distinct name from table where name not in(select name from table where 分数<80)

  • 相关阅读:
    再收藏一篇: oracle批量绑定 forall bulk collect用法以及测试案例
    Dll中导出导入时巧用条件编译指令共享头文件
    Oracle不支持在select语句中调用自定义函数时使用自定义类型作参数?
    (Alan Murta)编制的多边形集合运算软件包(general polygon clipping library,简称GPC)
    MSDN:CFile和CStdioFile区别以及CString中的'\r\n'
    REF CURSOR 小结
    Oracle存储过程中执行DDL操作
    Oracle在存储过程中,如何删除和创建表?
    收藏:关于表名也动态的动态SQL文章
    用Select查询结果创建ACCESS表
  • 原文地址:https://www.cnblogs.com/zhoubinbin1991/p/2558189.html
Copyright © 2020-2023  润新知