大家觉得这种面试题很难么?主要考虑做水准区分

2018-06-23 18:23:56 +08:00
 suduo1987
1.请按照顺序简述一下 ASP.NET MVC 请求管道中有哪些事件和对应触发条件。

1.BeginRequest 开始处理请求
2.AuthenticateRequest 授权验证请求,获取用户授权信息
3.PostAuthenticateRequest 获取成功
4.AunthorizeRequest 授权,一般来检查用户是否获得权限
5.PostAuthorizeRequest 获得授权
6.ResolveRequestCache 获取页面缓存结果(如果没有则执行)
7.PostResolveRequestCache 已获取缓存
8.PostMapRequestHandler 创建页面对象
9.AcquireRequestState 获取 Session -- 先判断当前页面对象是否实现了 IRequiresSessionState 接口,如果实现了,则从浏览器发来的请求报文头中获得 SessionId,并到服务器的 Session 池中获得对应的 Session 对象,最后赋值给 HttpContext 的 Session 属性。
10.PostAcquireRequestState 获得 Session
11.PreRequestHandlerExecute 准备执行页面对象
×执行页面对象的 ProcessRequest 方法(1.ashx,1.aspx),如果请求的是 1.aspx,则会运行页面生命周期
12.PostRequestHandlerExecute 执行完页面对象了
13.ReleaseRequestState 释放请求状态
14.PostReleaseRequestState 已释放请求状态
15.UpdateReuqestCache 更新缓存
16.PostUpdateRequestCache 已更新缓存
17.LogRequest 日志记录
18.PostLogRequest 已完成日志
19.EndRequest 完成


2.请简述 ASP.NET MVC 中有哪些 ActionResult 及其作用。

ViewResult 表示一个视图结果,它根据视图模板产生应答内容。对应得 Controller 方法为 View。
PartialViewResult 表示一个部分视图结果,与 ViewResult 本质上一致,只是部分视图不支持母版,对应于 ASP.NET ,ViewResult 相当于一个 Page,而 PartialViewResult 则相当于一个 UserControl。它对应得 Controller 方法的 PartialView.
RedirectResult 表示一个连接跳转,相当于 ASP.NET 中的 Response.Redirect 方法,对应得 Controller 方法为 Redirect。
RedirectToRouteResult 同样表示一个跳转,MVC 会根据我们指定的路由名称或路由信息( RouteValueDictionary )来生成 Url 地址,然后调用 Response.Redirect 跳转。对应的 Controller 方法为 RedirectToAction 和 RedirectToRoute.
ContentResult 返回简单的纯文本内容,可通过 ContentType 属性指定应答文档类型,通过 ContentEncoding 属性指定应答文档的字符编码。可通过 Controller 类中的 Content 方法便捷地返回 ContentResult 对象。如果控制器方法返回非 ActionResult 对象,MVc 将简单地以返回对象的 toString()内容为基础产生一个 ContentResult 对象。
EmptyResult 返回一个空的结果,如果控制器方法返回一个 null ,MVC 将其转换成 EmptyResult 对象。
JavaScriptResult 本质上是一个文本内容,只是将 Response.ContentType 设置为 application/x-javascript,此结果应该和 MicrosoftMvcAjax.js 脚本配合使用,客户端接收到 Ajax 应答后,将判断 Response.ContentType 的值,如果是 application/x-javascript,则直接 eval 执行返回的应答内容,此结果类型对应得 Controller 方法为 JavaScript.
JsonResult 表示一个 Json 结果。MVC 将 Response.ContentType 设置为 application/json,并通过 JavaScriptSerializer 类指定对象序列化为 Json 表示方式。需要注意,默认情况下,Mvc 不允许 GET 请求返回 Json 结果,要解除此限制,在生成 JsonResult 对象时,将其 JsonRequestBehavior 属性设置为 JsonRequestBehavior.AllowGet,此结果对应 Controller 方法的 Json.
FileResult(FilePathResult、FileContentResult、FileStreamResult) 这三个类继承于 FileResult,表示一个文件内容,三者区别在于,FilePath 通过路径传送文件到客户端,FileContent 通过二进制数据的方式,而 FileStream 是通过 Stream(流)的方式来传送。Controller 为这三个文件结果类型提供了一个名为 File 的重载方法。FilePathResult: 直接将一个文件发送给客户端,FileContentResult: 返回 byte 字节给客户端(比如图片),FileStreamResult: 返回流
HttpUnauthorizedResult 表示一个未经授权访问的错误,MVC 会向客户端发送一个 401 的应答状态。如果在 web.config 中开启了表单验证( authenication mode=” Forms ”),则 401 状态会将 Url 转向指定的 loginUrl 链接。
HttpStatusCodeResult 返回一个服务器的错误信息
HttpNoFoundResult 返回一个找不到 Action 错误信息


3.请简述 ASP.NET MVC 中有哪些过滤器接口和它们的作用。

IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法
IExceptionFilter 用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常
IActionFilter 用于进入行为之前或之后的处理
IResultFilter 用于返回结果的之前或之后的处理


4.请描述一下 Entity Framework 第一次载入过慢的原因及对应有哪些解决方案。

原因:Entity Framework 都会根据数据库中的信息在内存中生成一个映射视图( mapping views ),这个操作非常耗时
解决方案:
1.进行预热加载
2.使用 IIS 的 Application Initialization
3.生成 native-code
4.禁用检查表的迁移历史


