阿里巴巴
1、将数组 var a=[1,2,3] 变成数组 [4,3,2,1] 下面的方式正确的是?A C
A. a.reverse().unshift(4)
B. a.push(4).reverse()
C. a.push(4); a.reverse()
D. a.splice(3,1,4).reverse()
JS数组方法
2、目前 HTTP2 协议已经逐渐普及到日常服务器中,以下对于 HTTP2 协议描述正确的是: A B C D
A. 所有http请求都建立在一个TCP请求上,实现多路复用
B. 可以给请求添加优先级
C. 服务器主动推送 server push
D. HTTP2的头部会减小,从而减少流量传输
HTTP2
3、请问下面哪种方式可以在不改变原来数组的情况下,拷贝出数组 b ,且满足 b!=a 。例如数组 a 为 [1,2,3] 。BD
A. let b=a;
B. let b=a.slice();
C. let b=a.splice(0,0);
D. let b=a.concat();
JS数组方法
4、浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?E
A. 存入 IndexdDB
B. 写入 COOKIE
C. 放在 URL 参数
D. 写入 Session
E. 使用 POST
F. 放在 Local Storage
HTTP传输数据
5、填写内容让下面代码支持a.name = “name1”; b.name = “name2”;
function obj(name){
(1)
}
obj. (2)= “name2”;
var a = obj(“name1”);
var b = new obj;
参考答案
(1) if(name){ this.name = name;} return this;
(2) prototype.name
原型对象的属性及实例属性
6、输出对象中值大于2的key的数组
var data = {a: 1, b: 2, c: 3, d: 4};
Object.keys(data).filter(function(x) { return (1) ;})
期待输出:[“c”,”d”]
参考答案(1) data[x]>2
JS数组方法
7、请列举7种以上常用的HTML标签,说明其语义。
1.div标签,是一个块元素,就像一个大盒子,可以放各式各样的东西,如:图片….
2.p标签,也是一个块元素,它通常是用来放一段话的….
3. h1,h2….h6标签,也是一个块元素,常用来放标题
4.span标签,是一个行内元素,常用来处理一段话中的某几个字符
5.img标签,用来加载图片的标签
6.table标签,用来创建表格的标签
7.br标签,用来换行的标签
8.hr标签,用来画线的标签
9.a一个点击跳转的超链接标签
10.ul一个用来做列表的标签
HTML标签及其语义
9、尝试实现注释部分的Javascript代码,可在其他任何地方添加更多代码(如不能实现,说明一下不能实现的原因):
var Obj = function(msg){
this.msg = msg;
this.shout = function(){
alert(this.msg);
}
this.waitAndShout = function(){
//隔五秒钟后执行上面的shout方法
//新添加的代码
var that = this;
setTimeOut(that.shout,5000);
}
//新添加的代码
return this;
}
Obj("shouting").waitAndShout();
setTimeOut函数的this对象
9、校验输入的字符串是否是一个有效的电子邮件地址。要求: a) 使用正则表达式。 b) 如果有效返回true ,反之为false。
var checkEmail = function(email){
var preg =
"(^[a-zA-Z]|^[\\w-_\\.]*[a-zA-Z0-9])@(\\w+\\.)+\\w+$";
pregObj =new RegExp(preg);
return pregObj.test(email);
}
正则表达式
9、请分别列出HTML、JavaScript、CSS、Java、php、python的注释代码形式。
<!-- HTML 注释 -->
// JavaScript 注释
/*
* JavaScript 多行注释
*/
/* CSS 注释 */
// Java 注释
/**
* Java 多行注释
*/
// php 单行注释
# php 单行注释
/**
* php多行注释
*/
代码注释格式
10、请用CSS定义p标签,要求实现以下效果: 字体颜色在IE6下为黑色(#000000);IE7下为红色(#ff0000);而其他浏览器下为绿色(#00ff00)。
p{
color:#0f0;
_color:#000; /*ie6*/
}
/*ie7*/
*+html p{
color:#f00;
}
CSS hack
11、请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如:
var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2....."
;
var obj = parseQueryString(url);
alert(obj.key0); // 输出0
var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2.............";
var obj = parseQueryString(url);
function parseQueryString(argu){
var str = argu.split('?')[1];
var result = {};
var temp = str.split('&');
for(var i=0; i<temp.length; i++)
{
var temp2 = temp[i].split('=');
result[temp2[0]] = temp2[1];
}
return result;
}
String的分隔和拼接
12、请指出下面代码中不符合xHTML 1.0规范的地方,说明理由,并写出改善后的代码:
<h1><p>小明的表白</p></h1>
<dl>
<dt><p><div>小明说:</div></p></dt>
<dd>”淘宝网,<i>天天上</i>。”</dd>
<dd><b>”淘我喜欢!” </b></dd>
</dl>
不合理的地方:
1、 h1元素包含p元素,理由:h1元素内不能包含其他块级元素;
2、 dt元素包含p元素和div元素,理由:dt元素内不能包含其他块级元素;
3、 p元素包含div元素,理由:p元素内不能包含其他块级元素;
4、 i元素,理由:i表样式斜体,不符合语义化。
5、 b元素,理由:b表样式粗体,不符合语义化。
HTML标签的嵌套以及语义化
13、请根据下面的描述,用JSON语法编写一个对象: “小明今年22岁,来自杭州。兴趣是看电影和旅游。他有两个姐姐,一个叫小芬,今年25岁,职业是护士。还有一个叫小芳,今年23岁,是一名小学老师。”
var person = ?
var person = {
"name":"小明",
"age":"22",
"form":"杭州",
"interest":["电影","旅游"],
"sister":[
{"name":"小芬","age":"25","job":"护士"},
{"name":"小芳","age":"23","job":"小学老师"}
]};
JSON语法
14、下列哪个操作是W3C标准定义的阻止事件向父容器传递:C
A. e.preventDefault()
B. e.cancelBubble=true
C. e.stopPropagation()
D. e.stopImmediatePropagation()
事件对象
15、关于HTTP协议,下面哪个说法是正确的?C
A. HTTP协议是有状态协议。
B. 以下是一个Http链接的response 的响应头: GET /xxx/xxx/js/lib/test.js HTTP/1.1 Host: 127.0.0.1 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Accept: /
C. RESTful 接口中,利用HTTP协议的method字段来描述要对资源操作的方式,比如GET表示获取资源,POST表示新增一个资源,PUT表示更新资源,DELETE 表示删除资源等等。
D. 一个HTTP请求返回的HTTP状态码中,304表示临时重定向。
HTTP协议
16、使用 for in 循环数组中的元素会枚举原型链上的所有属性,过滤这些属性的方式是使用 hasOwnProperty函数
原型方法
17、写一个求和的函数sum,达到下面的效果
sum(1, 2, 3, 4, 5);// Should equal 15
sum(5, null, -5);// Should equal 0
sum(‘1.0’, false, 1, true, 1, ‘A’, 1, ‘B’, 1, ‘C’, 1, ‘D’, 1,
‘E’, 1, ‘F’, 1, ‘G’, 1);// Should equal 10
sum(0.1, 0.2);// Should equal 0.3, not 0.30000000000000004
function sum() {
var nResult = 0;
for (var i = 0, l = arguments.length; i < l; i++) {
nResult += (!isNaN(arguments[i]) && window.parseFloat(arguments[i]))||0;
}
return nResult.toFixed(3) * 1000 / 1000;
}
Number对象的方法
18、写一个traverse函数,输出所有页面宽度和高度大于50像素的节点。
function traverse(){
return Array.prototype.filter.call(document.querySelectorAll(‘body *’), function(node){
return node.offsetWidth > 50 && node.offsetHeight > 50;
});
}
JS数组方法