Jquery
一、 MVC+Jquery
选择题
1、 如果想在一个指定的元素后添加内容,下面哪个是实现该功能的?( D )
A、append(content) B、appendTo(content) C、insertAfter(content) D、after(content)
2、 在jquey中,如果想要从DOM中删除所有匹配的元素,下面哪一个是正确的?(C )
A、delete() B、empty() C、remove() D、removeAll()
3、 当一个文本框中的内容被选中时,想要执行指定的方法时,可以使用下面哪个事件来实现?( C )
A、 click(fn) B、change(fn) C、select(fn) D、bind(fn)
4、 在jquery中想要实现通过远程http get请求载入信息功能的是下面的哪一个事件? ( C )
A、$.ajax() B、load(url) C、$.get(url) D、$. getScript(url)
5、 下面不属于ajax事件的是?( C )
A、ajaxComplete(callback) B、ajaxSuccess(callback) C、$.post(url) D、ajaxSend(callback)
6、 HTML 代码:
<div>div</div>
<p>p</p>
<span>span</span>
<p>p</p>
jQuery 代码: $("div,span,p.myClass") 结果: ( A )
A、[ <div>div</div>, <p>p</p>, <span>span</span> ]
B、[<p>p</p>]
C、[<p>p</p>]
D、[<div>div</div>]
7、 在jquery中,如果想要获取当前窗口的宽度值,下面哪个是实现该功能的?( A )
A、width() B、width(val) C、width D、innerWidth()
8、 如果需要匹配包含文本的元素,用下面哪种来实现?( B )
A、 text() B、contains() C、input() D、attr(name)
9、 如果想要找到一个表格的指定行数的元素,用下面哪个方法可以快速找到指定元素?( C )
A、 text() B、get() C、eq() D、contents()
10、 下面哪种不属于jquery的筛选?( B )
A、 过滤 B、自动 C、查找 D、串联
11、如果想在一个指定的元素后添加内容,下面哪个是实现该功能的?( D )
A、append(content) B、appendTo(content) C、insertAfter(content) D、after(content)
12、在jquey中,如果想要从DOM中删除所有匹配的元素,下面哪一个是正确的?( C )
A、delete() B、empty() C、remove() D、removeAll()
13、在jquery中,想要给第一个指定的元素添加样式,下面哪一个是正确的?( C )
A、first B、eq(1) C、css(name) D、css(name,value)
14、在jquery中想要实现通过远程http get请求载入信息功能的是下面的哪一下事件?( C )
A、$.ajax() B、load(url) C、$.get(url) D、$. getScript(url)
15、下面不属于ajax事件的是?( C )
A、 ajaxComplete(callback) B、ajaxSuccess(callback) C、$.post(url) D、ajaxSend(callback)
16、 当DOM加载完成后要执行的函数,下面哪个是正确的?( C )
A、jQuery(expression, [context]) B、jQuery(html, [ownerDocument])
C、jQuery(callback) D、jQuery(elements)
17、 下面哪一个是用来追加到指定元素的末尾的?( C )
A、insertAfter() B、append() C、appendTo() D、after()
18、 下面哪一个不是jquery对象访问的方法?( 无解 )
A、each(callback) B、size() C、index(subject) D、index()
19、 下面哪种不是jquery的选择器?( D)
A、基本选择器 B、后代选择器 C、类选择器 D、进一步选择器
20、 当DOM加载完成后要执行的函数,下面哪个是正确的?( C )
A、jQuery(expression, [context]) B、jQuery(html, [ownerDocument])
C、jQuery(callback) D、jQuery(elements)
21、 下面哪一个是用来追加到指定元素的末尾的?( C )
A、insertAfter() B、append() C、appendTo() D、after()
22、 下面哪一个不是jquery对象访问的方法?(无解 )
A、each(callback) B、size() C、index(subject) D、index()
23、 有这样一个表单元素,想要找到这个hidden元素,下面哪个是正确的?(B )
A、visible B、hidden C、visible() D、hidden()
24、 如果需要匹配包含文本的元素,用下面哪种来实现?( B )
B、 text() B、contains() C、input() D、attr(name)
25、 如果想要找到一个表格的指定行数的元素,用下面哪个方法可以快速找到指定元素?( C )
B、 text() B、get() C、eq() D、contents()
26、 下面哪种不属于jquery的筛选?( B )
B、 过滤 B、自动 C、查找 D、串联
27、 当一个文本框中的内容被选中时,想要执行指定的方法时,可以使用下面哪个事件来实现?( C )
A、click(fn) B、change(fn) C、select(fn) D、bind(fn)
28、 有这样一个表单元素,想要找到这个hidden元素,下面哪个是正确的?( B )
A、visible B、hidden C、visible() D、hidden()
29、 当DOM加载完成后要执行的函数,下面哪个是正确的?(C)
A、jQuery(expression, [context]) B、jQuery(html, [ownerDocument])
C、jQuery(callback) D、jQuery(elements)
30、 下面哪一个是用来追加到指定元素的末尾的?(C)
A、insertAfter() B、append() C、appendTo() D、after()
31、 下面哪一个不是jquery对象访问的方法?(D)
A、each(callback) B、size() C、index(subject) D、index()
32、 有这样一个表单元素,想要找到这个hidden元素,下面哪个是正确的?(B)
A、visible B、hidden C、visible() D、hidden()
33、在jquery中,想要给第一个指定的元素添加样式,下面哪一个是正确的?(C)
A、first B、eq(1) C、css(name) D、css(name,value)
34、在jquery中,如果想要获取当前窗口的宽度值,下面哪个是实现该功能的?(A)
A、width() B、width(val) C、width D、innerWidth()
35、为每一个指定元素的指定事件(像click)绑定一个事件处理器函数,下面哪个是用来实现该功能的?(B)
A、trigger (type) B、bind(type) C、one(type) D、bind
36、在一个表单中,如果想要给输入框添加一个输入验证,可以用下面的哪个事件实现? (D)
A、hover(over ,out) B、keypress(fn) C、change() D、change(fn)
37、当一个文本框中的内容被选中时,想要执行指定的方法时,可以使用下面哪个事件来实现?(C )
A、click(fn) B、change(fn) C、select(fn) D、bind(fn)
38、 有这样一个表单元素,想要找到这个hidden元素,下面哪个是正确的?(B)
A、visible B、hidden C、visible() D、hidden()
39、下面不属于ajax事件的是?(C)
A、ajaxComplete(callback) B、ajaxSuccess(callback) C、$.post(url) D、ajaxSend(callback)
40、在jquey中,如果想要从DOM中删除所有匹配的元素,下面哪一个是正确的?( C)
A、delete() B、empty() C、remove() D、removeAll()
41、在jquery中想要找到所有元素的同辈元素,下面哪一个是可以实现的?( C )
A、 eq(index) B、find(expr) C、siblings([expr]) D、next()
42、选择器“$('#but')”是根据( B )匹配元素的。
A、元素名称 B、元素Id C、元素样式名称 D、以上都不是
43、在使用AJAX时,需要接收服务器返回的信息,下面哪种格式的数据JS无法识别( D )。
A、json B、xml C、字符串 D、DataTable
44、 ASP.NET MVC的三个重要组件不包括( D )。
A、视图 B、模型 C、控制器 D、Handler
45、 ASP.NET MVC有两种视图引擎分别是( C )。
A、ASPX和WebForm B、Razor和WebForm C、ASPX和Razor D、以上都是
46、 下面关于ASP.NET MVC的说法错误的是( A )
A、ASP.NET MVC是用来取代ASP.NET WebForm的
B、ASP.NET WebForm比ASP.NET MVC难于测试
C、ASP.NET WebForm与ASP.NET MVC在不同的引用场景中各有优点和缺点
D、ASP.NET MVC的三个重要概念是模型,视图和控制器
简答、问答题
1、 MVC的三个组件分别是什么?它们的作用是什么?
Controller:控制器 VIew:视图 Modle:模型
控制器:处理输入的数据,写入数据库的记录。控制器链接受用户输入并调用模型和视图去完成用户需求
视图:用于显示数据,可以看做是与用户交流的界面。
模型:应用程序的核心,表示企业数据和业务规则。
2、 Jquery中选择器有那些,并举例说明,至少4种以上。
层次选择器:如果想通过 DOM 元素之间的层次关系来获取特定元素, 例如后代元素, 子元素, 相邻元素, 兄弟元素等, 则需要使用层次选择器
属性过滤选择器:属性过滤选择器的过滤规则是通过元素的属性来获取相应的元素
基本选择器:基本选择器是 jQuery 中最常用的选择器, 也是最简单的选择器, 它通过元素 id, class 和标记名来查找 DOM 元素
内容过滤选择器:内容过滤选择器的过滤规则主要体现在它所包含的子元素和文本内容上
3、 请说明在MVC中常用的传值方法,并说出他们的优缺点。
模型传值:优点:把多个model放到一个View Model中,有智能提示,在Domain Model和View之间实现了松耦合,是双向传值,缺点:需要基于视图需求。
ViewData:把强类型的ViewData对象从控制器传递给视图,这里只讲强类型对象的传递, 优点:方便,以键值对的方式把Model存放起来,再从控制器传递到视图。缺点:单向传递,只能从控制器传递到视图。
ViewBag:优点:方便,使用name获取对应的值,比ViewData使用key获取对应的值,来得更好。不需要显式指明类型。缺点:单向传递:只能从控制器传递到视图。只能存放当前请求下的Model:无法维持在多个请求下的Model,一旦页面跳转,ViewBag的值就变成了null只能存放"小数据"
TempData:优点:跨controller,跨action,缺点:需要显示赋值,并需要判断是否为null以避免错误
4、 在MVC3.0中,从Controller传递数据到视图中去,有哪几种方式?它们的区别是什么?
ViewData:采用键值对的方式,先获取或设置一个字典,并对所定义的数据进行传递。
ViewBag:属于动态类型,使用自定义属性进行赋值。
TempData:他可以实现一次跨Action的数据保存,调用此数据的Action可以是当前的Action也可以是其他Action只要TempData保存的对象被使用后,将立即设置为null。
View():模型传值,即在控制器中把一个对象作为View的参数传递给视图,或者在视图中将强类型提交后传给控制器的动作方法。
5、 在MVC3.0中,Html.ActionLink的作用是什么?并举一个例子
6、 在MVC4.0语义验证中,有哪些关键字?分别说出它们的作用。
Required:标识该属性必须参数不能为空。
StringLength:标识该字符串的长度限制,可以限制最大和最小。
Range:标识该属性值得范围,通常用于数字和日期。
RegularExpression:标识该属性将根据提供的正则表达式进行验证。
CustomValidation:标识概述性将按照用户提供的自定义验证进行数值验证。
7、 请说明在MVC中常用的传值方法,并说出他们的优缺点。
8、 什么是测试驱动开发?它的优点是什么?
测试驱动开发:简称TDD,在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行,这有助于编写简洁可用的高质量代码,
有很高的灵活性和健壮性,能快速响应变化,并加快开发过程。
优点:
1.TDD根据客户需求编写测试用例,,对功能的过程和接口都进行设计,更符合后期开发的需求。
2.出于易测试和测试独立的要求,促使我们事先松耦合的设计,更多的依赖于接口而并非具体的类,提高系统的可扩展和抗变性。
3.将测试工作提到编码之前,并频繁的运行所有测试,可以尽量避免和今早发现错误,极大降低了后续测试及修复的成本,提高代码质量。
4.TDD提供持续的回归测试,使我们有重构的勇气。
5.TDD所产生的单元测试代码就是最完美的开发者文档。
9、 什么是JQuery?
JQuery是JavaScript的一个类库,语法简洁解决跨平台的兼容性,简化了JavaScript的开发过程,改变了JavaScript的编程思想和方式,其优点是:写的少做的多。
10、 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
1.QueryString
例: default.aspx?id=1
2.FormsAuthentication
例:配置文件添加结点,利用FormsAuthentication 读取
3.this.Server.Transfer
11、 请举例说明Razor语句中单行语句、多行语句的表达方式。
单行语句是用@标记的单行代码
@string myMessage = "Hello World";
多行语句是用@{}标记,在括号中写入的代码不需要再用@标识
@{
var greeting = "时间:";
var weekDay = “”2019-5-15;
var greetingMessage = greeting + weekDay;
}
<p>@greetingMessage</p>
12、 jQuery能做什么?
答 1、获取页面的元素
2、修改页面的外观
3、改变页面的内容
4、响应用户的页面操作
5、为页面添加动态效果
6、无需刷新页面,即可以从服务器获取信息
7、简化常见的javascript任务
13、 siblings() 方法和 $('prev~div')选择器是一样的吗?如果不一样请说出理由。
答: $('prev~div') 只能选择'#prev'元素后面的同辈<div>元素。
siblings()方法与前后的位置无关,只要是同辈节点就都能匹配。
综合程序设计题
1、 请使用Jquery实现如下登录表单的验证。
用户名: | . |
密码: | . |
登录 重置 |
要求:点击登录按钮后实现如下操作:
(1)使用jquery验证用户名或密码是否为空。
(2)验证用户名的长度范围为3-8个字符长度。
(3)使用$.post()方法将表单值提交到Accoun控制器的Login动作(Action)中。
2、 请使用Jquery实现如下修改密码表单的验证。
用户名: | Admin |
原密码: | . |
新密码: | . |
修改 重置 |
要求:点击修改按钮后实现如下操作:
(1)使用jquery验证原密码、新密码是否为空。
(2)验证新密码的长度范围为5-12个字符长度。
(3)使用$.post()方法将表单值提交到Account控制器的Password动作(Action)中。
<html>
<head>
<title>Index</title>
<script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.5.1.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$("#btn1").click(function () {
var pwd1 = $("#pwd1").val();
var pwd2 = $("#pwd2").val();
if (pwd1.length == 0) {
alert("原密码不能为空");
} else if (pwd2.length == 0) {
alert("新密码不能为空");
} else if (!(pwd2.length >=5 && pwd2.length <=12)){
alert("新密码长度在5到12之间");
}
else {
$.post("/Account/Password", { password1: pwd1, password2: pwd2 }, function (data, textStatus) {
alert(data);
});
}
});
});
</script>
</head>
<body>
<div>
@using(Html.BeginForm())
{
<p>
原密码:<input type="text" value="" id="pwd1" /><br />
新密码:<input type="password" value="" id="pwd2" /><br />
<input type="button" id="btn1" value="修改" />
</p>
}
</div>
</body>
</html>
3、 请使用Jquery实现如下注册表单的验证。
用户名: | . |
密码: | . |
注册重置 |
要求:点击注册按钮后实现如下操作:
(1)使用jquery验证用户名、密码是否为空。
(2)验证密码的长度范围为5-12个字符长度。
(3)使用$.post()方法将表单值提交到Account控制器的Create动作(Action)中。
二、框架程序设计
1、在ORM中,什么是延迟加载,使用它有什么作用?
延迟加载(lazy load)(也称为懒加载),延迟加载机制是为了避免一些无谓的性能开销而提出来的,
所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。可以简单理解为,
只有在使用的时候,才会发出sql语句进行查询。
2、什么是RBAC?请简要说明。
RBAC是角色访问控制,RBAC引入Role的概念,目的是为了隔离用户与权限。Role作为一个用户与权限的代理层,解耦了权限和用户的关系,所有的授权应该给予Role而不是直接给User。Role-Privilege是many-to-many的关系,这就是权限的核心。
3、什么是ORM?它的作用是什么?
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将C#程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。
4、请描述在C#中,override与重载有何区别?
override是重写用关键字 virtual 声明的虚方法的关键字,即覆盖原有的虚方法,在所有的同级继承类中override方法都是实现同一个虚方法;
重载是方法名称相同,返回值、参数列表不同的多个方法,即方法本身就有多个,但名字相同,返回值、参数列表不同。
5、什么是测试驱动开发?它的优点是什么?
测试驱动开发:简称TDD,在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行,这有助于编写简洁可用的高质量代码,
有很高的灵活性和健壮性,能快速响应变化,并加快开发过程。
优点:
1.TDD根据客户需求编写测试用例,,对功能的过程和接口都进行设计,更符合后期开发的需求。
2.出于易测试和测试独立的要求,促使我们事先松耦合的设计,更多的依赖于接口而并非具体的类,提高系统的可扩展和抗变性。
3.将测试工作提到编码之前,并频繁的运行所有测试,可以尽量避免和今早发现错误,极大降低了后续测试及修复的成本,提高代码质量。
4.TDD提供持续的回归测试,使我们有重构的勇气。
5.TDD所产生的单元测试代码就是最完美的开发者文档。
6、用.net开发B/S结构的系统,您是用几层结构来开发,请概要说明每一层之间的关系,以及为什么要这样分层?
三层,分为Manager(数据访问)层,Component(业务逻辑)层,WEB(表示)层,每一层只完成自己的功能,
分层次的目的即为了“高内聚,低耦合”的思想。优点:
1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖; 4、有利于标准化; 5、利于各层逻辑的复用。
7、简述 private、 protected、 public、 internal 修饰符的访问权限。
private:只能在本类中使用
protected:在本类中及其子类中可以使用
internal:同一命名空间(程序集)中的类可以使用
public:所有类均可使用
8、在Castle.Net中有哪些是配置映射的关键字?至少列举5个,并说出它们的意思。
ActiveRecord:数据库表中对应的类。
PrimaryKey:主键映射。
Property:字段映射。
HasMany:实体与实体一对多关系映射。
BelongsTo:一对一关系映射。
HasAndBelangsToMany:多对多关系映射。
9、概述什么是反射和序列化。
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,
将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过
Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
10、在.NET框架编程中,什么是IOC,它有什么作用?
IOC 控制反转 是 面向配置编程的一种方式,他是面向接口编程的进步版,
接口和实现的具体类关系是通过IOC框架的一种自动化机制从配置文件中获取的,
IOC用来模块之间的关联,降低模块之间的耦合度,另外IOC也可以做为分布式技术来使用
11、C#中的委托是什么?事件是不是一种委托?
委托是引用类型的变量,他可以包含对方法的引用,当程序必须通过调用一个方法来执行某个操作,
但在编译时不知道该方法是什么时,就可以使用委托。委托允许在程序运行时指定调用的方法,
委托的特点是面向对象的,类型是安全的。委托和事件是C#的亮点优势。事件是一种委托。
12、请详细描述.net的错误处理机制是什么?可以举例说明。
13、请描述在C#中,override与重载有何区别?
14、学生有多个属性(编号,学生姓名,性别,年龄),其中中编号是主键,请使用Castle.Net配置它们与数据库中表的映射关系。
[PrimaryKey]
public int Code {get;set;}
[Property]
public string Name {get;set;}
[Property]
public int Sex{get;set;}
[Property]
public int Age{get;set;}
15、请描述final, finally, finalize的区别是什么?
final是全局变量声明的时候使用,意思是这个变量不可被修改,不可被override,一般用于声明常量,或者系统设置的值。
例子:public static final String a = "123"
意思是: 公共的(所有范围可见),静态的(系统中只存在一个),final的(不可被更改) 变量a,值是123
finally是在try-catch-finally块中配套使用,作用是,不管代码执行了try还是catch,最后一定会执行finally里面的代码
例子:
try{
这里写一些可能出现异常的代码
}catch(Exception e){
出现了异常就执行这里的代码。否则不执行
}finally{
无论有没有异常,都执行这里的代码
}
finalize是召唤垃圾收集器的命令,使用后,系统就安排一次垃圾回收
但是不是立即执行,执行的时间点是无法确定的。
16、列举ASP.NET 页面之间传递值的几种方式。
1. 使用QueryString变量
2. 使用Application 对象变量
3. 使用Session变量
4. 使用Cookie对象变量
5. 使用Server.Transfer方法
17、简述 private、 protected、 public、 internal 修饰符的访问权限。
18、什么是延迟加载,作用是什么?。
19、用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
答:一般为3层
数据访问层,业务层,表示层。
数据访问层对数据库进行增删查改。
业务层一般分为二层,业务层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互。例如用户添加表单。
优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。
缺点: 增加成本。
20、什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。
21、请详述在.Net中类(class)与结构(struct)的异同?
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
22、.net的错误处理机制是什么?
答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
23、什么是Code-Behind技术?
答:代码后植。ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.
24、请简述在dotnet中类(class)与结构(struct)的异同?
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
25、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
26、C#中接口和类的异同
答: 接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。