5.请简述 Entity Framework 中 AsNoTracking 的作用。

无跟踪查询,也就是说查询出来的对象不能直接做修改。


6.请简述 First() 和 Single() 的区别?

前者是 TOP(1)后者是 TOP(2),后者如果查询到了 2 条数据则抛出异常。


7.如何确认指定条件的实体是否存在。

正确:
1.Any()
错误:
1.count()>0
2.FirstOrDefault()==null


8.如何不查询实体通过实体主键来更新某实体的指定字段?

var dbEntity = dbContext.Entry(entity);
dbEntity.Property(property).IsModified = true;
dbContext.SaveChanges();


9.如何获取某个实体修改前后的属性值?

var dbEntity = dbContext.Entry(entity);
var original = dbEntity.OriginalValues.GetValue<object>(property);
var current = dbEntity.CurrentValues.GetValue<object>(property);


10.如何获取 Entity Framework 所生成或执行的 T-SQL 语句?

1.SQL Server Profiler
2.MiniProfiler
3.linq:ObjectQuery<T>.ToTraceString()
4.lamada:IQueryable<T>.ToString()
5.dbContext.Database.Log = (info) =>
{
System.Diagnostics.Debug.WriteLine(info);
};


11.请简述在 Entity Framework 中如何进行导航属性的延迟加载和预先(贪婪)加载以及各自的特点。

默认导航属性就是延迟加载,即按需加载,使用时才从数据库中获取。
使用 Include() 进行贪婪加载。
延迟加载:
1、只在需要读取关联数据的时候才进行加载
2、可能因为数据访问的延迟而降低性能,因为循环中,每一条数据都会访问一次数据库,导致数据库的压力加大
贪婪加载:
1、减少数据访问的延迟,在一次数据库的访问中返回所有的数据。
2、一次性读取所有相关的数据,可能导致部分数据实际无需用到,从而导致读取数据的速度变慢,效率变低


12.请简要描述 DbFunctions.AsNonUnicode 的作用。

因为.Net 字符串是 Unicode 格式,会导致 T-SQL 中 Where 子句中当一侧有 N 型而另一侧没有 N 型,此时,会进行数据转换,如果你在表中建立了索引,索引会失效,造成全表扫描。


13.请简述 IEnumerable 和 IQueryable 两接口在数据读取方式上的区别。

所有对于 IEnumerable 的过滤,排序等操作,都是在内存中发生的。也就是说数据已经从数据库中获取到了内存中,只是在内存中进行过滤和排序操作。
所有对于 IQueryable 的过滤,排序等操作,只有在数据真正用到的时候才会到数据库中查询。
3678 次点击
所在节点    .NET
25 条回复
mikac
2018-06-23 18:32:04 +08:00
面试难不难不知道,这种排版,看起来挺难的……
agdhole
2018-06-23 18:37:26 +08:00
感觉在做高考生物
suduo1987
2018-06-23 18:49:44 +08:00
@agdhole 高考生物是什么概念
sagaxu
2018-06-23 19:02:43 +08:00
有一种各行如隔山的感觉
Athrob
2018-06-23 19:20:40 +08:00
这是面试? 明明是笔试...
34C
2018-06-23 19:27:57 +08:00
为什么那么多面试官喜欢考验背书能力,而不考察思考能力和实践经验。
反过来却有很多人嚷嚷中国的应试教育有问题,面试问这些不也是应试教育么。
Lwf1995
2018-06-23 19:30:04 +08:00
我做过半年的 c#实习,也用 asp.net ,感觉不会,不是感觉写的时候没考虑这些。。。。。。。
x7395759
2018-06-23 19:39:07 +08:00
有点难度,区分水平我不建议用这种具有很强的应用色彩的题目,使用共通的才能够看出能力。
huiyifyj
2018-06-23 19:47:03 +08:00
背书式题目。
MiffyLiye
2018-06-23 20:14:07 +08:00
感觉信度( reliability )够了,但是效度( validity )不行,而且有些参考答案比较误导( misleading )。
lrh3321
2018-06-23 20:21:44 +08:00
背书式题目+1

要用到的时候明明很简单就能查到,没必要特意去背这些的东西的吧。
zgwjustice
2018-06-23 21:08:29 +08:00
这年头还有 asp
agdhole
2018-06-23 21:09:51 +08:00
@suduo1987 #3 就是面向考试编程,全在背概念,实际没啥用
cncqw
2018-06-23 21:17:57 +08:00
@zgwjustice asp.net 和 asp 还是有区别的
nieyujiang
2018-06-23 21:22:27 +08:00
这年头还有几个用 asp.net
nazor
2018-06-23 21:24:01 +08:00
@34C 出题人水平有限,想不出既开放,又有区分度的题。
Raymon111111
2018-06-23 21:47:48 +08:00
考这种东西有啥用啊

不如问一问"线下突然有业务方反馈页面打不开, 你会怎么处理?"
koalli
2018-06-23 22:06:09 +08:00
我也是觉得既开放又有区分度的题目比较有用,给个实际的案例讨论一下比较能体现一个人的能力
yhzwy
2018-06-23 22:10:56 +08:00
面试考记忆力实在是没有意义,api 手册是干什么用的?
ebony0319
2018-06-24 00:19:45 +08:00
茴、回、囘、囬。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465292

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX