前端面试题分享

200 阅读1分钟

面试题事后分享,一些js处理方法的题型,是否最优解尚未可知,但从输入输出结果上来看还尚可,以后有相关业务开发也能做一个参考。

1. 根据规律设计一个方法使得结果成立:

输入["age","name","apple"]输出e
输入["foot","hair","finger"]输出""
输入["function","question","action]输出"tion"
大致就是这个意思,具体题目记不清

//这题的考的是返回所有单词的相同的结尾,单词长度不一,所以先找出最短的一项
function getLen(Array) {
    let Len = Array[0].length
    for (let i = 1; i < Array.length; i++) {
        if (Array[i].length < Len) {
            Len = Array[i].length
        }
    }
    return Len
}
//函数处理
function getEndString (Array) {
    //获取长度
    let Len = getLen(Array)
    //设置空字符串
    let EndString = ''
    //循环判断
    for (let i = 0; i <= Len; i++) {
        for (let j = 1; j < Array.length; j++) {
            if (Array[0].charAt(Array[0].length - i - 1) !=Array[j].charAt(Array[j].length - i - 1) && i != 0) {
                return EndString
            } else if (Array[0].charAt(Array[0].length - i - 1) != Array[j].charAt(Array[j].length - i - 1) && i == 0) {
                return ""
            }
        }
        EndString = Array[0].charAt(Array[0].length - i - 1) + EndString
    }
}
    

2. 随机输出色值#333333~#DDDDDD的值,但是要求有50%的概率输出#333333

以下是个人的见解
//这是获取随机数函数
function getrandom(n, m) {
    return Math.floor(Math.random() * (m - n + 1) + n)
}
//函数方法
function getColor() {
    let arr = ['3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D'];
    let str = '#'
    for (let i = 0; i < 6; i++) {
        str += arr[getrandom(0, arr.length - 1)]
    }
    //主要是这一步不知道是否正确
    //这里拿100个取随机数,取中位数然后进行判断,然后循环100调用然后统计次数确实在50次多有,但不是精确的50%,不知道各个大神有啥指出
    if (getrandom(1, 100) <= 50) {
        str = '#333333'
    }
    return str
}

3.手写instanceof,这个好多手写题都出现过,贴一下代码他人代码

function myInstanceof(left, right) {
    let proto = Object.getPrototypeOf(left), // 获取对象的原型,是不是用__proto__也能获取值来比较
        prototype = right.prototype;
     // 判断构造函数的 prototype 对象是否在对象的原型链上 
     while (true) { 
         if (!proto) return false;
         if (proto === prototype) return true; 
         proto = Object.getPrototypeOf(proto); 
     }
 }

---------------------------------------先更新这些,后续再继续------------------------------