[第一轮]
选择题10道:
1. AJAX术语是由哪家公司或组织最先提出的?
a. Google
b. IBM
c. Adaptive Path
d. Dojo Foundation
正确答案:c
2. 以下哪一个Web应用不属于Ajax应用?
a. Hotmail
b. GMaps
c. Flickr
d. Windows Live
正确答案:a
3. 以下哪个技术不是Ajax技术体系的组成部分?
a. XMLHttpRequest
b. DHTML
c. CSS
d. DOM
正确答案:b
4. XMLHttpRequest对象有几个返回状态值?
a. 3
b. 4
c. 5
d. 6
正确答案:c
5. 下列哪些方法或属性是Web标准中规定的?
a. all()
b. innerHTML
c. getElementsByTagName()
d. innerText
正确答案:c
6. 以下哪一个CSS属性不属于W3C的CSS2规范?
a. list-style-position
b. min-height
c. float
d. text-overflow
正确答案:d
7. 下列哪个工具不能用来调试浏览器中的JavaScript?
a. MS Visual InterDev
b. Eclipse
c. MS Script Debugger
d. Mozilla Venkman
正确答案:b
8. 应用以下哪一个DOCTYPE使得当前主流浏览器解释CSS的模式是Quirks mode?
a. http://www.w3.org/TR/html4/loose.dtd">
b.
c.
d. http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
正确答案:b
9. 关于JavaScript中的函数和对象,下列说法不正确的是:
a. 每一个函数都有一个prototype对象。
b. 函数就是一个特殊类型的对象。
c. 函数附属于它所附加到的对象上,只能通过该对象访问。
d. 同一个函数可以被附属到多个对象上。
正确答案:c
10. 创建一个对象obj,该对象包含一个名为"name"的属性,其值为"value" 。以下哪一段JavaScript代码无法得到上述的结果?
a.
var obj = new Object();
obj["name"] = "value";
b.
var obj = new Object();
obj.prototype.name = "value";
c.
var obj = {name : "value"};
d.
var obj = new function() {
this.name = "value";
}
正确答案:b
编程题2道:
1. 使用XMLHttpRequest读取ajaxcn.org的RSS Feed(http://ajaxcn.org/exec/rss),并用HTML的列表标签(UL/OL/LI)列出获取的的Blog条目。
2. 用标准的DOM方法动态创建一个包含文本"Hello Ajax!"的DIV,用静态CSS定义或者用脚本设置style属性,使得该DIV高度宽度都为500px,文字颜色为黄色,背景色为红色,同时该DIV的文字垂直和水平方向都居中。
部分答案说明:
选择题的答案有几个地方需要解释一下:
第3题,DHTML其实不是单个的技术,而是多种技术的组合。Ajax继承了DHTML的很多开发经验,同时抛弃了DHTML的大量糟粕。DHTML并没有什么严格的定义,主要是浏览器厂家为了吸引眼球的炒作。Ajax技术需要与DHTML区分开来,因为它们是相当不同的。DHTML也不能算是Ajax技术体系的组成部分,因为它本身并不是一种具体的技术。
第7题,因为Ajax技术正在迅速发展,所以这道题目的答案不是绝对的。现在Open Ajax项目正在开发的Eclipse ATF框架,已经推出来1.0的原型版本,将来全部完成后,可以在Eclipse中使用嵌入的Mozilla浏览器来调试JavaScript。
第8题,Quirks mode,直译为怪癖模式。什么怪癖呢?就是早期浏览器对于CSS解释的怪癖,由于实践经验的缺乏和对于Web标准的理解存在问题,早期浏览器(主要是 IE4.0、IE5.0)对于CSS的解释有些地方是错误的。而一些早期的Web应用在这些浏览器上做测试,依赖于这些怪癖才能正常显示。因此要把 DOCTYPE设置为:
才能告诉浏览器需要兼容这些早期浏览器的怪癖。
第9题和第10题为什么正确答案是这样的,大家可以仔细看看《JavaScript权威指南》和《Ajax实战》的附录B。这两道题是为了使大家对于JavaScript的对象和函数有深入的理解。
两道编程题分别考察不同的知识点。
第一道题考察参赛者对于XMLHttpRequest和XML DOM的掌握。
有少数参赛者在这道题上走了弯路,因为他们知道由于浏览器的来源服务器策略,XMLHttpRequest不能获取来自不同域的数据,于是他们颇费周折实现了服务器端的ASP.NET、PHP、JSP的代码。
但是这个策略有一个例外,如果页面保存在用户本地的机器上,IE浏览器打开这个页面时,缺省情况下可以访问所有的域。获取RSS数据是一个很好的独立Ajax应用的例子,《Ajax实战》这本书的最后一个实例就是实现了一个运行于桌面的RSS阅读器。
在Firefox浏览器中做这件事情要稍微麻烦一点,需要请求相应的权限。我们并没有要求参赛者的实现必须支持Firefox、Opera等浏览器。只要将页面保存在桌面,使用IE打开,从Ajax中国网站顺利获取了RSS信息,并且将其展示出来(甚至只列出了文章的标题),就算正确。
第二道题考察参赛者对于CSS的掌握程度,这道题的难点只有一个地方,就是如何使显示的文本在垂直方向也居中。方法就是将line-height设置为与DIV的高度相同。
有些参赛者没有实现垂直居中,还有的参赛者没有使用要求的颜色来显示,都不能算通过。
同样,这道题我们没有要求页面必须支持Firefox、Opera等浏览器。只要在IE中正常显示就可以了。