C#面试(2016年4月)

时间:2021-03-24 15:11:19

1、WebForm和MVC的区别

MVC:

  1)通过model、view、controller将处理后台逻辑代码与前台展示逻辑代码进行了很好的分离;

  2)通过修改路由规则,可以控制生成自定义的url,更利于seo;

  3)强类型view实现,更安全,更高效;

  4)页面更加干净,没有viewstate。

WebForm:

  1)有丰富的服务器端组件;

  2)封装太强,很多底层东西让初学者不是很明白;

  3)页面有viewstate,使得页面臃肿。

2、Ajax同步和异步的区别

jquery的async属性,默认是true:表示异步,false:表示同步。

当async值为true,表示异步,即当ajax发送请求后,在等待服务端返回数据的过程中,前台会继续执行ajax后面的脚本,直到服务端返回正确的结果才会去执行success,

当async值为false,表示同步,即当ajax发送请求后,在等待服务端返回数据的过程中,前台不会继续执行ajax后面的脚本,会一直等待服务端返回结果后才会继续往下执行。

3、聚集索引与非聚集索引的区别

  1)聚集索引确定表中数据的物理顺序,

    非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同;

  2)一个表只能包含一个聚集索引;

  

4、二,十,十六进制转换

..........

5、Sqlserver中char,nchar,varchar与nvarchar区别

  1) char类型: 对一个英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,因为是固定长度,所以速度效率高,char字段上的索引效率级高,比如定义char(20),那么不论你存储的数据是否达到了20个字节,都要占去20个字节的空间(剩余的以空格填满)。

  2)varchar类型:varchar的类型不以空格填满,比如varchar(100),但它的值只是"asp.net",则它的值就是"asp.net",
而char 不一样,比如char(100),它的值是"asp.net",而实际上它在数据库中是"asp.net "(asp.net后共有93个空格,就是把它填满为100个字节)。

  3)nchar类型和nvarchar类型:数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。

6、Truncate table和delete的区别

Truncate table 在功能上与不带 where子句的delete语句相同,二者均删除表中的全部数据行,如下:

--delete Student或下面的语句
delete from Student

Truncate table Student 

二者均删除Student表中的全部数据行。

Truncate table 比 delete速度快,且使用的系统和事务日志资源少。
delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。
Truncate table 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
Truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变,新行标识所用的计数值重置为该列的种子(会把自增的字段还原为从1开始的)。
delete会保留标识计数值。如果要删除表定义及其数据,请使用 drop table 语句。
 
7、Entity Framework4中的Code-First, Model-First和Database-First模式
http://www.entityframeworktutorial.net
http://www.entityframeworktutorial.net/EntityFramework5/entity-framework5-introduction.aspx
http://www.cnblogs.com/n-pei/archive/2010/08/12/1797751.html