ASP.NET基础

1请解释ASP。NET中的web页面与其隐藏类之间的关系

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下:

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件。

Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类。

aspx页面会编译生成一个类,这个类从隐藏类继承。

 

2、在什么情况下会用到虚方法?它与接口有什么不同?

子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual

在定义接口中不能有方法体,虚方法可以。

实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

 

3DataReader和DataSet的异同?

DataReader使用时始终占用SqlConnection,在线操作数据库

每次只在内存中加载一条数据,所以占用的内存是很小的是只进的、只读的

DataSet则是将数据一次性加载在内存中,抛弃数据库连接,读取完毕即放弃数据库连接(非连接模式)

DataSet将数据全部加载在内存中.所以比较消耗内存,但是确比DataReader要灵活,可以动态的添加行、列、数据,对数据库进行回传更新操作(动态操作读入到内存的数据)。

 

4Server.Transfer和Response.Redirect的区别是什么?

Server.Transfer仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;Response.Redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

Server.Transfer是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 这个过程中浏览器和Web服务器之间经过了一次交互。

Response.Redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。这个过程中浏览器和Web服务器之间经过了两次交互。

 

5、什么是sql注入?如何避免sql注入?

用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。

 

6、数据库三范式是什么?

第一范式:字段不能有冗余信息,所有字段都是必不可少的。

第二范式:满足第一范式并且表必须有主键。

第三范式:满足第二范式并且表引用其他的表必须通过主键引用。

 

7post、get的区别

get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;

使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

用get的页面可以被搜索引擎抓取,而用post的则不可以;

用post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

用post可以进行文件的提交,而用get则不可以。

 

8Session,ViewState,Application,cookie的区别

Session:用于保持状态的基于 Web 服务器的方法。Session 允许通过将对象存储在Web 服务器的内存中在整个用户会话过程中保持任何对象。主要用于保持代码隐藏类中对象的状态。为每个用户创建的,用于存储单个用户,因为他是相对每个用户的.所以可能来取得在线人数等。

ViewState:主要用于保持 Web 页上控件的状态。当 Web 页上的控件被绑定到代码隐藏类中的对象。

Application 用于存储所有用户都可视的信息.所以它存储的是要让所有用户共享的一些信息.如总访问数等Cache,页面缓存。

Cookie:通常我们都把它放在客户端,也可以存储在服务器端。主要用它存储用户的个性设制,和登录信息。

 

9Application 、Cookie和 Session 种会话有什么不同?

Application是用来存取整个网站全局的信息,而Session是用来存取与具体某个访问者关联的信息。Cookie是保存在客户端的,机密信息不能保存在Cookie中,只能放小数据;Session是保存在服务器端的,比较安全,可以放大数据。

 

10Session有什么重大BUG,微软提出了什么方法加以解决?

IIS中由于有进程回收机制,系统繁忙的话Session会丢失,IIS重启也会造成Session失。这样用户就要重新登录或者重新添加购物车、验证码等放到Session中的信息。可以用State Server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。但是这不是Bug,只能说是In-Proc方式存储Session的缺陷,缺陷是和Bug不一样的,In-Proc方式存储Session会由服务器来决定什么时候释Session,In-Proc方式不满足要求的话完全可以用StateServer和数据库的方式。

StateServer还可以解决集群Session共享的问题。

 

11、Asp.net中的错误机制

1)定制错误页来将显示一个友好的报错页面。

2)页面中未捕获一样会触发Page_Error,应用程序中的未捕获异常会触发Application_Error。通过HttpContext.Current.Server.GetLastError()拿到未捕捉异常,记录到Log4Net日志中。

 

12、介绍几个使用过的开源的项目?

Lucene.net、NPOI、JQuery、ASP.Net AJAX  toolkit、Quartz.Net、JqueryUI、ASP.Net MVC。在CodePlex、SourceForge等网站上有更多的开源项目。

 

13、如何提高页面的显示速度?假如一个页面的加载时间是10.89s,你会用什么样的方式进行优化?

