.Net面试经历(1)

今天去了某果旅游网面试回来,有一些基础问题被问到没答出来,工作几年真的忘了好多,一些理论知识也没答出来,写篇记录下来避免后面重复失误。


 一. SQL - Left Join, Right Join & Inner Join

left join(左联结) 返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联结) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值联结) 只返回两个表中联结字段相等的行

Join简单应用


二.手机号正则表达式(没好好学过正则,百度抄的一堆)


1.^1(3|4|5|7|8)\d{9}$

2.^1[34578]\d{9}$

(3|4|5|7|8)和[34578]是一个意思,表示第二位数可以是3 or 4 or 5 or 7 or 8,后面可以再带9位[0-9]的数字




三.SQL Server在什么时候需要加索引以及索引的原理(之前只知道在where条件需要常用到的字段要加索引增加查询速度.)

索引的原理与应用

索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法。

索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书。在数据库中,数据库程序使用索引可以重啊到表中的数据,而不必扫描整个表。书中的目录是一个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表。

索引的利弊:查询执行的大部分开销是I/O,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读取表的每一个数据页,如果有索引指向数据值,则查询只需要读少数次的磁盘就行啦。所以合理的使用索引能加速数据的查询。但是索引并不总是提高系统的性能,带索引的表需要在数据库中占用更多的存储空间,同样用来增删数据的命令运行时间以及维护索引所需的处理时间会更长。所以我们要合理使用索引,及时更新去除次优索引。



四.在查询的时候加入With no lock可以避免死锁(当时答出来了,但是具体细节没说出来)

select from table1 with (nolock)


什么时候可以使用WITH(NOLOCK)? 什么时候不能使用WITH(NOLOCK),这个要视系统业务情况,综合考虑性能情况与业务要求来决定是否使用WITH(NOLOCK), 例如涉及到金融或会计成本之类的系统,出现脏读那是要产生严重问题的。关键业务系统也要慎重考虑。大体来说一般有下面一些场景可以使用WITH(NOLOCK)

   1: 基础数据表,这些表的数据很少变更。

   2:历史数据表,这些表的数据很少变更。

   3:业务允许脏读情况出现涉及的表。

   4:数据量超大的表,出于性能考虑,而允许脏读。

可以去WITH(NOLOCK)简单讲解查阅相关信息


你可能感兴趣的:(面试经历)