版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ASP.NET高频面试题及详细答案(实战版)一、基础概念类1、什么是ASP.NET?和ASP有什么核心区别?ASP.NET是基于.NET框架的服务端Web开发平台,用于构建动态网站、Web接口和后台服务,支持C#、VB.NET等托管语言开发,是目前企业主流的Web开发技术之一。和传统ASP的核心区别:开发模式:ASP是脚本语言,代码与页面混写,维护性极差;ASP.NET支持代码分离、分层架构,逻辑和视图分离,项目结构清晰。运行机制:ASP是解释执行,每次请求都会解析脚本;ASP.NET是编译执行,首次请求编译为IL中间代码,后续请求直接运行,性能更高。语言支持:ASP仅支持VBScript、JScript脚本;ASP.NET支持编译型托管语言,类型安全、语法严谨。功能特性:ASP.NET提供服务器控件、状态管理、缓存机制、身份验证、路由等成熟Web能力,原生适配企业级开发。2、ASP.NETWebForm和MVC的核心区别是什么?项目中如何选择?两者是ASP.NET两种不同的开发框架,核心差异集中在开发模式和设计思想:WebForm:基于控件拖拽的事件驱动模型,模仿桌面程序开发模式,页面包含大量服务端控件,后台通过控件事件处理逻辑,视图由框架自动生成。缺点是页面ViewState体积大、前端耦合严重、不利于前后端分离,适合快速开发简单管理系统。ASP.NETMVC:基于MVC分层设计(模型、视图、控制器),请求路由驱动,无服务端控件、无ViewState,代码轻量化,完全分离业务逻辑和页面展示,适配前后端分离开发,URL友好、可扩展性强,是企业主流选型。选型原则:老旧系统维护、简单后台管理系统可沿用WebForm;新项目、接口开发、需要前后端分离、高扩展性的项目,统一使用MVC。3、什么是.NETFramework和.NETCore(.NET5+)的核心差异?跨平台性:.NETFramework仅支持Windows系统;.NETCore及后续版本支持Windows、Linux、Mac跨平台部署。部署方式:.NETFramework依赖系统全局框架,部署环境要求高;.NETCore支持独立部署,无需安装系统框架,直接运行。性能与轻量化:.NETCore裁剪了冗余组件,启动更快、内存占用更低,高并发场景性能远超传统Framework。模块化:.NETFramework是整体式框架;.NETCore采用模块化NuGet包引用,按需引入组件,项目体积更小。二、运行机制与生命周期4、简述ASP.NET页面的生命周期(WebForm)页面生命周期是页面从接收请求到渲染返回的完整流程,核心步骤如下:页面初始化:初始化页面和控件基本信息,加载页面主题、样式。加载视图状态(ViewState):读取上一次请求保存的控件状态数据,还原页面控件状态。回发数据处理:接收前端提交的表单数据,赋值给对应服务端控件。页面加载(Page_Load):开发者主要编写业务逻辑的阶段,每次请求都会执行。控件事件触发:触发按钮点击、下拉框变更等用户操作事件。视图状态保存:更新本次操作后的控件状态,存入ViewState。页面渲染:将页面控件解析为HTML、CSS、JS,返回给客户端。5、MVC请求的完整执行流程是什么?客户端发送HTTP请求到服务器,IIS拦截请求,将请求转交ASP.NETMVC模块。路由系统根据URL匹配预设的路由规则,解析出对应的控制器名称、动作方法、参数。路由工厂创建控制器实例,通过反射调用对应的Action方法。Action方法执行业务逻辑,调用Model层处理数据、操作数据库。Action返回结果(ViewResult、JsonResult等),视图引擎解析视图页面。将解析后的HTML或数据封装为HTTP响应,返回客户端。6、Application、Session、Cookie、ViewState、Cache的区别与使用场景这五个是ASP.NET核心状态管理和缓存对象,核心差异集中在作用域、生命周期、存储位置:Cookie:客户端存储,数据保存在浏览器,可设置过期时间,随每次请求自动提交。容量小、不安全,适合存储用户偏好、记住登录状态。Session:服务端存储,针对单个用户会话,每个用户独立专属,默认20分钟过期。适合存储用户登录信息、临时会话数据,用户关闭浏览器后失效。Application:服务端全局存储,所有用户共享,应用启动创建、应用关闭销毁。适合存储网站全局配置、全站统计数据。ViewState:页面级存储,仅当前页面有效,存在页面隐藏域中,页面刷新不丢失数据,跳转页面失效。WebForm专属,用于保存控件状态。Cache:服务端全局缓存,支持过期策略、依赖缓存,性能极高,独立于会话。适合缓存高频查询、低频变更的数据,如字典数据、首页数据。三、MVC核心知识点7、MVC中Model、View、Controller各自职责是什么?Model(模型):负责数据和业务逻辑,包含实体类、数据访问逻辑、业务处理逻辑,不参与页面展示,独立处理数据校验、数据库交互。View(视图):只负责页面展示,仅渲染控制器传递的数据,不编写复杂业务逻辑,专注页面UI呈现。Controller(控制器):负责请求调度,接收客户端请求,调用Model处理数据,传递数据给视图,返回响应结果,是视图和模型的中间枢纽。8、MVC中ActionResult有哪些常用返回类型?ActionResult是所有返回结果的基类,项目中最常用的类型:ViewResult:返回视图页面,对应returnView()。JsonResult:返回JSON数据,前后端分离、接口开发最常用,对应returnJson()。RedirectResult:页面重定向,分为永久重定向和临时重定向,对应returnRedirect()。FileResult:返回文件流,用于文件下载、图片预览。ContentResult:返回纯文本、HTML字符串。EmptyResult:返回空结果,无任何响应内容。9、什么是路由?MVC路由的作用是什么?路由是MVC的核心机制,作用是将客户端的URL地址,映射到对应的控制器和Action方法。传统WebForm依赖文件路径匹配页面,MVC完全脱离物理文件路径,通过路由规则匹配请求。默认路由规则:{controller}/{action}/{id},分别对应控制器名、方法名、可选参数。可以自定义路由,实现伪静态URL、自定义接口地址。10、MVC中TempData、ViewData、ViewBag的区别ViewData:字典类型,键值对存储,仅当前视图有效,页面跳转后数据丢失,生命周期仅限单次请求。ViewBag:ViewData的动态封装,使用更简洁,无需强制转换类型,生命周期和ViewData一致,仅当前页面有效。TempData:基于Session实现,支持跨页面跳转传值,数据读取一次后自动销毁,适合跳转页面提示消息、临时传参场景。四、请求与安全相关11、GET和POST请求的区别,项目中如何选用?参数位置:GET参数拼接在URL地址栏,POST参数放在请求体中。数据大小:GET有URL长度限制,无法传输大数据;POST无严格大小限制,支持文件上传、大数据提交。缓存特性:GET请求会被浏览器缓存,重复请求会读取缓存;POST默认不缓存。安全性:GET参数可见,容易泄露、被篡改;POST参数隐藏,相对更安全。选型:查询数据、获取列表、无数据修改用GET;提交表单、新增/修改/删除数据、上传文件必须用POST。12、什么是XSS、CSRF攻击?ASP.NET中如何防护?XSS跨站脚本攻击:攻击者向页面注入恶意JS代码,用户访问页面时执行脚本,窃取用户Cookie、账号信息。防护方式:MVC默认开启视图编码,页面输出数据自动转义;后端接收参数时做特殊字符过滤;设置页面防XSS请求头。CSRF跨站请求伪造:利用用户已登录的身份,诱导用户在第三方页面发起请求,伪造用户操作。防护方式:使用MVC自带AntiForgeryToken防伪令牌,表单提交、接口请求携带令牌验证,拦截伪造请求。13、如何防止SQL注入?SQL注入是通过拼接恶意SQL语句,非法查询、修改、删除数据库数据的攻击方式,项目中主流防护手段:杜绝SQL语句拼接,统一使用参数化查询。使用EF、Dapper等ORM框架,框架底层自动处理参数转义,规避注入风险。后端严格校验用户输入,过滤特殊字符、SQL关键字。数据库账号最小权限配置,禁止使用超级管理员账号连接项目数据库。五、EF与数据访问14、EFFramework三种开发模式及适用场景DatabaseFirst(数据库优先):先设计数据库表,通过EF工具自动生成实体类和上下文。适合老旧数据库维护、已有成型数据库的项目。ModelFirst(模型优先):通过EF可视化模型设计实体关系,自动生成数据库表。中小型项目临时建模使用,目前企业使用较少。CodeFirst(代码优先):先编写实体类和配置,通过代码迁移自动创建、更新数据库。主流企业选型,适配版本迭代、持续更新的项目,支持代码管理数据库版本。15、EF的延迟加载和立即加载区别?如何使用?延迟加载(LazyLoading):查询主表数据时,不加载关联表数据,访问关联属性时才会发起二次数据库查询。默认开启,适合不需要关联数据的场景,减少冗余查询。缺点是频繁访问关联数据会产生多次SQL请求,影响性能。立即加载(EagerLoading):查询主表时,通过Include、ThenInclude一次性加载关联表数据,单次SQL查询获取所有数据。适合需要批量查询关联数据的场景,避免多次数据库交互。六、性能优化与异常处理16、ASP.NET项目常用性能优化方案缓存优化:使用Cache缓存高频低频数据,页面局部缓存、接口缓存,减少数据库查询压力。数据库优化:合理建立索引、避免全表查询、分页查询、优化SQL语句,杜绝冗余联表查询。请求优化:静态资源压缩、CDN加速,合并JS/CSS,减少HTTP请求次数。代码优化:避免循环查询数据库、及时释放资源、using释放数据流,减少内存占用。并发优化:使用异步Action、异步数据库操作,提升服务器吞吐量。17、MVC中如何统一异常处理?项目中不建议每个方法单独写try-catch,统一异常处理方式:重写控制器OnException方法,捕获当前控制器所有异常,统一记录日志、返回错误页面或错误接口信息。注册全局异常过滤器,实现IExceptionFilter接口,全局捕获所有控制器异常,统一处理。配置全局错误页面,针对404、500等状态码跳转自定义页面,提升用户体验。七、部署与常见问题18、IIS部署ASP.NET项目常见报错及解决思路500服务器错误:多为代码异常、数据库连接失败、权限不足,开启详细错误日志,定位具体报错代码行。404找不到页面:路由规则错误、文件路径缺失、IIS未安装URL重写模块,检查路由配置和站点部署文件。权限拒绝:站点文件夹权限不足,给IIS用户添加读写权限。请求超时:数据库查询过慢、接口执行耗时过长,优化SQL和业务逻辑,调整IIS超时时间。19、Session失效、用户频繁掉线的常见原因Session过期时间设置过短,默认20分钟无操作自动失效。IIS应用程序池回收,默认定时回收,会清空服务端Session数据。浏览器清除Cookie,Session依赖Cookie存储会话ID,Cookie丢失则Session失效。服务器重启、站点重启,导致内存中Session数据清空。解决方案:延长过期时间、开启Session状态服务、使用Redis分布式会话存储,避免单点失效问题。20、什么是过滤器?MVC常用过滤器有哪些?执行顺序是什么?过滤器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位笔试-云南-云南医学技术(医疗招聘)历年参考题库含答案详解
- 2026事业单位招聘考试(综合应用能力·E类)历年参考题库含答案详解
- 2026事业单位工勤技能-黑龙江-黑龙江环境监测工五级(初级工)历年参考题库含答案详解
- 2026年油墨行业分析报告
- 基本原理概论在线形考(专题一至八)模拟试题及答案详解
- 2026年心理普查测试模拟试题及答案详解
- 2026年中式面点师考试实操技能模拟试题及答案详解
- 2026年中国包装饮用水市场深度评估与投资战略咨询报告
- 2026年血小板减少性紫癜治疗效果评估模拟试题及答案详解
- 2026年泰州安全c证模拟试题及答案详解
- 肝脓肿术后的护理查房
- 教师系列任现职以来教学工作情况证明材料
- GB/T 19183.1-2024电气和电子设备机械结构户外机壳第1部分:设计导则
- 绿网苫盖合同范例
- TD-T 1048-2016耕作层土壤剥离利用技术规范
- 读文哄睡电台文本
- 新求精德语初级ⅰ词汇(第四版)
- 内蒙古2023年中学生生物学竞赛初赛试卷
- 中班语言-大树和小鸟
- 深业物业自评报告材料
- 霍尼韦尔VISTA系列报警主机调试指南
评论
0/150
提交评论