• 阿里巴巴面试题


     

    1、(单项选择)对于下列程序运行结果,符合预期的是

    function f1() {

        console.time('time span');

    }

    function f2() {

        console.timeEnd('time span');

    }

    setTimeout(f1, 100);

    setTimeout(f2, 200);

    function waitForMs(n) {

       var now = Date.now();

        while (Date.now() - now < n) {

        }

    }

    waitForMs(500);

    A、time apan:700.077ms      B、time apan:0.066ms

    C、time apan:500.077ms      D、time apan:100.077ms

     选择B,因为要f1要过100毫秒执行,f2要200毫秒执行,waitForMs是过500毫秒执行,因为JS是单线程,所以f1和f2执行几乎同时,所以开始时间和结束时间几乎接近,所以他们之间间距时间肯定很小,所以选择B,

     对应题目

    console.time('计时器');

    for (var i = 0; i < 1000; i++) {

          for (var j = 0; j < 1000; j++) {}

    }

    console.timeEnd('计时器');

    答案:计时器: 2.371ms

    2、(单项选择)请选择结果为真的表达式:B

    A、null instanceof Object       B、null == undefined

    C、NaN == NaN                   D、false == undefined

    3、(单项选择)下面程序的执行结果是:A

    var name = 'World!';

    (function () {

      if (typeof name === ‘undefined’) {

       var name = ‘Jack’;

       console.log(‘Goodbye ‘ + name);

      } else {

       console.log(‘Hello ‘ + name);

      }

    })();

    A、Goodbye Jack         B、Hello Jack

    C、Hello undefined      D、Hello World

    备注:如果 name = "Jack" 前面加var ,那就是name转成undefined,所以他们绝对等于
    所以走第一个,如果不加申明,那'World!'=== "undefined"是false
    所以走第二个

     

    4、(不定项选择)以下关于DOM事件流的表述哪些是正确的 B,D

    A、事件流包括两个阶段:事件捕获阶段、事件冒泡阶段。错误,中间再加目标阶段

    B、IE跟标准浏览器对于DOM事件流实现不一样

    C、假设parentEle是childEle的父节点,绑定事件:

    parentEle.addEventListener(“click”, fn1, false)和

    childEle.addEventListener(“click”, fn2, false),当点击childEle的时候fn1将先于fn2触发。

    D、addEventListener第三个参数true代表支持捕获,false代表不支持捕获 备注:false是捕获

    5、(不定项选择)通过下面的哪些方法可以获取页面的html元素 A,C,D

    A、document.getElementById

    B、document.getElementsByClassName

    C、document.querySelector

    D、document.querySelectorAll

    6、(不定项选择)下面选项中,对javascript事件的描述不正确的是:C

    A、IE使用attachEvent/detachEvent方法来添加和删除事件监听器;w3c使用addEventListener/removeEventListener方法。

    B、IE是将event对象作为参数传递给监听器,w3c事件监听器内使用的是一个全局的Event对象。

    C、IE提供了对事件捕获阶段的支持。错误,备注IE9以上支持

    D、要停止事件的传递,IE的做法是设置event对象的cancelBubble为true,而w3c的做法是设置执行stopPropagation方法。

    7、(单项选择)

    var array1 = [1,2];

    var array2 = array1;如果改成 var array2 = [1,2]

    array1[0] = array2[1];

    array2.push(3);

    console.log(array1);

    console.log(array2);

    执行上面的代码array1和array2的值分别是什么?C

    A、Array1的值为[2,2];Array2的值为[1,2,3]

    B、Array1的值为[2,2,3];Array2的值为[1,2,3]

    C、Array1的值为[2,2,3];Array2的值为[2,2,3]

    D、Array1的值为[1,2,3];Array2的值为[1,2,3]

    备注:如果改成var array2 = [1,2],那么是A

    8、(不定项选择)有如下代码:

    function Test(name,age){

        this.name = name;

        this.age = age;

    };

    Test.prototype = {

        name:’aliyun’,

        hasOwnproperty:function(){

        return false;

    }

    };

    var instance = new Test(‘alibaba’,102);

    以下关于原型链的说法正确的是: A ,C

    A、JavaScript对象有两种不同的属性,一种是对象自身的属性,另一种是继承于原型链上的属性

    B、instance.name == ‘aliyun’为true

    C、instance.hasOwnproperty(‘age’)结果将是false

    D、所有对象都继承自Object.prototype 备注:Object.prototype为null

    9、实现函数range([start,]stop[,step])返回一个数组(step大于1)D

    A range(1,11); => [1,2,3,4,5,6,7,8,9,10]

    B range(0); => []

    C range(10); => [0,1,2,3,4,5,6,7,8,9]

    D range(0,30,5); => [0,5,10,15,20,25]

    10、有一个包含数据列表的页面,数据行数不确定。每一行数据都有一个删除按钮,单击删除按钮删除该列数据,请用JavaScript实现该功能。

    <script>
    
          var oUl = document.createElement('ul');
              oUl.id="oul";
          var str="";
          for(var i=0;i<10;i++){
                  str+="<li>cjakcsk<span class="shanchu">删除"+i+"</span></li>";
                  var spanli=document.getElementsByTagName("span");
          };
           oUl.innerHTML=str;
           document.body.appendChild(oUl);
           var liSpanObj=oUl.querySelectorAll("span");
           for(var i=0;i<liSpanObj.length;i++){
                 //第一方法
                 liSpanObj[i].index = i;
                 liSpanObj[i].onclick=function(){
                     oUl.removeChild(liSpanObj[this.index].parentNode);
                 }
                 //第一个方法
    
                 (function(k){
                     liSpanObj[i].onclick=function(){
                          var li=liSpanObj[k].parentNode;
                              oUl.removeChild(li);
                  })(i);
    
            }
    
    </script>
  • 相关阅读:
    如何从svn上down项目
    查看当前项目的svn地址
    项目启动失败
    新增sql后面可以跟where条件(多表关联新增数据和复制数据)
    递归思想之---斐波拉契数列
    递归思想之---阶乘算法
    java递归思想之---汉诺塔
    将 Docker 镜像体积减小 转载:https://mp.weixin.qq.com/s/kyK6652kchtudZHhSsYx_Q
    工具 转载 https://mp.weixin.qq.com/s/Y1RHEDu0vuH4qm9QtMISFg
    Kubernetes 学习笔记 权威指南第五&六章
  • 原文地址:https://www.cnblogs.com/binmengxue/p/5316027.html
走看看 - 开发者的网上家园