• 前端头条面经(卒)


    昨天晚上头条一面,自己太菜了,结果挂了,分享一下自己的面经吧

    1.a.().b().c() 链式调用打印a,b,c

    我太菜了吧,过后写了一种实现方法:

    let o={
    a:function(a){
    console.log(a)
    return this;},
    b:function(b){
    console.log(b);
    return this;},
    c:function(c){
    console.log(c);
    return this}
    } o.a(a).b(b).c(c)

    主要是使用return this

    2.一到闭包的题,让你说运行结果,这种类型的题很多,可以百度一下

    然后小姐姐问我解决方案,我说改用es6的语法,把var变成let

    3.小姐姐就扯到了es6的数组方法,让我用reduce实现map

    给我了 prev,cur,index,arr 4个参数

    let nums=[10,20,30,40];   
     let map=nums.reduce((prev,cur,index,arr)=>{
       prev=nums[index-1];
       cur=nums[index];
       console.log(prev,cur,index);
      },0)   

    不知道这样实现对不对

    4.小姐姐又让我讲了下前端性能优化,

    主要是前面的题没有答上来就很尴尬了,我心态有点崩了,然后这个也没有答好,回答的前后逻辑性不强

    我讲了可以减少http请求优化,然后提到了懒加载,小姐姐说这个也没有减少请求,然后我又扯了cdn优化,反正也没说对

    行吧,我去补一补cdn优化:

    然后我说函数节流和防抖,小姐姐让我回答节流和防抖的区别

    函数节流主要是 在规定时间内,只有一次触发事件的回调函数,不要频繁的请求http,

    可以用定时器来解决,小姐姐让我写一个节流函数,然后我很菜

    function throttle(func,wait){
    let timer;
    return ()=>{
    if(timer)
    return ;
    timer=setTimerout(()=>{
    func();
    timer=null},wait)}
    }

     函数节流,也可以用时间戳实现节流

    function trottle(func,wait){
    let last=0;
    return ()=>{
    let curTime=+new Date();
    func.apply(this,arguments)
    last=+new Date();}

    函数防抖:

    触发事件后在n秒内函数只能执行一次,若在这n秒内又触发了事件,则会重新计算函数的执行时间

    应用场景:

    连续事件中,只需触发一次回调

    function debounce(func,wait){
    let timer;
    return ()=>{
    clearTimeout(timer)
    timer=setTimeout(func,wait)}}

    然后小姐姐追问我节流和防抖的区别:

    节流不管事件触发多频繁,都会保证在规定时间内一定会执行一次真正的时间处理函数

    防抖在最后一次请求事件后才触发一次

  • 相关阅读:
    AMD 开源照片级渲染引擎 Radeon ProRender
    删除集群mds
    删除集群mds
    一次旅途她和豆浆结缘,如今拥有70多家加盟店
    小伙居然开网店卖花,整整一年时间他做出了400万元的业绩
    带着800元现金开始创业,居然开出了十几家连锁超市
    北大学霸从小米离职,靠眼镜打开亿万市场
    广西农民靠养猪发家致富,采用新模式既有效益又保护生态
    在母婴产品领域他独领风骚,利润已经突破了1亿
    80后小伙白手起家做照明生意,为他创造了六千万元的业绩
  • 原文地址:https://www.cnblogs.com/yuan233/p/10531480.html
Copyright © 2020-2023  润新知