net模拟面试常见问题及复习资料.docx
《net模拟面试常见问题及复习资料.docx》由会员分享,可在线阅读,更多相关《net模拟面试常见问题及复习资料.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、 Response.Redirect(),Server.Transfer(),Server.Execute()的区别1、Response.Redirect():Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次及服务器的通信(两个来回):第一次是对原始页面的请求,得到一个
2、302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。Server.transfer是IIS 5.0新增加的一个功能。它解决了Response.Redirect的两个重要的缺陷:1)在Response.Redirect中,我们得不到任何第一页的输出2)Response.Redirect会丢失request中的所有属性,当然我们可以通过一些其他的办法,比如session来搞定,可是,有些页的参数是在request中传过来的,这样的话,就不行了;3) Response.Redirect需要client端再发起一个请求。server.transfer就很好地解决了这些问题。它是从s
3、erver端直接向下一页发起请求,不需要client再次发送请求.如果你的网页非常依赖response.redirect,这个小小的改变可以提高将近25%的效率。(根据微软文档).Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。默认
4、情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据与查询字符串。 同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(MachineAuthentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据与查询字符串集合,必须把目标页面Page指令的 EnableViewStateMac属性设置成False。server.Transfer()有一个不足就
5、是:当用户在a.aspx中提交了一个表单,然后用Server.Transfer()进入 b.aspx,这时如果用户刷新一下页面,浏览器便会问用户是否“重试”发送表单,如果用户点击“是”,那么,表单中的数据被重新发送到服务器。如发送表单的作用就是为了向数据库中插入一条记录,结果导不希望发生的事同一表单被多次加入到数据库中。Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用
6、页面的表单数据与查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。4.erver.Execute(another.aspx)与Server.Transfer(another.aspx)区别: Execute是从当前页面转移到指定页面,并将执行返回到当前页面 Transfer是将执行完全转移到指定页面 总结:在网络状态较好的情况下,Redirect(url)方法效率最高! 可重定向到同一台或非同一台服务器上的aspx或非aspx(html)资源Server.Transfer方法与Server.Execute方法最灵活! 但只能转到同一App
7、lication目录下,也有可能导致不期望的结果发生Server.Execute方法占用资源最多. 2、 SQL 2005 的新特性是什么 ? 及oracle 有什么区别?一、数据库设计方面1、字段类型。varchar(max)nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。但是这就引发了对varchar与char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQL Server的字段类型更加简洁统一
8、。XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)2、外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。但是再开发调试阶段与OLAP环境中,外键是可以建立的。新版本中加入了SET NULL 与 SET DEFAULT 属性,能够提供能好的级联设置。3、索引附加字段这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。4、计算字段的持久化原来的计算字
9、段其实与虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert与update的负担。OLTP慎用。OLAP可以大规模使用。5、分区表分区表是个亮点!从分区表也能看出微软要做大作强SQL Server的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQL Server2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据与实时数据的处理是很有帮助的。但是需要注意的一点,也是我使用过程中发现的一个问题。在建立function-schema-table后,如果在现有的分区表上建
10、立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。如果你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)6、CLR类型微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的
11、一些概念可以实现了。但是作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是与应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针与高级数据模型。或者是要与操作系统
12、进行Socket通讯的场景。否则建议慎重!7、索引视图索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数与种种限制都让人对它有点却步。8、语句与事务快照语句级快照与事务级快照终于为SQL Server的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!9、数据库快照原理很简单,对要求长时间计算某一时间点的报表生成与防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!二、开发方面1、Ran
13、king函数集其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQL Server2005的row_number比Oracle的更先进。因为它把Order by集成到了一起,不用像Oracle那样还要用子查询进行封装。但是大家注意一点。如下面的例子:select ROW_NUMBER() OVER (order by aa)from tblorder by bb会先执行aa的排序,然后再进行bb的排序。可能有的朋友会抱怨集成的order by,其实如果使用ranking函数,Order by是少不了的。如果担心Order by会影响效率,可以为order
14、by的字段建立聚集索引,查询计划会忽略order by 操作(因为本来就是排序的嘛)。2、top可以动态传入参数,省却了动态SQL的拼写。3、Apply对递归类的树遍历很有帮助。4、CTE个人感觉这个真是太棒了!阅读清晰,非常有时代感。5、try/catch代替了原来VB式的错误判断。比Oracle高级不少。6、pivot/unpivot个人感觉没有case直观。而且默认的第三字段(还可能更多)作为group by字段很容易造成新手的错误。三、DBA管理方面1、数据库级触发器记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。2、多加的系统视图与实时系
15、统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。3、优化器的改进一直以来个人感觉SQL Server的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)4、profiler的新事件观察这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。5、sqlcmd习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQL Server
16、Management Studio的朋友使用。3、 ASP.NET MVC介绍 MVC把一个web应用分成了三个部分:model view与controller。ASP.NET MVC框架提供了一个可以代替 web窗体的基于mvc的应用。 ASP.NET MVC概述mvc的优点: 1.通过把项目分成model view与controller,使得复杂项目更加容易维护。 2.没有使用view state与服务器表单控件,可以更方便的控制应用程序的行为 3.应用程序通过controller来控制程序请求,可以提供丰富的url重写。 4.对单元测试的支持更加出色 5.在团队开发模式下表现更出众 AS
17、P.NET MVC概述web窗体的优点: 1.采用事件驱动模式来控制应用程序请求,由大量服务器控件支持 2.采用页面控制机制,可以为单个页面添加事件处理函数。 3.使用view state与服务器端页面,使管理页面状态信息更加轻松。 4.对人数较少的想使用服务器端控件的开发团队,使用起来更加方便 5.开发起来比mvc模式要轻松简单一些 ASP.NET MVC概述mvc框架特色: 1.分离任务(输入逻辑,业务逻辑与显示逻辑),易测性与默认的测试驱动组件。所有mvc用到的组件都是基于接口并且可以被mock对象测试到,你可以不必在进程中运行controller就可以使用测试。使得测试更加快速与简捷。
18、 2.可扩展的简便的框架。mvc框架被设计用来更轻松的移植与定制功能。你可以加入自己的视图引擎,url重写策略。重载action方法等。mvc也支持Dependency Injection (DI) and Inversion of Control (IOC) 3.强大的url重写机制让你更方便的建立容易理解与可搜索的url。url可以不包含任何文件扩展名,并且可以重写url使其对搜索引擎更加友好。 4.可以使用现有的页面标记、用户控件、模板页。你可以使用嵌套模板页,嵌入表达式,声明服务器控件、模板,数据绑定、定位等等。 5.对现有的程序的支持,mvc让你可以使用如窗体认证与windows认证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- net 模拟 面试 常见问题 复习资料
限制150内