.net 面试题总结(工作经验2年半)

一、Ajax调用的时候,get、post有什么区别?

答:get和post都是向服务器发送一种请求,只是发送机制不同 
   1 GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。 
   2.首先是”GET方式提交的数据最多只能是1024字节”,Post传输的数据量大,可以达到2M。 
   3.get方式请求数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号密码等。在某种情况下,get方式会带来严重的安全问题。而post方式相对来说就可以避免这些问题。 
   4.Post请求必须设置Content-Type值为application/x-form-www-urlencoded; 
   5.发送请求时,因为Get请求的参数都在url里,所以send函数发送的参数为null,而Post请求在使用send方法时,却需赋予其参数;

二、数据库查询 select跟用具体字段查询,哪个性能好些?

mysql 5.1.37 
表记录数41,547,002,即4000w行

使用远程客户端取1000条数据,统计时间:

SELECT * FROM dmsp.dmsp_dimension_content LIMIT 0, 1000; 
时间2.218s,网络消耗0.547s

SELECT id, appid, aop, t, uid, sid, pid, pname, bid, bname, ptype, sm, sv, bt, national, area, ov FROM dmsp.dmsp_dimension_content LIMIT 0, 1000; 
取出所有字段,时间2.250s,网络消耗0.578s 
多次查询(改变limit条件避免缓存),时间变化不大。

结论:两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,大可select *来操作。如果某些不需要的字段数据量特别大,还是写清楚字段比较好,因为这样可以减少网络传输。
 

(1)SELECT *,需要数据库先 分析,Query Table Metadata For Columns,一定程度上为数据库增加了负担。 
       但是实际上,两者效率差别不大。

(2)考虑到今后的扩展性。 
因为程序里面你需要使用到的列毕竟是确定的, SELECT * 只是减少了一句 SQL String 的长度,并不能减少其他地方的代码。

综上:除平时练习使用,其他情况都不推荐使用 SELECT * FROM xxx
原文:https://blog.csdn.net/u014305991/article/details/44964171 

三、linq的where 和select输出格式有什么不同?

四、返回类型 Actionresult 的方法可以重载吗? 返回的类型有哪几种?

   答:不能被重载。

五、.net 怎么实现事务?

 在 ado.net 中实现事务。需要使用事务管理的情况很多,在数据层使用得特别广泛,几乎每一个系统的数据层都会实现事务。数据层的事务都是继承自DBTransaction,派生自IDbTransaction的。

1、 在传统的ADO.NET中使用事务, 启动事务,设定SQLCommand 的事务和连接对象,try 赋值完成提交,catch 数据回滚

2、在DataContext中使用事务,方法极其相似,不同的是SqlCommand中事务为SqlTransaction,在DataContext中事务为DbTransaction

https://www.cnblogs.com/leslies2/archive/2012/01/05/2289106.html

六、对数据库作业有经验吗?

打开数据库,

找到SQL Server代理>作业,首先代理是要启动的,如果没有启动,请先将其启动,

点击右键,再点击”新建作业“,在”常规“里面填写作业名称,可以加上作业描述,比如改作业是做什么的。

点击左边导航条中的“步骤”,再点击下边的”新建作业“

在填出框中的”常规“属性里面填写步骤名称,类型一般默认,运行身份不用填写,选择你要执行操作的数据库,在下面那个白色大框里面填写要执行的数据库代码

在”高级“里面可以根据需要进行设置,设置好后就点击保存

接下来就是比较重要的设置工作了,点击左边导航栏的”计划“项,点击下方的”新建“

根据自己的需求勾选选项,选好后点击”确定“。最重要的就是上面那些,左边其他选项可以根据自己的需要进行设定

https://jingyan.baidu.com/album/08b6a591adc39314a909224e.html?picindex=1

七、数据库优化方面有什么了解?

数据库性能优化主要包括以下几个方面:

1、sql语句的执行计划是否正常;

2、减少应用和数据库的交互次数、同一个sql语句的执行次数;

3、数据库实体的碎片的整理;

4、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力;

5、对访问频繁的数据,充分利用数据库cache和应用的缓存;

6、数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能。

八、SQL,得到成绩最高的人的名字

SELECT name FROM dbo.StudentScore WHERE score = (
select MAX(score)  from StudentScore )

九、了解索引吗?

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

聚集索引,非聚集索引,联合索引,索引覆盖。

聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用primary key来约束。

https://www.cnblogs.com/spectrelb/p/7197593.html

十、前端怎么引用包?

      配置引用路径

11、url简化?

12、二维码怎么生成?

13、session 和token 和cookie

十四、面向对象的三个基本特征

     答:封装,继承,多态

十五、ActionResult 可以有几种返回值类型

    1.返回ViewResult视图结果,将视图呈现给网页

    2.返回PartialViewResult部分视图结果,主要用于返回部分视图内容

    3.返回ContentResult用户定义的内容类型 

    4.返回JsonResult序列化的Json对象(主要用于返回json格式对象,可以用ajax操作;)

    5.返回JavaScriptResult可在客户端执行的脚本

   6.返回FileResult要写入响应中的二进制输出,一般可以用作要简单下载的功能

   7.返回Null或者Void数据类型的EmptyResult 

    8.重定向方法:Redirect / RedirectToAction / RedirectToRoute

16、对.net 机制十分了解

17、行转列 ,学生,成绩,月份

静态SQL,指月份只有一月和二月

select * from StudentScore 
pivot (max(score)  /*行转列后 列的值*/
for months         /*需要行转列的列*/ 
in (一月,二月) ) /*列的值*/
b

动态,不止1月和2月

declare @sqla varchar(8000)
select @sqla = isnull(@sqla + ',' , '') + months from StudentScore group by months
exec ('select * from StudentScore pivot (max(score) for months in (' + @sqla + ')) b')

猜你喜欢

转载自blog.csdn.net/u012110480/article/details/84575689