.Net面试总结
1.装箱和拆箱是什么?
装箱:装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。
拆箱:从object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。
2..Net为什么不需要考虑内存漏洞问题?
C#中所有托管代码运行结束后都会被GC自动释放掉,除了一些资源需要手动释放外,所以我们不用担心内存泄露等。
3.在面向对象中,把对象发出的服务请求称为什么?类对象所执行的各操作称为什么?
消息,方法。
4.什么和什么基于客户端状态管理?
Cookie和ViewState
5.为防止过度装箱(boxing)和拆箱(Unboxing),net2.0提供了什么?
泛型
6.Ref与out的区别
ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。
使用ref前必须对变量赋值,out不用。
out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。
7.如何提高.net性能?
http://blog.sina.com.cn/s/blog_ab914ce40101bhgn.html
8.存储过程与函数区别?
函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。
8.1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
8.2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
8.3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数
可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
8.4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在
procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
Procedure cache:中保存的是执行计划,当编译好之后就执行procedure cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。
9.全国各地,多个地点上万或更多用户同时向一个web站点发请求,怎么处理这种情况?
9.1.修改IIS配置,提高连接用户数量。
9.2 使用消息队列,MSMQ(此点需要论证)
10.描述事务?
定义:事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。特性ACID:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily)。
11.什么是Remoting?(没使用过,上网搜索)
12.Socket开发常用类及方法?
http://blog.csdn.net/andrew_wx/article/details/6629721
13.类序列化的关键字?
[Serializable]
14.C#三元运算符?
?: