.net 笔试面试总结(3)
-
什么是Sql注入?如何避免Sql注入?
用户根据系统的程序构造非法的参数从而导致程序执行不是程序期望的恶意Sql语句。
使用参数化的Sql就可以避免Sql注入。
- 数据库三范式是什么?
第一范式:字段不能有冗余信息,所有字段都是必不可少的。
第二范式:满足第一范式并且表必须有主键。
第三范式:满足第二范式并且引用其他的表必须通过主键引用。
eg: 员工内部->自己的老大->外部的老大
记忆顺序:自己内部不重复->别人引用自己->自己引用别人
- Application 、Cookie和 Session 两种会话有什么不同?
Application是用来存取整个网站全局的信息,而Session是用来存取与具体某个访问者关联的信息。Cookie是保存在客户端的,机密信息不能保存在Cookie中,只能放小数据;Session是保存在服务器端的,比较安全,可以放大数据。
谈到Session的时候就侃Session和Cookie的关系:Cookie中的SessionId。和别人对比说自己懂这个原理而给工作带来的方便之处。
- 泛型 (参考)
- 什么是泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。
- 泛型就是将类型抽象化,使用抽象化的类型或对象去实现某些功能和业务,然后所有需要使用这些功能和业务的具体类型去调用泛型的方法和委 托。
- 使用泛型有什么优势?
(1)保证了类型安全: 泛型约束了变量类型,保证类型安全 。(2) 避免了不必要的装箱、拆箱操作,提高程序的性能。 (3) 提高算法、方法的重用性
- 泛型应用举例 : (1) 泛型方法使用: DataTable转换为对应的List<T>集合、将DataGridViewRow对象转换成对应的实体Model的方法 (2) 泛型类使用(3) 泛型接口以及泛型继承的使用 (4) 泛型委托使用 (5) 泛型约束
- 使用泛型方法的注意事项 :
泛型的重载: 泛型不可以被重载
泛型的重写: 泛型可以被重写,但是注意泛型约束的继承
- 反射 (参考)
- 反射应用场景:
(1) 有时候不知道具体类型,通过反射DLL得到具体的对象
(2) 某些特殊方法,传过来的是泛型类,需要通过反射处理某些特殊的业务
(3) 通用方法DataTable和List<T>的相互转化时需要用到反射
- 如何使用反射
(1)反射dll得到类成员
(2) 反射对象的私有成员
(3) 反射对象的静态成员
(4) 反射得到对象以及对象的操作 。反射得到对象有两种方式, 通过反射对对象属性的取值和赋值
- 数据库索引作用和优缺点?(参考)
优点:(1) 通过创建唯一性索引,可以保证数据表中每一行数据的唯一性
(2)可以大大加快 数据的检索速度,这也是创建索引的最主要的原因
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
(4) 在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
(5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
缺点:(1)创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加
(2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
(3) 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。