基础知识整理大全Word下载.docx
《基础知识整理大全Word下载.docx》由会员分享,可在线阅读,更多相关《基础知识整理大全Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
5、C#中的委托是什么?
事件是不是一种委托?
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托
6、是大法师的
7、是大法师的
8、存储过程和sql语句的优缺点
优点:
1.提高性能,减少网络传输,节约时间
。
2.减少网络流量
存储过程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问都传递很长的sql语句。
4.安全性
减少sql注入式攻击。
5.可维护性高
更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
缺点:
1.交互性差
2.可移植性差
9、能够阻止某一个类被其他类继承吗?
可以,使用关键字sealed
10、能够实现允许某个类别继承,但不允许其中的某个方法被覆写吗?
可以,标记这个类为public,并标记这个方法为sealed。
11、在方法定义中,virtual有什么含义?
被virtual修饰的方法可以被子类覆写
12、能够将非静态的方法覆写成静态方法吗?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
13、解释virtual、sealed、override和abstract的区别
virtual申明虚方法的关键字,说明该方法可以被重写
sealed说明该类不可被继承
override重写基类的方法
abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。
14、大法官法大声道
15、随碟附送地方
16、(Ilasm.exe)工具程序以MSIL文件作为输入,生成包含MSIL代码的托管PE文件。
17、在.net编程中,术语“托管环境”是(.net公共语言运行库)
18、在.net(C#or)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)
this(C#)Me().
19、DateTime是否可以为null?
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
20、net的错误处理机制是:
采用try->
catch->
finally结构
21、error和exception区别:
error
表示恢复不是不可能但很困难的情况下的一种严重问题。
比如说内存溢出。
不可能指望程序能处理这样的情况。
exception
表示一种设计或实现问题。
也就是说,它表示如果程序运行正常,从不会发生的情况。
22、GerGET与POST的区别
在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?
分开与url分开。
字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISOLatin-1)值。
GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
在使用POST方法的情况下,传输数据时不会将数据作为URL的一部分;
它们会作为一个独立的实体来传输。
因此,POST方法更安全,你也可以用这个方法传输更多的数据。
而且用POST传输的数据不一定要是文本,用GET方法传输的却一定要是文本。
(1)get是从服务器上获取数据,post是向服务器传送数据。
(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;
POST方式,数据放置在HTMLHEADER内提交。
(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3)安全性问题。
正如在
(1)中提到,使用Get的时候,参数会显示在地址栏上,而Post不会。
所以,如果这些数据是中文数据而且是非敏感数据,那么使用get;
如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。
23、Response.Redirect和Server.Transfer
请求的过程:
1)浏览器aspx文件请求--->
服务器执行--->
遇到Response.Redirect语句->
服务器发送Response.Redirect后面的地址给客户机端的浏览器--->
浏览器请求执行新的地址
2)浏览器aspx文件请求->
服务器执行->
遇到Server.Transfer语句->
服务器转向新的文件
可以见Server.Transfer比Response.Redirect少了一次服务器发送回来和客户端再请求的过程.
跳转对象:
1)Response.Redirect可以切换到任何存在的网页。
2)Server.Transfer只能切换到同目录或者子目录的网页.
数据保密:
1、Response.Redirect后地址会变成跳转后的页面地址。
2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。
具有数据保密功能。
传递的数据量(网址后附带的参数):
1、Response.Redirect能够传递的数据以2KB(也就是地址栏中地址的最大的长度)为限。
2、传递的数据超过2KB时,务必使用Server.Transfer。
24、提高.NET的性能
1使用异步方式调用Web服务和远程对象
只要有可能就要避免在请求的处理过程中对Web服务和远程对象的同步调用,因为它占用的是的ASP.NET线程池中的工作线程,这将直接影响Web服务器响应其它请求的能力。
2使用适当的Caching策略来提高性能
3判断字符串,不要用"
"
比较。
//避免
if(strABC!
=null&
&
strABC!
="
)
{}
//推荐
if(!
strABC.IsNullOrEmpty)
4页面优化
5用完马上关闭数据库连接
6尽量使用存储过程,并优化查询语句
7只读数据访问用SqlDataReader,不要使用DataSet
25、简单说明一下泛型的有什么好处?
泛型:
通过参数化类型来实现在同一份代码上操作多种数据类型。
利用“参数化类型”将类型抽象化,从而实现灵活的复用
好处是——类型安全和减少装箱、拆箱。
提高性能、类型安全和质量,减少重复性的编程任务
26、UDP连接和TCP连接的异同
答:
前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.
27、请解释转发与跳转的区别
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面
跳转就是指客户端的跳转
28、在.net中,配件的意思是?
程序集。
(中间语言,源数据,资源,装配清单)
29、概述反射和序列化
反射:
程序集包含模块,而模块包含类型,类型又包含成员。
反射则提供了封装程序集、模块和类型的对
象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。
然后,
可以调用类型的方法或访问其字段和属性
序列化:
序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后使用HTTP通
过Internet在客户端和服务器之间传输该对象。
在另一端,反序列化将从该流重新构造对象。
30、什么叫应用程序域?
CTS、CLS、CLR分别作何解释?
什么是受管制的代码?
什么是强类型系统?
应用程序域可以理解为一种轻量级进程。
起到安全的作用。
占用资源小。
CTS:
通用语言系统。
CLS:
通用语言规范。
CLR:
公共语言运行库。
unsafe:
非托管代码。
不经过CLR运行。
RTTI:
类型识别系统。
31、<
%#%>
和<
%%>
有什么区别?
<
表示绑定的数据源
是服务器端代码块常量
32、Bind和Eval函数的区别
绑定表达式
<
%#Eval("
字段名"
)%>
%#Bind("
1
Eval单向绑定:
数据是只读的
Bind双向绑定:
数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库.
2.当对次表达式操作时候,必须用Eval如<
).ToString().Trim()%>
3绑定控件的属性时要用Bind,而Eval则是其它一些。
例如:
asp:
TextBoxID="
First"
RunAt="
Server"
Text='
FirstName"
'
/>
td>
ProductID"
/td>
33、ASP.net的身份验证方式有哪些?
分别是什么原理?
Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)
34、Session有什么重大BUG,微软提出了什么方法加以解决?
是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sateserver或SQLServer数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件
35、在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。
stringstr=null是不给他分配内存空间,而stringstr="
给它分配长度为空字符串的内存空间。
36、string是值类型还是引用类型?
引用类型
37、String类与StringBuilder类有什么区别?
为什么在.Net类库中要同时存在这2个类?
(简答)
stringBuilder比string更节约内存,所以stringBuilder更快
String对象是不可改变的。
每次使用System.String类中的方法之一或进行运算时(如赋值、拼接等)时,都要
在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
而StringBuilder则不会。
在需要对字
符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不
创建新的对象,则可以使用System.Text.StringBuilder类。
例如,当在一个循环中将许多字符串连接在一起时
,使用StringBuilder类可以提升性能。
38、C#中所有对象共同的基类是什么?
System.Object
39、如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。
40、C#支持多重继承吗?
不支持。
可以用接口来实现。
41、被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。
42、Dfd私有成员会被继承么?
会,但是不能被访问。
所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
43、C#提供一个默认的无参构造函数,当我实现了另外一个有一个参数的构造函数时,还想保留这个无参数的构造函数。
这样我应该写几个构造函数?
两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参构造
函数。
44、大概描述一下ASP.NET服务器控件的生命周期
初始化->
加载视图状态->
处理回发数据->
加载->
发送回发更改通知->
处理回发事件->
预呈现->
保存状态->
呈现->
处置->
卸载
45、F重载与覆盖的区别?
1、方法的覆盖是子类和父类之间的关系,是垂直关系;
方法的重载是同一个类中方法之间的关系,是水平关系
2、覆盖只能由一个方法,或只能由一对方法产生关系;
方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;
重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;
重载关系,是根据调用时的实参表与形参表来选择方法体的。
46、类成员有_____种可访问形式?
this.;
newClass();
.Method;
47、用sealed修饰的类有什么特点?
密封,不能继承。
48、什么是ApplicationPool?
Web应用,类似ThreadPool,提高并发性能。
49、需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
stringinputStr="
xxxx"
;
inputStr=Regex.Replace(inputStr.Trim(),"
*"
"
"
);
50、在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
using指令和语句new创建实例new隐藏基类中方法。
using引入名称空间或者使用非托管资源
new新建实例或者隐藏父类方
51、请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate)简单,但易丢失
application全局
cookie简单,但可能不支持,可能被伪造
inputttype="
hidden"
简单,可能被伪造
url参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
52、.net的错误处理机制是什么?
.net错误处理机制采用try->
finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
53、Df对于这样的一个枚举类型:
enum
Color
:
byte
{
Red,
Green,
Blue,
orange
}
string[]ss=Enum.GetNames(typeof(Color));
byte[]bb=Enum.GetValues(typeof(Color));
54、简述private、protected、public、internal修饰符的访问权限。
当前程序集内可以访问。
55、ADO.NET相对于ADO等主要有什么改进?
1:
不依赖于oledb提供程序,而是使用.net托管提供的程序,2:
不使用com3:
不在支持动态游标和服务器端游4:
可以断开connection而保留当前数据集可用5:
强类型转换6:
xml支持
56、HashMap和Hashtable的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.
57、在.Net托管代码中我们不用担心内存漏洞,这是因为有了_GC_?
58、XML与HTML的主要区别
1.XML是区分大小写字母的,HTML不区分。
2.在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略或者之类的结束标记。
在XML中,绝对不能省略掉结束标记。
3.在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/字符作为结尾。
这样分析器就知道不用查找结束标记了。
4.在XML中,属性值必须分装在引号中。
在HTML中,引号是可用可不用的。
5.在HTML中,可以拥有不带值的属性名。
在XML中,所有的属性都必须带有相应的值。
59、请指出GAC的含义?
全局程序集缓存。
它解决了几个程序共享某一个程序集的问题。
不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目录进行查找。
60、在A中所有的自定义用户控件都必须继承自System.Web.UI.UserControl
61、产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
int[]
intArr
=
new
int[100];
ArrayList
myList
ArrayList();
Random
rnd
Random();
while
(myList.Count
100)
int
num
rnd.Next(1,
101);
if
(!
myList.Contains(num))
myList.Add(num);
for
(int
i
0;
100;
i++)
intArr[i]
(int)myList[i];
62、什么是虚函数?
什么是抽象函数?
虚函数:
没有实现的,可由子类继承并重写的函数。
抽象函数:
规定其非虚子类必须实现的函数,必须被重写。
63、在.Net中所有可序列化的类都被标记为答:
[serializable]
64、为了对一个类实现自定义的序列化,应使该类实现(Iserializable)接口
65、您要创建一个显示公司员工列表的应用程序。
您使用一个DataGrid控件显示员工的列表。
您打算修改这个控件以便在这个Grid的Footer显示员工合计数。
请问您应该怎么做?
(
重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。
)
66、对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?
(多选)(
ABC
)
A.Close
B.DisposeC.Finalize
D.using
E.Quit
67、以下哪个是可以变长的数组?
ArrayList
68、.Net依靠以下哪一项技术解决COM存在的DllHell问题的?
(SideBySide
69、.NetFramework通过什么与COM组件进行交互操作?
Interop
70、用户类若想支持Foreach语句需要实现的接口是:
(
IEnumerableA
71、要创建多文档应用程序,需要将窗体的(IsMdiContainer)属性设为true。
72、接口是一种引用类型,在接口中可以声明(方法、属性、索引器和事件A),但不可以声明公有的域或私有的成员变量。
73、ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。
服务器控件有两种类型,它们是(AHTML控件和Web控件)
74、在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(类型),必要时还要设置参数尺寸。
75、Server.Transfer和Response.Redirect的区别是什么?
(常考)
Server.Transfer仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
Response.Redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
Server.Transfer是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
这个过程中浏览器和Web服务器之间经过了一次交互。
Response.Redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。
这个过程中浏览器和Web服务器之间经过了两次交互。
76、是否可以从一个static方法内部发出对非static方法的调用?
不可以。
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。
也就是说,当一个stat