2018你应该了解这些.NET面试题

2018年准备要找.NET开发相关工做的你准备好了吗,下面是小编准备的一些.NET相关的面试题,来阅读一下,也许对你有帮助哦~javascript

.NET面试

1. 谈谈你对MVC和三层架构的理解。html

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

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

2. 在MVC中如何保持Sessions?面试

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

3. MVC中如何作输入验证?数据库

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

4. 已经有了ASPX,为何还要Razor?哪一个更好?session

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

5. MVC有多少种不一样类型的结果类型,请详细描述。

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

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

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

EmptyResult - 返回空的响应结果。

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

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

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

JavaScriptResult - 返回一段Javascript代码,它能够在客户端执行。

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

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

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

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

6. 如下两种异常处理方式有什么区别?

try {} catch(){throw;} try{}catch(Exception ex){Throw ex;}

前者catch无参数,能够捕获全部异常,只有throw关键字,表示抛出当前catch语句捕获的异常。

后者catch有参数,能够捕获全部以Exception类派生的异常,throw 变量名;抛出的是Exception异常或Exception派生的类型

7. C#中的委托是什么?事件是否是一种委托?

委托是将一种方法做为参数传入到另外一种方法。事件是一种特殊的委托。委托声明的关键字是Delegate。

8. 用接口或父类做为输入的参数有什么好处?返回值若是是接口是为了什么?

接口或父类做为参数,全部继承了此接口或父类的类均可以使用,即你给此方法传参数的时候,能够把继承了这个接口或父类的类的实例传给这个方法。能够一次性传入多种字段、方法等而不用定义多个形参。

接口做为返回值,返回的是实现接口的对象。

9. C#和JS的闭包。

闭包的概念是内层的函数能够引用包含在它外层的函数的变量,即便外层函数的执行已经终止。但该变量提供的值并不是变量建立时的值,而是在父函数范围内的最终值。

C#闭包可理解为跨做用域访问函数内变量,那么如何避免闭包陷阱呢?C#中广泛的作法是,将匿名函数引用的变量用一个临时变量保存下来,而后在匿名函数中使用临时变量。参考:http://www.cnblogs.com/jiejie_peng/p/3701070.html

JS闭包,在js中的个人理解就是函数嵌套函数,当内部函数在定义它的做用域的外部被引用时,就建立了该内部函数的闭包 ,若是内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被释放,由于闭包须要它们。参考:http://www.myexception.cn/javascript/2042903.html

10. Ajax操做怎么处理session过时?

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

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

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

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

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

12. Sleep()和wait()有什么区别?

(1) sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,能够放在任何位置。

而wait,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。

(2)Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,因此在同步方法或同步块中使用sleep,一个线程访问时,其余的线程也是没法访问的。

而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其余的线程能够访问。

(3)线程执行wait方法时,须要其余线程调用Monitor.Pulse()或者Monitor.PulseAll()进行唤醒或者说是通知等待的队列。

而sleep只是暂时休眠必定时间,时间到了以后,自动恢复运行,不需另外的线程唤醒.

13.什么是面向对象

面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP;

通俗的解释就是万物皆对象,把全部的事物都看做一个个能够独立的对象(单元),它们能够本身完成本身的功能,而不是像C那样分红一个个函数;

如今纯正的OO语言主要是java和C#,C++也支持OO,C是面向过程的。

14.阐述面向接口、面向对象、面向方面编程的区别

面向对象很差解释,能够理解为以一切元素都是对象,在设计时以对象为单位,考虑它的属性及方法。设计中采用了封装、继承、抽象的手法

面向接口自己就是面向对象的,无所谓区别,只不过面向接口的好处是耦合性低

面向方面Aspect-Oriented Programming (AOP)就是大名鼎鼎的AOP。其实有点象struts里的拦截。

举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。为了完成上述并发访问同一资源的功能,须要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就当即解锁unLocked,再供其它访问类访问。

15.什么是.NET?

.NET是一种平台和框架, .NET 不是单纯的语言也不是单纯的工具,它是从底层平台开始构建起来的一个总体框架。

.NET面试

总结:

看过以后记下了嘛?要不断学习,丰富本身的专业知识,这样才能在面试时游刃有余,拿到更多的offer,找到本身想要的工做。

相关文章
相关标签/搜索