• 2015阿里巴巴秋季校园招聘前端在线笔试题个人参考答案--第二波


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

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

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

      A. img.thumb: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分  .thumb == 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 .Add  B.Push  C.Mkdir  D.Fetch  E.Mv  F.Merge  G.Tag

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

      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可能返回的结果

      A.string  B.array  C.object  D.null

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

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

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

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

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

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

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

      显而易见的,答案是A C

    4. 请写出个人github地址

      https://github.com/yuanzm

    5. 请简述异步加载的JS里有document.write会有什么问题

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

    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         this.obj = obj;
     3         this.totalTime = 0;
     4         this.enterTime = null;
     5         this.divTime= document.createElement('div');
     6     }
     7     ShowStayTime.prototype = {
     8         constructor:ShowStayTime,
     9         init: function() {
    10             this.showStayTime();
    11             this.obj.appendChild(this.divTime);
    12             this.beginTime();
    13             this.leaveTime();
    14         },
    15         showStayTime: function() {
    16             var message = "";
    17             message = "停留时间" + this.totalTime + "ms";
    18             this.divTime.innerText = message;
    19         },
    20         beginTime: function() {
    21             this.obj.addEventListener("mouseenter",function() {
    22                 this.enterTime = new Date();
    23             })
    24         },
    25         leaveTime: function() {
    26             var temp = this;
    27             this.obj.addEventListener("mouseleave",function() {
    28                 temp.totalTime += new Date().getTime() - this.enterTime.getTime();
    29                 temp.showStayTime();
    30             })
    31         }
    32     }
    33     var divs = document.getElementsByClassName('mod-spm');
    34         var show1 = new ShowStayTime(divs[0]);
    35         var show2 = new ShowStayTime(divs[1]);
    36         var show3 = new ShowStayTime(divs[2]);
    37         show1.init();
    38         show2.init();
    39         show3.init();

    8. 实现数据打点的函数。  

      

     1 function adddot(num) {
     2     var temp = new Array();
     3     for (var i = 0;i < num.length;i++) {
     4         temp.push(num[i]);
     5     }
     6     if (num.length < 4) {
     7         return num;
     8     }
     9     for (var i = num.length - 3;i >= 0;i -= 3) {
    10             if (i > 0) {
    11                  temp.splice(i,0,'.');
    12             }
    13     }
    14     return temp.join("");
    15 }

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

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

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

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

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

    1 var s1 = str.replace(/[abc]/g,'');
    2 var s2 = str.replace(/[d]/g, function(arg1){return '['+arg1+']'});
    3 var s3 = str.replace(/[d]/g, function(arg1){return arg1*2;});

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

      略

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

  • 相关阅读:
    java 前端-BOM
    java web -tomcat
    java基础-递归
    java基础-正则表达式
    Hibernate从入门到精通(六)一对一双向关联映射
    Hibernate从入门到精通(五)一对一单向关联映射
    Hibernate从入门到精通(四)基本映射
    Hibernate从入门到精通(三)Hibernate配置文件
    Hibernate从入门到精通(二)Hibernate实例演示
    洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn
  • 原文地址:https://www.cnblogs.com/yuanzm/p/3938373.html
Copyright © 2020-2023  润新知