V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
suduo1987
V2EX  ›  .NET

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

  •  1
     
  •   suduo1987 · 2018-06-23 18:23:56 +08:00 · 3651 次点击
    这是一个创建于 2343 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 的过滤,排序等操作,只有在数据真正用到的时候才会到数据库中查询。
    25 条回复    2018-06-25 19:59:09 +08:00
    mikac
        1
    mikac  
       2018-06-23 18:32:04 +08:00
    面试难不难不知道,这种排版,看起来挺难的……
    agdhole
        2
    agdhole  
       2018-06-23 18:37:26 +08:00 via Android
    感觉在做高考生物
    suduo1987
        3
    suduo1987  
    OP
       2018-06-23 18:49:44 +08:00 via iPhone
    @agdhole 高考生物是什么概念
    sagaxu
        4
    sagaxu  
       2018-06-23 19:02:43 +08:00 via Android
    有一种各行如隔山的感觉
    Athrob
        5
    Athrob  
       2018-06-23 19:20:40 +08:00
    这是面试? 明明是笔试...
    34C
        6
    34C  
       2018-06-23 19:27:57 +08:00 via iPhone
    为什么那么多面试官喜欢考验背书能力,而不考察思考能力和实践经验。
    反过来却有很多人嚷嚷中国的应试教育有问题,面试问这些不也是应试教育么。
    Lwf1995
        7
    Lwf1995  
       2018-06-23 19:30:04 +08:00 via Android
    我做过半年的 c#实习,也用 asp.net ,感觉不会,不是感觉写的时候没考虑这些。。。。。。。
    x7395759
        8
    x7395759  
       2018-06-23 19:39:07 +08:00
    有点难度,区分水平我不建议用这种具有很强的应用色彩的题目,使用共通的才能够看出能力。
    huiyifyj
        9
    huiyifyj  
       2018-06-23 19:47:03 +08:00 via Android
    背书式题目。
    MiffyLiye
        10
    MiffyLiye  
       2018-06-23 20:14:07 +08:00
    感觉信度( reliability )够了,但是效度( validity )不行,而且有些参考答案比较误导( misleading )。
    lrh3321
        11
    lrh3321  
       2018-06-23 20:21:44 +08:00
    背书式题目+1

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

    不如问一问"线下突然有业务方反馈页面打不开, 你会怎么处理?"
    koalli
        18
    koalli  
       2018-06-23 22:06:09 +08:00
    我也是觉得既开放又有区分度的题目比较有用,给个实际的案例讨论一下比较能体现一个人的能力
    yhzwy
        19
    yhzwy  
       2018-06-23 22:10:56 +08:00
    面试考记忆力实在是没有意义,api 手册是干什么用的?
    ebony0319
        20
    ebony0319  
       2018-06-24 00:19:45 +08:00 via Android
    茴、回、囘、囬。
    mashen
        21
    mashen  
       2018-06-24 00:37:05 +08:00
    面试只考这个人脑子领不灵活,是不是极客范,笔试题都是开卷的随便搜,一个劲的算法的,一个劲的看项目经验的有点教条了,向我们这些中年油腻秃顶程序员早已看淡一切,只要这个人不苯人品不差,管你是什么专业的,只要喜欢折腾那基本上差不多,本人招聘过两个非计算机专业的前端开发,月薪 5000,工作效率高出 2 年经验的 java 程序员,试用期刚过,就提薪 40%,没错这事就是我干的。
    cyspy
        22
    cyspy  
       2018-06-24 01:06:55 +08:00 via Android
    “有哪些”这样的问题事后一定会被面试者骂。
    changnet
        23
    changnet  
       2018-06-24 01:46:16 +08:00 via Android
    只考百度能查到的题目有啥意思。设计一些考查经验,解决问题能力,架构能力之类的题目啊
    jonechenug
        24
    jonechenug  
       2018-06-24 09:17:56 +08:00 via Android
    国内的才这么考,一看就知道是网上的笔试题。老外的笔试题比这高得多,而且还是不定向的选择题。
    BigBunny
        25
    BigBunny  
       2018-06-25 19:59:09 +08:00
    讲道理第一个跟第二个能全被下来我是服气的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3015 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:08 · PVG 21:08 · LAX 05:08 · JFK 08:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.