又是一周四个面试的一周

288 阅读1分钟

百度电商前端岗位

一面

  主要以八股文为主,1、let、const和 var 的区别 2、基本数据类型 3、闭包 4、es6 新特性 5、promise相关内容,promise.all promise.race 分别是干什么的,6、网络缓存  
  编程题:1、大数相加 2、斐波拉次数列 3100s倒计时,如何执行更加准时

关于1的一些问答如下

//  console.log(a)
//  const a={a:1}               
// console.log(a)

// var a={a:1}
// const b =a
// console.log(a)

// const a ={a:1}
// console.log(b)
// var b = {a:1}
// const a ={a:1}
// const b=a
// b.a =2
// console.log(a)

二面

  项目经历,性能优化,封装组件注意事项
  编程题:10个请求,最多同时 3个进行,就是控制并发(ps:已经第三次遇到这个题了,我还是忘记了,9494)
  还是写写这个题吧,挂在这里100遍,另外上次在数字马力长沙岗位的笔试题也遇到了
  
function mockFetch(param) {
  return new Promise((resovle) => {
    setTimeout(()=>{
        resovle(param)
    },2000)
  });
}

function limitedRequest(urls,maxNum){
    const pool = []
    const initSize = Math.min(urls.length,maxNum)
    for(let i=0;i<initSize;i++){
        pool.push(run( urls.splice(0,1)))

    }
        function r (){
            console.log('当前并发数:',pool.length)
            if(urls.length===0){
                console.log('并发请求已经全部发起')
                return Promise.resolve() 
            }
           return run(urls.splice(0,1))
        }
        function run(url){
            return mockFetch(url).then(r)
        }
        // 全部请求完成的回调
        Promise.all(pool).then(()=>{
            console.log('请求已经全部结束')
        })
}
// 函数调用

limitedRequest([1,2,3,4,5,6,7,8],3)

Over!!!
大概是这样,谢谢大家,我有录屏,有需要可以私信我