天天范文

位置:首页 > 求职简历 > 笔试题目

阿里巴巴秋季校园招聘前端在线笔试题

由于错过了报名时间,博主昨天才知道原来阿里巴巴秋季校园招聘已经开始了。本来以为没有机会参加了,但是昨天晚上急急忙忙填写了一份简历,今天居然可以考试,还是有点小激动的,哈哈。

阿里巴巴秋季校园招聘前端在线笔试题

由于今天是亲身参与,时间紧急,有些题目博主自己也不记得,或者说有些题目由于能力有限,自己也不会,这里仅仅提供博主在考试的时候做出来的题目。

1.找出下面优先级相同的选择器

a. b:after

b.[data-job="frontend"]::first-letter

c. #main::before

d. [type="checkbox"]:checked

e. ul#shop-list

要解这道题,首先需要知道怎么计算选择器的优先级,《css实战手册》里面提到过,css为选择器的权值提供了一个公式:

(1): 一个标签选择器值1分

(2):一个类选择器值10分

(3):属性选择器值10分

(3):一个id选择器值100分

(4):一个内建样式值1000分

(5):伪元素(如first-line)通常被当做类选择器对待,值1分

(6):伪类则被当做类对待,值10分

根据上面的规则,我们一个个来分析:

a: img == 1分

b == 10分

:after == 1分 总分1 + 10 + 1 = 12

b: [data-job="frontend"] == 10分

::first-letter == 1分 总分10 + 1 = 11分

c:#main == 100分

::before(伪元素) == 1分 总分100 + 1 == 101分

d:[type="checkbox"] == 10分

:checked == 10分

总分10 + 10 = 20分

e: ul == 1分

#shop-list == 100分

总分100 + 1 == 101分

所以这道题的答案应该是:c e

2. 常用的git操作有

a

r

h

e

对于这里的关键词“常用”,也是没有一个明显的界限的,你要是用的多,就叫常用。下面非别分析:

a: add:将当前工作目录中更改或者新增的文件加入到git的索引中,加入到git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步。

b: push:将本地commit的代码更新到远程版本库中,例如 “git push origin”就会将本地的代码更新到名为orgin的远程版本库中。

c:mkdir:应该不属于git常用操作的范围。

d:fetch:从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码)

e: mv: 重命名一个文件、目录或者链接。

f:merge:把服务器上下载下来的代码和本地代码合并。或者进行分支合并。

g:tag: 创建、列出、删除或者验证一个标签对象(使用gpg签名的)。

所以这一题应该是选:a b c e f g

3.以下哪些是javascript语言typeof可能返回的结果

ng

y

ct

这一道题考验记忆能力,因为了解typeof的人都知道,这个操作符基本是没什么作用的。typeof操作符的作用在javascript里面有详细解释:

"underfined"--如果这个值未定义

“boolean”--如果这个值是布尔值

“string”--如果这个值是字符串

“number”--如果这个值是数值

“object”--如果这个值是对象或者null

"function"--如果这个值是函数

显而易见的,答案是a c

4. 请写出个人github地址

5. 请简述异步加载的js里有e会有什么问题

异步加载js的意思是在加载页面的时候不加载js,也就是在页面加载完成之后才加载js,但是如果js里面有e,就会产生一个问题:页面会被e里面的内容重写。

6.<div class='mod-spm'data-spmid='123'>

<divclass='child_a'></div>
<divclass='child_b'></div>
<divclass='child_c'></div>
<divclass='child_d'></div>
</div>
<divclass='mod-spm' data-spmid='456'>
<divclass='child_a'></div>
<divclass='child_b'></div>
<divclass='child_c'></div>
<divclass='child_d'></div>
</div>
<divclass='mod-spm' data-spmid='789'>
<divclass='child_a'></div>
<divclass='child_b'></div>
<divclass='child_c'></div>
<divclass='child_d'></div>
</div>

有dom结构如上,请用原生代码(禁用jquery作答)实现以下功能:

(a)计算鼠标在mod-spm区域内的停留时长,data-spm不同视为不同区域

(b)尽量减少性能损耗

(c)重复进入计时累加

这题是最浪费时间的,直接上代码:

1 function showstaytime(obj) {

2 = obj;

3 ltime = 0;

4 rtime = null;

5 ime= teelement('div');

6 }

7 otype = {

8 constructor:showstaytime,

9 init: function() {

10 staytime();

11 ndchild(ime);

12 ntime();

13 etime();

14 },

15 showstaytime: function() {

16 var message = "";

17 message = "停留时间" + ltime + "ms";

18 rtext = message;

19 },

20 begintime: function() {

21 ventlistener("mouseenter",function() {

22 rtime = new date();

23 })

24 },

25 leavetime: function() {

26 var temp = this;

27 ventlistener("mouseleave",function() {

28 ltime += new date()ime() - ime();

29 staytime();

30 })

31 }

32 }

33 var divs = lementsbyclassname('mod-spm');

34 var show1 = new showstaytime(divs[0]);

35 var show2 = new showstaytime(divs[1]);

36 var show3 = new showstaytime(divs[2]);

37 ();

38 ();

39 ();

实现数据打点的函数。

1 function adddot(num) {

2 var temp = new array();

3 for (var i = 0;i < th;i++) {

4 (num[i]);

5 }

6 if (th < 4) {

7 return num;

8 }

9 for (var i = th - 3;i >= 0;i -= 3) {

10 if (i > 0) {

11 ce(i,0,'.');

12 }

13 }

14 return ("");

15 }

10.有字符串var str = "abc345efgabcab",请写三条js语句分别实现如下三个功能:

1)去掉字符串中的a、b、c字符,形成结果:“345efg”

2)将字符串中的数字用括号括起来,形成结果“abc[3][4][5]efgabcab”

3) 将字符串中的每个数字的值分别乘2,形成结果:“abc6810efgabcab”

这题很显然是考察正则表达式:

1 var s1 = ace(/[abc]/g,'');

2 var s2 = ace(/[d]/g, function(arg1){return '['+arg1+']'});

3 var s3 = ace(/[d]/g, function(arg1){return arg1*2;});

11从前端工程师的角度如何提高客户体验.

最后,再次声明,本人只是本科二年级的学生,所作出的解答只是具有参考性,如有错误,欢迎指出~