Javascript高级开发两道面试题目

匿名网友 匿名网友 发布于: 2016-07-03 00:00:00
阅读 134 收藏 0 点赞 0 评论 0

问题一

使用Promise描述如下过程:绿灯亮3秒,然后红灯亮3秒,然后黄灯再亮3秒。灯亮过程可以用console表示。

当时写的不好,纠结在是封装个sleep函数还是用setTimeout,然后定义了三个Promise对象分别表示红、绿、黄灯亮的过程,自己感觉也挺不好的,所以有点畏首畏尾写不下去。回来在自己机器上几分钟就写出来了,还没有重复定义,内心真是。。那个悔啊,被别人看扁了,其实哥真不是不会啊。

    function sleep(delay){
        var now = new Date().getTime();
        while(new Date().getTime() - now < delay){
        }
    }

    function led(color){
        console.log(color);
        sleep(3000);
        return new Promise(function(resolve,reject){
            resolve();
        });
    }

    led("green").then(function(){
        led("red");
    }).then(function(){
        led("yellow");
    });
问题二

自己实现一个sort2,尽可能地模拟js原有的sort函数

这个我确实不会写,js原有的sort函数还可以接收函数参数的。不过让我写个排序的函数还是没问题的。

function sort2(arr,option){
    for(var i=0,len=arr.length;i<len-1;i++){
        for(var j=i+1;j<len;j++){
            if(option && option == 1){
                //1为降序,默认或者0为升序
                if(arr[j] > arr[i]){
                    var tmp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = tmp;
                }
            }else {
                if(arr[j] < arr[i]){
                    var tmp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = tmp;
                }
            }
        }
    }
return arr;
}

//var arr = [9,4,6,2,1,3,5,8,7,0];
var arr = ['c','b','e','a'];

console.log(sort2(arr));

该函数支持正序,逆序,数字,字母排序。

评论列表
文章目录