1.ASP.NET WebForm与ASP.NET MVC的区别
ASP.NET WebForm提供了一个类似于winform事件响应的GUI模型,隐藏了HTTP、HTML、Javascript等细节,经用户界面构建成了一个服务器端的树结构控件,每个控件通过ViewState保持自己的状态,并自动将客户端的js事件和服务器端的事件联系起来,这使得开发winform与webform有着相近的开发体验,填平了winform(有状态,面向对象)和webform开发(无状态,面向html的)之间的鸿沟。
这种设计在大型网站开发的时候会暴露一些弱点:
1.ViewState可能过大:访问量非常大的情况下,viewstate占用的流量非常可观,这样直接影响页面传输速度。
2.页面声明周期过于复杂:比如控件的init方法在页面的init方法之前执行,而load事件是在控件后执行。
3.缺乏对html的控制:一般每个控件负责自己的HTML输出,开发人员无法修改输出的HTML结构,除非自己写控件。而且HTML的Id比较复杂,不便于js访问。
4.界面设计和逻辑开发的关注分离做的不好:webform开发是一个页面对应一个code-behind class,原本的目的将展示与逻辑分离。但是在实际开发的时候,面对某些需求,还是经常会在class中写一些控制界面展示的代码。
5.对测试的支持不好:页面的code-behind class绑定在一起,无法单独对逻辑进行测试;不支持单元测试。
ASP.NET MVC
ASP.NET MVC的优点如下:
1.采用MVC架构:分离了关注点,不如在开发Controller的时候只需关注如何交互,从request中获得什么数据,业务逻辑交给model处理,如何展示交于view处理。
2.更好的扩展性:ASP.NET MVC框架由一系列独立的组件构成,可以轻松替换,如路由系统、the view Engine、the controller factory或者其他框架组件。
3.更好的可测性:关注点的分离另一个好处是更好的可测性。
4.能够完全的处理输出的html
5.强大的路由功能。
摘自:http://www.voidcn.com/article/p-radaahfb-tw.html
2.抽象类与接口的相同点和区别:
相同点:
- 都可以被继承
- 都不能被实例化
- 都可以包含方法生命
- 派生类必须实现未实现的方法
不同点:
- 抽象基类可以定义字段、属性、方法实现。借口只能定义属性、索引器、事件和方法声明,不能包含字段。
- 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。
- 接口可以被多重实现,抽象类只能被单一继承
- 抽象类更对的是定义在一系列紧密相关的类间,而接口大多是关系疏松但都实现同一功能的类中
- 抽象类是从一系列相关对象中抽象出来的概念,因而反应的是内部的共性;接口是为了满足外部调用而定义的一个功能约定,因此反应的是事物外部特性
- 接口基本上不具备继承的任何具体特点,他仅仅承诺了能够调用的方法
- 接口可以用于支持回调,而继承不具备这个特点
- 抽象类实现的方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,可以自定义为虚的
- 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中的方法
摘自:https://www.cnblogs.com/chunhui212/p/5892273.html
3.MVC中页面传值的几种方式
使用ViewData
ViewData是在ControllerBase中类型为ViewDataDictionary的属性,以键值对的方式存储,通过key来获取值。
主要用途:
ViewData和ViewBag的作用是一样的,只不过在早期的ASP.NET MVC(1和2)版本中,使用的是ViewData,后期版本退出了ViewBag有更多的优点,推荐使用ViewBag。
优点:
-
方便:以键值对的方式把Model存起来,再从控制器传递到视图。
缺点:
-
单向传递:只能由控制器到视图
-
只能存放当前请求下的model:无法维持在多个请求下的model,一旦页面跳转ViewData的值就变成了null
-
只能存放小数据,如果传递大数据,不推荐使用ViewData。
-
使用key获取的方式,可读性不如ViewBag
-
没有智能提示
-
没有编译期错误调查
使用ViewBag
ViewBag是在controllerBase中的类型为dynamic的属性。dynamic类型是C#4.0推出的一个类型,它使得在编译器不需要指明类型。
主要用途:
以name/value的形式将model存起来,再从控制器传递到视图。视图的Title就是通过ViewBag.Titlek来设置。
优点:
- 方便 使用name获取对应的值,比ViewData使用key获取对应的值更好。
- 不需要显式指明类型
缺点:
- 单向传递:只能从控制器传递到视图
- 只能存放当前情况下的model:无法维持在多个请求下的model。一旦页面跳转,ViewBag的值就变成了null
- 只能存放小数据:如果传递大数据不推荐使用ViewBag
- 没有智能提示
- 没有编译期错误检查
使用PartialView
主要用途:
对于那些需要重复使用的视图部分,提取出来作为部分视图。
优点:
- 方便重复使用
- 只更新主视图的某个部分
缺点:
- 过多的使用影响可读性
使用TempData
TempData在ControllerBase中类型为TempDataDictionary的属性,是键值对形式的字典,通过key来获取对应的值没在赋值的时候需要指明类型。和ViewBag和ViewData的不同之处在于:他可以跨controller,跨action来使用其内部使用了session机制。
主要用途:
可以用来传递一些非敏感的数据,比如验证信息、错误信息等。
优点:
- 跨controller,跨action
缺点:
- 需要显式赋值,并且需要判断是否为null以避免错误
- 没有智能提示
- 使用ViewModel
4.表连接查询的几种方式及区别
https://blog.youkuaiyun.com/xuanjiewu/article/details/50636465
5.m个苹果和n个盘子有几种摆放方式
https://www.cnblogs.com/wxgblogs/p/5742618.html
6.将一个数组中的偶数放在数组前半部分,奇数放在数组的后半部分
https://blog.youkuaiyun.com/qq_28863045/article/details/79821030
7.什么是委托,什么是事件。
https://demonkoo.github.io/2016/11/15/C-Delegate-Event/
8.“猫叫了,老鼠跑了,主人醒了”,事件问题
https://www.cnblogs.com/funeral/archive/2009/04/20/funeral_NewCatAndMouse.html
9.什么是事务,索引,存储过程
https://www.cnblogs.com/dong897812629/archive/2013/03/27/2981142.html
10.常见的数据库查询练习
https://www.cnblogs.com/liulinghua90/p/7505697.html
11.重载与重写的区别
https://blog.youkuaiyun.com/cdefg198/article/details/7414973
12.排序算法
https://www.cnblogs.com/onepixel/p/7674659.html
13.min函数找出栈中的最小值
https://blog.youkuaiyun.com/xyzbaihaiping/article/details/51171177

6万+

被折叠的 条评论
为什么被折叠?



