阿里前端网络笔试
今天在网上做了阿里的前端笔试题,题不多也不是很难,但是没有做完,还是不够熟练啊!下面来回顾一下题目。
选择题
第一题问哪个单位不是CSS里的长度单位。选项中出现了 mm、pt、px、pc、%、rem等,其中rem应该不是CSS里的长度单位。
第二题问考的是CSS,margin简写的顺序,已知:margin:5px 15px 25px 10px; 问左边距是多少。
第三题问是关于事件的,主要靠mouseenter、mouseover的区别,我记得mouseenter是不冒泡的,且当鼠标从元素只有用的子元素进入元素不会触发mouseenter事件;而mouseover是会冒泡的,且鼠标从元素只有用的子元素进入元素不会触发mouseover事件。
有一题考的是HTML5语义化,这个平时不是很注意。问time、date、mark、figure标签哪个不是H5的语义化标签。网上看了一下除了第二个date其余都是HTML5语义化标签。
选择就记得这么几个,另外记得两个填空题。
填空题
第一题是数组排序有关的,第二题是将两个字符串合并,并且颠倒顺序。
第一个填空题:
请将下面的数组从小到大排列1
2
3
4var arr = [6,2,10,5,9,5];
arr.sort(________);
//我的答案:
function ( a, b ) { return a - b; }第二个填空题:
将两个字符串合并,并且颠倒顺序1
2
3
4
5
6str1 = 'abcd';
str2 = 'jjhhgg';
str3 = str1.______(str2);
str4 = str3.______('').reverse().concat('');
//我的答案:
concat和split //但是这个得到的结果是一个顺序颠倒的数组。第三题是考的是构造函数,题具体记不清了,记得这个题答错了。
编程题
一共记得三个编程题,最后一题比较简单,实现一个表格,要求表格奇数行背景为白色,偶数行背景为灰色,hover效果背景为黄色。下面是我的代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35//css
tr:nth-child(odd){
background-color: #fff;
}
tr:nth-child(even){
background-color: #999;
}
tr:hover{
background-color: #ffff00;
}
//html
<table>
<tbody>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
</tr>
<tr>
<td>41</td>
<td>42</td>
<td>43</td>
</tr>
</tbody>
</table>
另外一个大题是考JavaScript的,要求写一个 shuffle 程序,一开始不知道是个什么东西,其实就是将一个数组打乱。
可惜最后有了思路,就差一分钟没写完。我的思路是每次产生一个在数组长度内的随机正整数,然后从数组中取出这个随机数对应位置的元素存到一个临时数据中,最后将取出的元素从原数组中删除。下面是我实现的代码:1
2
3
4
5
6
7
8
9
10var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
function shuffle (arr) {
var temp = [];
var len = arr.length;
for ( var i = 0; i < len; i++ ) {
temp[temp.length] = arr.splice( Math.floor(Math.random()*arr.length), 1 )[0];
}
return temp;
}
console.log( shuffle(arr) );
倒数第三道大题,问click时间在移动端和桌面端有什么区别,并给出解决方案。这个题完全不会啊!因为根本没有看过移动端的内容。希望知道答案的留个言,谢谢。
一共11个题,记住了9个。