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

 

posted @ 2012-06-21 19:50  履霜,坚冰至。  阅读(215)  评论(0编辑  收藏  举报