.net与技术经理面谈时经常被提问到的相关技术点
One:数据库篇
一、SQLSERVER视图包括:
1、普通视图
2、索引视图(对应ORACLE中是物化视图)
主要用于多表连接、表自身多次连接的情况,并有数据运算逻辑时,可用索引视图。
缺点:会带来性能的消耗,由于是真实表的物理镜像,所以会导致物理表发生改变时会同步索引视图。
3、分割视图
二、事务(ACID)
A:原子性,C:一致性,I:隔离性,D:持久性
所有SQL Insert/Delete/Update/Query都是基于事务处理的,非显示指定Begin Tran,也执行了事务
事务SQL语法
Begin Tran
select * from Tpage
if @@ERROR >0
rollback tran
else
commit tran
三、索引
1、索引基础知识(图例引用自CareySon大神博客)
索引是以B树存储,数据以页存储,页的大小为8KB。删除聚集索引会导致所有非聚集索引重建。
索引分为聚集索引和非聚集索引。
聚集索引为在物理上有序排列,占用实际磁盘空间并且当插入或删除行时会引起磁盘中物理顺序重新排列。导致性能的消耗。
可以将非聚集索引放到另一磁盘空间,以减少一个磁盘的IO消耗。
B-
2、索引碎片
当数据量增长或是其它原因(索引列选择不当)导致索引碎片增加,碎片增加后影响索引性能,此时需要重新建立索引,以提高性能
3、锁和锁的粒度
锁 lock
查询不加锁nolock,存在问题:会读取到脏数据,具体使用场景看业务逻辑
two:asp.net
1、接口和抽象类的区别
对于公用的实现代码,抽象类能够保证实现的层次关系,避免代码重复。(如DbHelper操作类)。接口定义行为能够更有效地分离行为与实现,为代码的维护和修改带来方便。
2、SESSION&END事件
Session需要知道的是什么是SessionID,SessionID是什么是时候产生,保存在哪里?
Session存储于数据库时,是不会触发Session_end事件的,那这时服务器如何知道客户端已断开连接了呢?我们可以通过心跳的方式来确认当前用户的状态。
3、禁用COOKIE后是否能登录
不能,COOKIE的数据在HTTP请求时会一起发送至服务器,否则服务器无法识别当前用户。可以通过 IE F12 查看,每次请求都提交了哪些内容。
4、浏览器中登录网页后,再新开一个窗口(注:同一会话中),服务器如何知道这两个网页的请求来自同一个客户?
由于HTTP是无状态的,无法知道两次访问是否为同一用户,所以在HTTP请求时,同时发送了SessionID至服务器,用于标识身份。
5、如何实现单点登录
要点:首先了解SSO,以及了解如何解决单点登录之后的退出,同原系统的兼容,跨站点域名访问等等。
下一篇: C语言如何重写俄罗斯方块