web前端面试题(第一波)

1.数组去重

deleteRepeat: function (array) {
    var emptyArray = [];
    for(let i = 0; i < array.length; i++) {
        if(emptyArray.indexOf(array[i]) == -1) {
            emptyArray.push(array[i]);
        }
    }
    console.log('这是去重之后的数组');
    console.log(emptyArray);
},

思路:创建一个新的空数组,遍历旧的数组,如果新数组里面没有旧数组的某一项,将这一项填入新数组中,遍历完毕时,新数组就是去重之后的数组。

2.生成指定数的阶乘

multiple: function (start, end) {
    var result = 1;
    var length = end - start + 1;
    for (let i = start; i <= length; i++) {
        result = result * i;
    }
    console.log(result)
},

思路:n的阶乘就是1 * 2 * 3 * ... * n

3.求数组中最大差值

findMaxMargin: function (array) {
    var maxNumber = this.findMax(array);
    var minNumber = this.findMin(array);
    var maxMargin = maxNumber - minNumber;
    console.log('this is my biggest margin');
    console.log(maxMargin);
},
findMax: function (array) {
    var max = array[0];
    for (let i = 0; i < array.length; i++) {
        if (array[i] > max) {
            max = array[i];
        }
    }
    return max;
},
findMin: function (array) {
    var min = array[0];
    for (let i = 0; i < array.length; i++) {
        if (array[i] < min) {
            min = array[i];
        }
    }
    return min;
},

思路:先找出数组中的最大值和最小值,再做相减运算即可,找最值的思路是,先设定最值是数组中的第一个值,遍历数组,数组中的每一项和设定的最值做比较,将比较的结果付给最值,数组遍历结束时,可得最值。

4.生成斐波那契数列

findMoreWives: function (n) {
    var wives = this.allWives;
    if (n <= 0) {
        return false;
    } else if (n == 1) {
        wives = [1];
    } else if (n == 2) {
        wives = [1, 1];
    } else {
        wives = [1, 1];
        for (let i = 2; i < n; i++) {
            wives[i] = wives[i - 2] + wives[i - 1];
            wives.push(wives[n - 1]);
        }
    }
    wives.splice(n - 1, 1)
    console.log(wives);
},

思路:斐波那契数列为,1,1,2,3,5,8,13,21,34,...即每一项是前两项之和。

5.二分查找

search: function (arr, desNum) {
    var length = arr.length;
    var mid = arr[Math.floor(length / 2)];
    console.log(mid);
    var destination = desNum;
    for (let i = 0; i < length; i++) {
        if (arr.indexOf(destination) == -1) {
            console.log('寻找的目标不存在于数组中');
            return false;
        } else {
            console.log('寻找的目标存在于数组中');
            if (mid == destination) {
                console.log('目标就是' + destination);
                return false;
            } else if (mid > destination) {
                console.log('向前查找')
                var frontField = arr.splice(0, Math.floor(length / 2) + 1);
                console.log(frontField);
                this.search(frontField, desNum);
            } else if (mid < destination) {
                console.log('向后查找')
                var backField = arr.splice(Math.floor(length / 2), length / 2 + 1);
                this.search(backField, desNum);
            }
        }
    }
},

思路:先判断目标在不在给定数组中,在的情况下才进行寻找操作。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功,否则利用中间位置记录将表分成前后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

6.生成指定长度随机字符串

createComplexRandom: function (n) {
    var alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
    var finalString = '';
    var currentRandom = '';
    for (let i = 0; i < n; i++) {
        var tag = Math.floor(Math.random() * 10);
        if (tag > 4 && tag < 10) {
            var alphaPosition = Math.floor(Math.random() * 26);
            currentRandom = alpha[alphaPosition];
        } else if (tag >= 0 && tag < 5) {
            currentRandom = tag.toString();
        }
        finalString += currentRandom;
    }
    console.log(finalString);
},

还有一个光有数字的版本

createRandom: function (n) {
    var string = '';
    for (let i = 0; i < n; i++) {
        var perString = Math.floor(Math.random() * 10);
        string += perString.toString();
    }
    console.log(string);
},

7.http协议在网络结构的哪一层

TCP/IP协议栈中,从下至上依次为物理层,数据链路层,网络层,传输层,应用层,每一层的数据都封装在下一层的数据中,因为http协议被封装在tcp包中,使用的端口号为80,因此http协议属于传输层之上,即应用层。

8.CDN加速原理

CDN全称为内容分发网络(Content DeliveryNetwork),CDN是一个策略性部署的整体系统,从技术上全面解决由于网络带宽小,用户访问量大,网店分布不均而产生的用户访问网站响应速度慢的根本原因,CDN的目的是通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需内容,解决internet网络拥塞状况,提高用户访问网站的响应速度。

猜你喜欢

转载自blog.csdn.net/tengxi_5290/article/details/80877433