首先要找出问题所在,是服务器端运行的速度慢还是服务器端到客户端的下载慢还是页面在浏览器的加载速度慢。

如果是服务器端运行速度慢,则找是数据库的原因还是算法的问题,如果是数据库的问题则尝试添加索引、优化SQL语句,如果是算法的问题,则优化算法。如果对于一些不经常改动的页面可以使用静态页技术!对于一些数据不需要及时更新的而且取数据的过程非常耗时可以使用缓存。页面中的内容可以按需加载(比如说可以像verycd网站的评论那样当用户需要看的时候再加载其内容),可以在图片需要显示的时候再进行加载。

如果是服务器端到客户端的下载慢则看是页面体积过于臃肿还是网络问题,如果是页面体积过于臃肿,则优化HTML代码,去掉无用的标签,压缩JS、CSS,可以用CSS Spirit技术将多个图片放到一个图片中,减少向服务器的请求。如果是网络问题,则尝试在不同的网络、地区部署服务器,然后使用CDN技术加速访问。

如果是页面中的JavaScript运行复杂导致运行速度慢,则优化JavaScript。

webkaka:测网速。

 

14、在程序编码的时候,你会对SQL注入漏洞的防范采取什么样的措施?

尽量不要拼SQL语句!使用参数化查询或存储过程可以防止SQL注入攻击!在必须用SQL拼接的地方对用户输入的内容进行检查、过滤。

 

15、你会采用什么样的策略和方法来实现系统缓存?

在ASP.NET中 缓存有 页面缓存,数据源缓存,和一些自己定义的缓存!

对于那些整个页面不经常变化的我们可以使用页面缓存,而对于那些执行非常耗时的SQL语句并且数据的及时性要求不高的我们可以使用数据源缓存。

对于页面缓存、数据源缓存等都不满足要求的情况下采用直接操作HttpRuntime.Cache来自定义缓存策略。如果需要用多台Web服务器作为一个集群来承载网站的情况,则可以部署专门的分布式缓存服务器,比如Memcached。

 

16、网站想要实现文件防盗链的功能,说说你的解决方案?

读取HTTP报文头中的UrlReferrer在Application_BeginRequest中我们可以判断用户的请求是否来源于本网站。如果不是我们可以终止用户的请求(Response.End();)!

 

17进程和线程的区别?

进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

 

18Ajax操作怎么处理session过期?

当Session过期时,我们获取请求头信息值判断是否为ajax请求,如果是,我们可以返回特定格式的JSON数据,客户端可以对此数据处理,发现session失效,可以跳转到其他页面如登录等。

 

19简要谈一下你对微软.Net架构下remoting和webservice两项技术的理解及实际中的应用

Remoting可以利用TCP/IP,二进制传送提高效率,webservice可利用http,穿透防火墙。

远程逻辑调用,remoing接口只能用在.net remoting是.net 中用来跨越machine,process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建,它是分布应用的基础技术.相当于以前的DCOM

WebService是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型。

 

20、序列化有何作用?

通过流类型可以方便地操作各种字节流,但如何把现有的实例对象转换为方便传输的字节流,就需要用到序列化的技术。

 

21.Net中会存在内存泄漏吗请简单描述。

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。.Net中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。虽然.Net可以回收无用的对象,但是.Net仍然存在由于使用不当导致的内存泄露问题。.Net中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是.Net中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是.Net中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局Dictionary对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

 

22、请编程遍历WinForm页面上所有TextBox控件并给它赋值为string.Empty?

foreach (System.Windows.Forms.Control control in this.Controls)

{

if (control is System.Windows.Forms.TextBox)

{

System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;  

tb.Text = String.Empty ;

}

}

 

23、谈谈你对MVC和三层架构的理解

MVC即模型、视图、控制器,模型表示业务数据及业务处理,用来封装数据及行为;视图是用户看到并与之交互的界面;控制器接受用户输入并调用模型和视图去完成用户的请求。使用MVC有利于关注点分离,自动化UI测试成为了可能。

