C#面试




1.列举https://www.360docs.net/doc/e27633779.html, 页面之间传递值的几种方式:QueryString,Session,Server.Transfer
2.C#中的委托是什么?事件是不是一种委托?:委托可以把一个方法作为参数代入另一个方法,可以理解为指向一个函数的引用,事件是一种特殊的委托
3.override(重写)与重载的区别:override 是进行基类中函数的重写,名称与参数都相同;重载是方法的名称相同,参数或参数类型不同.
4.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
QueryString、 this.Server.Transfer,服务端cach,数据库.
5.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
foreach(Control con in this.Controls)
{
if(con is TextBox)
{
TextBox tb = (TextBox) con;
tb.text = String.Empty;
}
}
6.请编程实现一个冒泡排序算法?
int[] ary = new int[1,0,6,9,2,8,4,3];
int temp;
for(int i=0;ifor(int j=i+1;jif(ary[j]temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}
}
7.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?:可以用任意类型
8.什么叫应用程序域?:Net的运行环境,CLR将程序分成一个或多个逻辑区域就叫应用程序域AppDomain
9.CTS、CLS、CLR分别作何解释?:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运行库。
10.什么是装箱和拆箱?:从值类型转换到引用类型装箱。从引用类型转换到值类型拆箱(装箱容易拆箱难)
11.什么是受管制的代码?:unsafe:非托管代码。不经过CLR运行。
https://www.360docs.net/doc/e27633779.html,中读写数据库需要用到那些类?他们的作用?:
SqlConnection/OleDbConnection:建立数据库的连接;SqlCommand/OleDbCommand:执行数据库脚本。
13.能用foreach遍历访问的对象需要实现 __IEnumerable __接口或声明__GetEnumerator__方法的类型。
14.GC是什么? 为什么要有GC?:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,
可以调用下面的方法之一: System.gc(),Runtime.getRuntime().gc()
15.String s = new String("xyz");创建了几个String Object?:两个对象,一个是“xyx”,一个是指向“xyx”的引用对像s
16.启动一个线程是用run()还是start()?:启动一个线程是调用start()方法,处于可运行状态,但并不意味着线程就会立即运行
17.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
接口可以继承接口。抽像类可以实现(implements)接口,抽像类可继承实体类,但前提是实体类必须有明确的构造函数。
18.是否可以继承String类?:String类是final

类故不可以继承。
19.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整型,字符或字符串,因此可以作用在byte和long上,也可以作用在string上.
20.List, Set, Map是否继承自Collection接口?:List(允许重复),Set(不允许重复)是,Map不是
21.数组有没有length()这个方法? String有没有length()这个方法?:数组没有Length()方法,只有Length属性,string有Length()方法
22.sleep() 和 wait() 有什么区别?:sleep()方法是将当前线程挂起指定的时间。wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁。
23.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
24.谈谈final, finally, finalize的区别。
final-修饰符(关键字)如果一个类被声明为final,不能再派生,不能继承
finally-再异常处理时提供 finally 块来执行任何清除操作(catch 子句)
finalize-方法名,java中用于垃圾的收集.
25.如何处理几十万条并发数据?:用存储过程或事务。取得最大标识的时候同时更新..取得最大标识要有一个存储过程来获取.
26.Session有什么重大BUG,微软提出了什么方法加以解决?
是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用数据库的方式存储Session,不过这种方式比较慢,而且无法捕获Session的END事件。
27.进程和线程的区别:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源
28.堆和栈的区别?:栈是编译期间就分配好的内存空间,堆是程序运行期间动态分配的内存空间
29.成员变量和成员函数前加static的作用?
它们被称为静态成员变量和静态成员函数,static的最主要功能是隐藏,其次因为static变量存放在静态存储区(程序开始运行时只初始化一次),它具备持久 性和默认值0。
https://www.360docs.net/doc/e27633779.html,与ASP相比,主要有哪些进步?:性能提高,可以跟美工的工作分开进行,更有利于团队开发.
https://www.360docs.net/doc/e27633779.html,与ASP区别:https://www.360docs.net/doc/e27633779.html,支持预编译;https://www.360docs.net/doc/e27633779.html,拥有更强大的https://www.360docs.net/doc/e27633779.html,,身份论证体系,众多的服务器控件,支持自定义控件;
31.产生一个int数组,长度为100,并向其中随机插入1到100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
32.请说明在.net中常用的几种页面间传递参数的方法,并说

出他们的优缺点。
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
url参数(QueryString) 简单,显示于地址栏,长度有限
数据库 稳定,安全,但性能相对弱
33.请指出GAC的含义?:全局程序集缓存。
34.向服务器发送请求有几种方式?:get,post.get为一般连接方式,post为一般按钮方式
35.DataReader与DataSet有什么区别?:一个是只能向前的只读游标,一个是内存中的表。
36.软件开发过程一般有几个阶段?每个阶段的作用?:需求分析,架构设计,代码编写,QA,部署
37.在c#中using和new这两个关键字有什么意义:using 引入名称空间或者使用非托管资源,new 新建实例或者隐藏父类方法
38.什么叫做SQL注入,如何防止?请举例说明。:利用sql语言漏洞获得合法身份登陆系统 用@id能防止.
39.什么是反射?:动态获取程序集信息
40.什么是虚函数?什么是抽像函数?
虚函数:可由子类继承并重写的函数,关键字virtual。抽像函数:规定其非虚子类必须实现的函数,关键字abstract,必须被重写。
41.列举一下你所了解的XML技术及其应用:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services和config,soap协议
https://www.360docs.net/doc/e27633779.html,中常用的对象有哪些?分别描述一下。Connection 数据库连接对像,Command 数据库命令,DataReader 数据读取器,DataSet 数据集
43.XML 与 HTML 的主要区别
XML是区分大小写字母的,HTML不区分。在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的,在HTML中,可以拥有不带值的属性名。在XML中, 所有的属性都必须带有相应的值
44.c#中的三元运算符是?:a==6?1:0;?:
45.当整数a赋值给一个object对像时,整数a将会被?:装箱
46.类成员有_____种可访问形式?:this,new Class().Method;
47.public static const int A=1;这段代码有错误么?是什么?:const不能用static修饰。
48.float f=-123.567F; int i=(int)f;i的值现在是_____? :-123
49.委托声明的关键字是______?:delegate
50.在https://www.360docs.net/doc/e27633779.html,中所有的自定义用户控件都必须继承自________?:Control
51.在.Net中所有可序列化的类都被标记为_____? :[serializable]
52.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?:GC
53.abstract override 是不可以一起修饰.
54.当类T只声明了私有实例构造函数时,则在T的程序文本外部, 不可以 从T派生出新的类,不可以 直接创建T的任何实例。
https://www.360docs.net/doc/e27633779.html,的错误处理机制是什么?:net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止
56. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?:attribute:自定义属性的基类;property :类

中的属性(get set)
https://www.360docs.net/doc/e27633779.html,相对于ADO主要有什么改进?
https://www.360docs.net/doc/e27633779.html,不依赖于oledb,而是使用.net托管提供的程序;以断开connection而保留当前数据集可用;xml支持;不使用com:不在支持动态游标和服务器端游:强类型转换
58.大概描述一下ASP。NET服务器控件的生命周期
初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载
59.&和&&的区别:&是位运算符,&&是逻辑运算符
60.HashMap和Hashtable的区别:HashMap是Hashtable的轻量级实现,都完成了Map接口,主要区别在于HashMap允许空键值,非线程安全,效率上可能高于Hashtable.
61.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overloaded是方法的重载,要求子类与父类的方法名同,但其它的不同,是可以改变返回值的类型。
Override是方法重写,要求子类与父类完全一致.
62.error和exception有什么区别?:error表示一种很严重的问题,exception表示一种设计或实现出错,轻量级的
63.<%# %> 和 <% %> 有什么区别?:<%# %>表示绑定的数据源,<% %>是服务器端代码块
64.重载与覆盖的区别?
方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系
覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
覆盖要求参数列表相同;重载要求参数列表不同。
覆盖关系中,调用那个方法体,是根据对象的类型(对像对应存储空间类型)来决定;重载关系,是根据调 用时的实参表与形参表来选择方法体的。
65.点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:
根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中



1.const和readonly有什么区别?
const可以用于类的成员常量和局部常量,必须在声明时赋值,之后不可以赋值;
readonly只能用于类的成员变量不能用于局部变量,在声明时可以不赋值,除了在构造函数中可以再次赋值外,其它的地方和const一样也不能赋值
2.接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
抽象类可以有抽象成员,也可以有非抽象成员,接口只有抽象成员;一个类不能同时继承多个抽象类,一个类可以同时实现多个接口.
如果多个子类中有很多代码是重复的,这时采用抽象类,因为可以将这些代码放到抽象类的非抽象方法中,这样可以达到代码复用。
当实现多个接口时因为抽象类不支持,只能使用接口。
3.struct和class有什么区别:struc

t的成员变量在声明时不能赋值,而class可以赋值也可以不赋值;struct没有析构函数,而class可以有析构函数;
struct不能从类继承,但可实现接口,结构是密封的,而class没有限制.
4.try后面一个finally,try中有一个return,那么finally中的代码会不会运行?:会运行,并且在return 后运行
5.以下程序有什么错?
public class TestClass
{ private int count; private static int y;
public static void setvalue()
{
count=1;
y=1;
}
}
:在静态函数中只能访问静态成员变量;以上代码访问了实例成员。
https://www.360docs.net/doc/e27633779.html,中什么类不能被继承?:密封类(Seadel)不能被继承(sealed 可以应用于实例方法和属性,密封方法会重写基类中的方法,但不能被重写,且必须与override一起用)
7.is 和as 有什么区别?:is用来判断一个实例是否属于某个类,返回类型是boolen;as用于引用类型之间执行转换,如果转换失败则返回null
https://www.360docs.net/doc/e27633779.html,中函数传递参数有那些方式?有什么区别?:传值和传引用,传引用又两种方式,ref要求变量在传参前赋值,out可以不赋值;传引用是一个地址,传值是值
9.C#中的委托是什么?事件是不是一种委托?:将方法作为一个参数带入别一个方法叫委托,事件是一种委托
10.在下面的例子里
class A{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A{
int x=1;int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
}

当使用new B()创建B的实例时,产生什么输出?:X=1,Y=0.因为B继承了A类,A的构造函数首先会被运行,但应当注意的是,虽然运行的是A的构造函数,但在A的构造函数中调用的函数首先是在B类中查找,因为PrintFields已被重写,所以最终运行B类中的PrintFields函数。
https://www.360docs.net/doc/e27633779.html, 构架下remoting和webservice两项技术的理解:WebSevice使用HTTP协议,因此可以穿透防火墙。而Remoting使用TCP/IP,二进制传送提高效率。
12.String s=””;和string s=string.Empty;有什么区别?:String s=””分配了两次内在(""与s),string s=string.Empty只分配一次,后者效率更高
13.构造函数是否可被override?:不能.14.是否可以继承String类?string 是密封类,所以不能被继承,但可以被重写.
15.将字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格:inputStr=Regex.Replace(inputStr.Trim(),"\\s+"," ");
16.传入某个属性的set方法的隐含参数的名称是什么?:value,它的类型与属性声明的类型一样.
17.如何在C#中实现继承?:在类名后加上一个冒号,再加上基类的名称
18.C#支持多重继承么?:不支持。可以用接口来实现
19.被protected修饰的属性/方法在何处可以访问?:

在继承或间接继承与这个类的子类中可以访问。
20. 私有成员会被继承么?:会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
21.C#中所有对象共同的基类是什么?:System.Object
22.在方法定义中,virtual有什么含意?:被virtual修饰的方法可以被子类覆写。
23.能够将非静态的方法覆写成静态方法么?不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
24.可以覆写私有的虚方法么?:不可以,甚至子类中无法访问父类中的私有方法。
25. 能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?:可以,标记这个类为public,并标记这个方法为sealed。
26.接口(interface)是什么?:只含有共有抽象方法的类。这些方法必须在子类中被实现。
27.为什么不能指定接口中方法的修饰符?:接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
28.如何区别重载方法?:不同的参数类型,不同的参数个数,不同的参数顺序,不同的返回类型.
29.什么叫应用程序域?:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。
https://www.360docs.net/doc/e27633779.html,的身份验证方式有哪些?分别是什么原理?
windows身份验证: IIS根据应用程序的设置执行身份验证;Forms验证:用Cookie来保存用户凭证;Passport验证:通过Microsoft的集中身份验证服务执行的
31.写出一条Sql语句:取出表A中第31到第40记录:SELECT TOP 10 * FROM A WHERE ID NOT IN(SELECT TO 30 ID FROM A);
32.面向对象的语言具有________性、_________性、________性:封装,多态,继承
33.DataReader和DataSet的异同:
DataReader使用时始终占用SqlConnection,在线操作数据库,占用的内存小效率高,只读取数据;
DataSet则是将数据一次性加载在内存中,读取完毕即放弃数据库连接,消耗内存大,可以动态对数据进行更新
34.在.net(C# or https://www.360docs.net/doc/e27633779.html,)中如何获得当前窗体或控件的句柄:this(C#) ME(vb)
35.在.net(C# or https://www.360docs.net/doc/e27633779.html,)中,Appplication.Exit 和 Form.Close有什么不同?:退出整个应用程序,关闭一个窗口
36.什么是Web Service?:Web Service便是基于网络的、分布式的模块化组件,遵守具体的技术规范,能与其他兼容的组件进行互操作。
37.WCF 对WebSerice 的优势:WCF 能实现Webserice所有功能,并体现面向服务的程序思想,开发基于SOA的分布式系统变得容易




1.Collection 和 Collections的区别。:Collection是集合类的接口,继承他的主要接口是Set和List;Collections是集合类的帮助(搜索,排序,线程,安全化)类.
2.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?:.ceil 向上

取整;.floor向下取整;round四舍五入;
3.sleep()和wait()的区别?:sleep是线程类的方法,导致此线程暂停,到时后会自动恢复;wait是Object类的方法,本线程进入等待,只有发出notify方法后本线程才恢复.
4.给我一个你最常见到的runtime exception?:整数除以零”时,抛ArithmeticException;空指针时,抛NullPointerException;下表越界,ArrayIndexOutOfBoundsException
5.存储过程和函数的区别:声明(prosedure,function);存储过程可以返回参数,而函数只能返回值或者表对象;存储过程作为独立的部分,函数作为查询语句的部分;
6.事务是什么?有几个特性?:事务是单个逻辑工作单元,要么全部做完,要么全部不做,事务由两种状态(提交,回滚),事务有四个特性:原子性,一致性,隔离性,永远性;
7.游标的作用?如何知道游标已经到了最后?:游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。
8.SC(S#,C#,SCORE) 成绩表( S#:学号;C#,课程编号;score:成绩),查询“001”课程比“002”课程成绩高的所有学生的学号
SELECT S# FROM (SELECT S#, SCORE FROM SC WHERE C#='001')A, (SELECT S#,SCORE FROM SC WHERE C# WHERE C#='002')B
WHERE A.SCORE > B.SCORE AND A.S# = B.S#
查询平均成绩大于60分的同学的学号和平均成绩
SELECT S#,AVG(SCORE) AS AVGSCORE FROM WHERE AVGSCORE >60 GROUP BY S#
Student(S#,Sname,Sage,Ssex) 学生表 查询所有同学的学号、姓名、选课数、总成绩
SELECT STUDENT.S#,STUDENT.SNAME,COUNT SC.C#,SUM(SCORE) FROM
STUDENT LEFT JOIN SC ON STUDENT.S# = SC.S# GROUP BY STUDENT.S#,STUDENT.SNAME
Teacher(T#,Tname) 教师表 查询姓“李”的老师的个数
SELECT DISTINCT(COUNT(TNAME)) FROM TEACHER WHERE TNAME LIKE '李%'(DISTINCT:取不同的数)
Course(C#,Cname,T#) 课程表 查询没学过“叶平”老师课的同学的学号、姓名
SELECT STUDENT.S#,STUDENT.SNAME FROM STUDENT.S# NOT IN
(SELECT DISTINCT(SC.C#) FROM COURSE,SC,TEACHER FROM SC.S# = COURES.C# AND COURES.T# = TEACHER.T# AND TEACHER.TNAME = '叶平')
查询学过“001”并且也学过编号“002”课程的同学的学号、姓名
SELECT STUDENT.SNAME,STUDENT.S# FROM STUDENT WHERE STUDENT.S# IN(
SELECT DISTINCT(SC.S#) FROM SC AS A WHERE A.C#='001' AND A.S# IN (SELECT SC.S# FROM SC B WHERE B.C# ='002'))
查询学过“叶平”老师所教的所有课的同学的学号、姓名
SELECT STUDENT.S#,STUDENT.SNAME FROM STUDENT WHERE STUDENT.S# IN(
SELECT SC.S# FROM SC,COURSE,TEACHERE WHERE
SC.C# = COURSE.C# AND COURSE.T# = TEACHER.T# AND TEACHER.TNAME = '叶平')
查询所有课程成绩小于60分的同学的学号、姓名
SELECT student.S#,STUDENT.SNAME FORM STUDENT WHERE STUDENT.S# NOT IN
(SELECT DISTINCT(CS.S#) FROM SC WHERE SC.COURE >60)
查询没有学全所有课的同学的学号、姓名
SEL

ECT STUDENT.S#,STUDENT.SNAME FROM STUENT,
(SELECT SC.S#,COUNT(C#) SCC# FROM SC WHERE SCC# < (SELECT COUNT(C#) COURSEC# FROM COURSE) GROUP BY SC.S#) A
WHERE STUDENT.S# = A.S#
查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名
SELECT STUDENT.S#,STUDENT.SNAME FROM STUDENT
WHERE STUDENT.S# IN (SELECT DISTINCT(B.S#) FROM SC B WHERE B.C# IN (SELECT A.C# FROM SC A WHERE A.S# ='1001')
)
把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩(Oracle没有update from语法)
UPDATE SC SET SC.SCORE = ASC.ASCORE
FROM (SELECT AVG(SC.SCORE) AS ASCORE,SC.C# FROM SC,TEACHER,COURSE
WHERE TEACHER.T# = COURSE.T# AND COURSE.C# = ASC.C# AND TEACHER.TNAME ='叶平' GROUP BY SC.C#)ASC
WHERE SC.C# = ASC.C#;
查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名
SELECT STUDENT.S#,STUDENT.SNAME FROM STUDENT WHERE STUDENT.S# IN(
SELECT SC.S# FROM SC
WHERE COUNT(SC.C#)=(SELECT COUNT(SC.C#) FROM SC.S#='1002') AND SC.C# IN (SELECT SC.C# FROM SC.S#='1002') AND SC.S# ! = '1002'
)
删除学习“叶平”老师课的SC表记录
DELECT SC WHERE SC.C# IN (SELECT COURSE.C# FROM COURSE,TEACHER WHERE COURSE.T# = TEACHER.T# AND TEACHER.TNAME='叶平')
9.数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式
10.SQL语言包括:数据定义、数据操纵(Data Manipulation),数据控制(Data Control)
数据定义:CREATE TABLE,ALTER TABLE,DROP TABLE
数据操纵:SELECT INSERT,UPDATE,DELETE
数据控制:GRANT,REVOKE
11.UML:统一建模语言
12.SQL语句优化的策略都有哪些?:
1.建表时,尽量建立主键,根据主键查询数据;2.删除大数据时,用TRUNCATE TABLE(速度快,而且效率高,功能上与不带WHERE子句的 DELETE 语句相同)代替DELETE
3.合理使用索引;4.查询时用确定的列名,少用*号;5.多用COMMINT语句提交事务,及时释放资源,提高效率;
13.当部门表的名称为空时,用0来代替: SELECT (CASE WHEN NAME='NULL' THEN '0' ELSE NAME) FROM TABLENAME
14.删除员工表中的姓名重复的数据,只保留重复数据中的一条数据:DELECT TABLENAME WHERE ID NOT IN (SELECT MAX(ID) ID FROM TABLENAME WHERE GROUP BY NAME

https://www.360docs.net/doc/e27633779.html,/html/2011/05/9314.html
接口,是可以多继承,类只有单继承.




1.介绍https://www.360docs.net/doc/e27633779.html,:建立在通用语言运行库的程序架构,用于开发功能强大的WEB应用程序
2.说明https://www.360docs.net/doc/e27633779.html,的APPLICATION特性:APPLICATION用于记录不同用户访问网站留下的信息,支持启用和结束等事件
3.简述https://www.360docs.net/doc/e27633779.html,的页面运行机制:
4.简述https://www.360docs.net/doc/e27633779.html,一个页面的生命周期:
5.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?
:尽可能用约束(CHECK,主键,外键,非空字段)实现,效

率最好;其次是触发器,这种方试可以保证任何业务系统访问数据库都能维持数据库的
完整性,一致性;最后是自写业务逻辑,这种方式效率最低,编程最复杂.
6.什么是锁:是在多用户环境中对数据访问限制.维护数据的安全,防止并发数据操作问题,保证事务的完整性和并发性
7.什么是索引,有什么优点:与书的目录类似,使数据库程序无需扫描整个表,就可以找到需要的数据,能大大的提高数据库的性能.
8.视图是什么?游标是什么?
:视图是一种虚拟表,可以对其进行增删查操作,但对基表不影响(效率与方便);
游标是将结果作为一个单元来处理,可以定位结果的行,对其进行有效的修改
9.什么是存储过程,有什么优点?:是一组预编译的SQL语句。优点:一次创建,任意调用;同一操作比SQL语句执行更快;减少网络流量;更好的安全机制(可以授权)
10.什么是触发器,有什么优点?:触发器是一种特殊的存储过程,主要通过事件触发而执行.
强化约束,跟踪变化,联级运算
11.概述三层结构体系:表示层(UI),业务逻辑层(BLL),数据访问层(DAL)
12.简述WebService:可以在WEB上部署并可以被任何应用程序或其它服务调用的功能.所谓服务就是系统提供一组接口,并通过接口使用系统的功能
13.列举一下你所了解的XM技术及其应用:做网页,数据库
14.DataGrid的Datasouse可以连接什么数据源:DATATABLE,DATASET,DATAVIEW,DATAVIEWMANAGER,ILISTSOURCE接口组件,ILIST接口组件
15.概述O/R Mapping 的原理:利用反射,配置将对象和数据库表映射
16.可访问性级别有哪几种:public:访问不被限制;protected,限于类中或该类的派生类中;internal:当前程序集中;private:类中
17.C#中,string str = null 与 string str ="",请尽量用文字说明区别:null初始化对象;""初始化对象分配空间























相关文档
最新文档