.NET面试题——第5篇 ASP.NET MVC面试题
ps:博主的.net core学习交流群—qq裙:831181779
1. MVC中的视图是用来干什么的?
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)
从结构上看,可以分成三层,
1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。
这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。
2. MVC与webform相比有什么优势?
MVC的优点:
1.通过把项目分成Model、View和Controller,使得复杂项目更加容易维护,减少项目之间的耦合。
2.没有服务器表单控件,可以更方便的控制应用程序的行为
3.应用程序通过Controller来控制程序请求,并提供了原生的UrlRouting功能来重写Url。
4.使Web程序对单元测试的支持更加出色
5.强类型view实现,更安全,更高效。
3. MVC有多少种不同类型的结果类型,请详细描述。
有12种,最主要的是ActionResult类,它是一个基础类,它有11个子类型。
ViewResult - 给响应流渲染指定的视图
PartialViewResult - 给响应流渲染指定的局部视图
EmptyResult - 返回空的响应结果。
RedirectResult - 执行一个HTTP转向到指定的URL。
RedirectToRouteResult -执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定
JsonResult - 序列化一个ViewData对像到JSON格式。
JavaScriptResult - 返回一段Javascript代码,它可以在客户端执行。
ContentResult - 写内容到响应流,不需要视图支持。
FileContentResult - 返回一个文件到客户端。
FileStreamResult - 返回一个文件到客户端,它提供的是流。
FilePathResult - 返回一个文件到客户端。
4. mvc过滤器你使用过吗?用来做什么?
ActionFilter(方法过滤器):接口名为[IActionFilter],在控制器方法调用前/后执行
ResultFilter(结果过滤器):接口名为[IResultFilter],在控制器方法调用完,跳转至view页面前/后执行
AuthorizationFilter(授权过滤器):接口名为[IAuthorizationFilter],所有过滤器中最先执行的
ExceptionFilter(异常处理过滤器):接口名为[IExceptionFilter],在控制器方法抛出异常时执行
5. MVC的生命周期是怎样的?
1) Request 请求到来
2) IIS 根据请求特征将处理权移交给 ASP.NET
3) UrlRoutingModule将当前请求在 Route Table中进行匹配
4) UrlRoutingModule在RouteCollection中查找Request匹配的RouteHandler,默认是MvcRouteHandler MvcRouteHandler 创建 MvcHandler实例.
5) MvcHandler执行 ProcessRequest.
6) MvcHandler 使用 IControllerFactory 获得实现了IController接口的实例,找到对应的HomeController
7) 根据Request触发HomeController的Index方法
8) Index将执行结果存放在ViewData
9) HomeController的Index方法返回 ActionResult
10) Views/Home/Index.aspx将 ViewData呈现在页面上
11) Index.aspx执行ProcessRequest方法
12) Index.aspx执行Render方法 输出到客户端
6. MVC与三层架构比最主要的优势是什么?
三层是: UI 界面层
BLL 业务逻辑层
DAL数据访问层
(特殊的Model实体层)
MVC是:
M Model(模型层) 业务逻辑以及数据库的交互
V View(视图层) 显示数据和提交数据
C Controller(控制器) 负责从视图读取数据,控制用户输入,并向模型发送数据。
两者的区别
三层的 UI = MVC的 View
三层的 Model+ BLL+DAL = MVC的 Model
MVC优点
易于进行单元测试
易于进行测试驱动开发
低耦合性、高重用性、可适用性
较低的生命周期成本
快速的部署
可维护性
有利于软件工程化管理
MVC缺点
内部结构复杂
7. Request与Response的下面有什么方法和作用
Request类:1.getSession():获取Session对象
2.getCookies():获取所有的Cookie,返回一个Cookie数组
3.getMethod():获取请求类型
Response类:1.setHeader():设置消息头
2.addCookie():添加Cookie
3.setContentType():告知浏览器数据类型
8. post和get的区别。
\1. get/post均可向服务器传送页面数据。
\2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
\3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
\4. get传送的数据量较小,不能大于**2KB。post传送的数据量较大,一般被默认为不受限制**。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
\5. get安全性非常低,post**安全性较高**。但是执行效率却比Post方法好。
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
.NET面试题——第5篇 ASP.NET MVC面试题相关推荐
- 2021年最新ASP.NET MVC面试题汇总
这个给.NET开发者们整理了一份<.NET/C#面试手册>,目前大约4万字左右,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间.对于没有跳槽打算的也可以复习一下 ...
- Android面试题之ContentProvider篇,安卓工程师面试题及答案
前言 最近经常被朋友问到的两个问题. 问题一: "从事IT工作3年了,做技术好累啊,是不是做到30岁就不能继续往下做啊?"问题二: "我已经30岁了,还能不能学编程?&q ...
- ASP.NET MVC的View是如何呈现出来的[实例篇]
在<[设计篇]>篇中我们通过对View引擎的总体介绍讲述了从ViewResult的创建到View呈现的原理,为了让读者对View引擎及其View呈现机制具有一个深刻的认识,我们自定义一个简 ...
- 2023前端大厂面试题之JavaScript篇(4)
系列文章: 2023前端大厂面试题之JavaScript篇(1) 2023前端大厂面试题之JavaScript篇(2) 2023前端大厂面试题之JavaScript篇(3) 2023前端大厂面试题之J ...
- 2022前端大厂面试题之JavaScript篇(1)
系列文章: 2022前端大厂面试题之JavaScript篇(1) 2022前端大厂面试题之JavaScript篇(2) 2022前端大厂面试题之JavaScript篇(3) 2022前端大厂高频面试题 ...
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...
- ASP.NET MVC 5 入门指南汇总
原文:ASP.NET MVC 5 入门指南汇总 经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章 ...
- How ASP.NET MVC Works?
一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在" ...
- 前端面试题之计算机网络篇
前端面试题之计算机网络篇 一.HTTP协议 1. GET和POST的请求的区别 2. POST和PUT请求的区别 3. 常见的HTTP请求头和响应头 4. HTTP状态码304是多好还是少好 5. 常 ...
最新文章
- python中get和set使用_Python对象属性的set和get方法
- Java就业难不难?是否要参加Java培训?
- GRE核心词汇助记与精练-List11弯、折、扭
- 网站扛住 100 亿次请求?我们来压测试一试
- 通话录音_iOS 14将支持通话录音功能,但有隐性使用条件
- MYSQL ERROR 1045 错误的解决办法 (转)
- C#编译器对泛型方法调用作类型推断的奇怪问题
- 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第一章
- shell脚本中的 EOF 是什么意思?
- PG-Strom源码分析
- CnOpenData中国上市公司投资者关系管理数据
- 制作NGUI动态字体
- 腾讯企业邮箱申请步骤
- 开源消息总线eventBus学习
- ViewPager系列之ViewPager无限循环滑动
- 几款实用的内网穿透工具,推荐
- 物联网卡为什么不能更换设备?想更换怎么办?
- (四)联想词和top热词的设计与开发
- proteus仿真串口打印
- 201512683信息检索知识