三层架构即表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。表现层通俗讲就是展现给用户的界面,业务逻辑层即针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。数据访问层:该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

 

24在MVC中如何保持Sessions?

可使用tempdata、viewdata、viewbag三种方式。其中tempdata:在不同的控制器或动作间转换时保持数据。另外,进行页面转向时,tempdata可以保持数据,它是一个内部的Session变量。Viewdata:可以在控制器和视图间保持数据。Viewbag:它是视图数据的动态包装,使用viewbag不需要类型转换,它使用的是内部动态关键词。

 

25MVC中如何做输入验证?

在M层使用数据模型的属性标签形如[Required],在C层使用ModelState.IsValid属性检查数据是否正确,也可在C层使用JavaScript进行数据验证。

 

26已经有了ASPX,为什么还要Razor?哪个更好?

Razor是一个轻量级的视图引擎,MVC3引入,相比ASPX,Razor更干净、轻量级、语法更简单,只需要使用@关键字,如@DataTime.Now

 

27MVC有多少种不同类型的结果类型,请详细描述

有12种,最主要的是ActionResult类,它是一个基础类,它有11个子类型。

ViewResult  - 给响应流渲染指定的视图

PartialViewResult  - 给响应流渲染指定的局部视图

EmptyResult  - 返回空的响应结果。

RedirectResult  - 执行一个HTTP转向到指定的URL。

RedirectToRouteResult  -执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定

JsonResult  - 序列化一个ViewData对像到JSON格式。

JavaScriptResult  - 返回一段javascript代码,它可以在客户端执行。

ContentResult  - 写内容到响应流,不需要视图支持。

FileContentResult  - 返回一个文件到客户端。

FileStreamResult  - 返回一个文件到客户端,它提供的是流。

FilePathResult  - 返回一个文件到客户端。

 

28、列举你用过的javascript框架,并简述它们的优缺点

js框架:jQuery EasyUI、ExtJS、Bootstrap、AngularJS等等。

jQuery EasyUI:轻量级web前端ui开发框架,尤其适合MIS系统的界面开发,能够重用jquery插件。

ExtJS:统一的前端UI开发框架,学习难度中等。尤其适合MIS系统的界面开发,开发文档和例子代码都比较完整。缺点是大量的js脚本,降低了运行速度。

Bootstrap:响应式网站开发框架,优点是降低了后端开发人员开发前端页面的难度,统一了界面风格,缺点是界面风格比较单一。

AngularJS:将java后端的优秀特性引入到了js前端,大而全的框架。缺点是学习曲线高,Angular2几乎重写。

 

29、什么是反射?

程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例。

 

8XML 与 HTML 的主要区别

1. XML是区分大小写字母的,HTML不区分。

2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。

HTML:<img src="1.jpg"><br><br>

XML:<img src="1.jpg"></img><br/><br/>

3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。

4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

XML是用来存储和传输数据的

HTML是用来显示数据的

如果使用了完全符合XML语法要求的HTML,那么就叫做符合XHTML标准。符合XHTML标准的页面有利于SEO。

 

30MVC(模型、视图、控制器)架构的控制流程

所有的终端用户请求被发送到控制器。

控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。

附加了模型数据的最终视图做为响应发送给终端用户。

 

31MVC同时适用于Windows应用和Web应用吗?

相比Windows应用,MVC架构更适用于Web应用。对于Windows应用,MVP(Model View Presenter)架构更好一点   。如果你使用WPF和Silverlight,MVVM更适合。

 

32、使用MVC有哪些好处?

隔离了关注点。后台代码被移到单独的类文件,我们可以最大限度的重复利用代码。

自动化UI测试成为可能,因为后台代码移到了.NET类。这让我们更容易做单元测试和自动化测试

 

33、“HTML.TextBox” 和 “HTML.TextBoxFor”有什么不同?

它们两个输出相同的HTML, “HTML.TextBoxFor”是强类型的,但“HTML.TextBox”不是。

 

34MVC的路由选择是什么?

路由选择功能帮你定义一个URL规则,映射URL到控制器。

 

