面经(三)

131 阅读1分钟

一面

项目讲解

React Fiber

前端优化

代码

var a = { name: 1 }  
var b = { name: 2 }

var o = {}
o[a] = 1
o[b] = 2
console.log(o) // 2

任务执行顺序

async function async1() {
    // 2
   console.log('async1 start')
   await console.log(1)
    // 6
   console.log('async1 end')
}

async function async2() {
    // 3
   console.log('async2')
}

// 1
console.log('script start')

setTimeout(function() {
    // 8
   console.log('setTimeout')
}, 0)  

async1()

new Promise(function(resolve) {
    // 4
   console.log('promise1')
   resolve()
}).then(function() {
    // 7 
   console.log('promise2')
})

// 5
console.log('script end')

大数相加

function add(num1, num2) {
    const arr1 = num1.split('')
    const arr2 = num2.split('')
    const maxLenArr = arr1.length > arr2.length ? arr1 : arr2
    const minLenArr = arr1.length > arr2.length ? arr2 : arr1
    let ret = []
    let flag = false
    for (let i = maxLenArr.length - 1; i >= 0; i--) {
        const sum = Number(maxLenArr[i] || 0) + Number(minLenArr[i] || 0) + (flag ? 1 : 0)
        if (sum >= 10) {
           flag = true
           ret.push(sum - 10)
        } else {
            flag = false
            ret.push(sum)
        }
    }
    let str = ''
    ret.forEach((item) => {
        str = item + str
    })
    return str
}

add('12345678987654321', '12345678987654321')