35、在哪里写路由映射表?

在 “global.asax” 文件。

 

36、我们可以映射多个URL到同一个动作吗?

是的,可以。只需要添加多条不同Key名字的记录,并且指定同样的控制器和动作。

 

39、使用hyperlink生成链接,如何从一个视图链接到另一个视图?

使用ActionLink方法,如下图所示。下面的代码生成一个简单的URL,链接到"Home"控制器的GotoHome动作。<%= Html.ActionLink("Home","Gotohome") %>   

     

38、如何限制一个动作的类型为GET或POST?

我们可以给MVC的动作一个HttpGet或HttpPost属性去限制HTTP的类型。

 

39、在MVC中如何保持Sessions?

可以通过三种方式保持: tempdata, viewdata, 和viewbag。

 

40tempdata, viewdata, 和 viewbag之间有什么不同?

Tempdata -在不同的控制器或动作间转换时保持数据。另外,进行页面转向时, Tempdata可以保持数据。它是一个内部的Session变量。

Viewdata - 可以在控制器和视图间保持数据。

ViewBag -  它是视图数据的动态包装。使用Viewbag不需要类型转换。它使用的是内部动态关健词。

 

41MVC的局部视图是什么?

局部视图是一个可重复调用的视图(和用户控件一样),它可以嵌入到视图里面。

 

42ASP.NET MVC是如何运行的

当一个用户请求提交上来后,ASP.NET MVC会针对当前请求实施路由解析,解析的目标就是找到用户需要的 Controller并激活它,执行对应的Action方法,最终返回用户需要的东西。

也就是说,当ASP.NET MVC接收到抵达的请求后,首要任务就是通过该请求解析得到对应的Controller和Action名称,那么它是如何解析的呢?这就要了解一下Asp.Net MVC的路由系统了。

 

43、什么是ASP.NET MVC?

一句话概括:ASP.NET MVC就是建立在ASP.NET平台上,基于MVC模式的,Web应用框架。

详细点说:ASP.NET平台采用管道式设计,具有良好的扩展性。整个ASP.NET MVC框架就是通过自定义ASP.NET的HttpModule和HttpHandler这两个核心组件而建立的。

注:MVC中的Model主要体现为维持应用状态并提供业务功能,但ASP.NET MVC中的Model与之是不同的,后者   仅仅是绑定到View上的数据而已,两者并不是一回事,在学习理解过程中要格外注意,不要混淆。

 

  1. 如何理解ORM框架?

广义上,ORM 指的是面向对象和面向模型和关系型数据库的数据结构之间的相互转换。

狭义上,ORM可以被认为是基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解任何关系型数据库存储数据的实现细节。

 

  1. Entity Framework和ADO.Net的关系和各自的优缺点?

EF是微软以ADO.NET为基础所发展出来的ORM解决方案。
EF开发效率高,代码可读性强,但是生成是sql语句不完全可控。性能理论上比ADO.NET差。

 

  1. EF有几种开发方式?

Model First、DBFirst、CodeFirst

 

  1. IQueryable和IEnumberable接口有什么区别?

IEnumberable<T>泛型类在调用自己的SKip和Take等扩展方法之前数据就已经加载在本地内存里了,IQueryable<T>是将Skip、Take等这些方法表达式翻译成T-SQL语句之后才向SQL服务器发送命令。

IQueryable继承了IEnumberable。

 

  1. EF实例在创建过程中应注意哪些问题?

应保证EF对象在线程内唯一或作用域内唯一。

 

  1. ASP.NET MVC有几种过滤器?

行为过滤器 Action

结果过滤器 Result

授权过滤器 AuthorizeAttribute

异常过滤器 Exception

 

  1. MVC整体运行流程有哪些?

进入管道->路由注册->创建MvcHandle->执行MvcHandle ProcessRequest方法->调用控制器里的Action方法->根据Action方法返回值返回数据。

 

  1. 使用MVC Areas有什么好处?

Areas能将复杂的网站模块化,有利于页面规范。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值