zoukankan      html  css  js  c++  java
  • 前端头条面经(卒)

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

    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)}}

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

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

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

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    基于分布式锁解决定时任务重复问题
    基于Redis的Setnx实现分布式锁
    基于数据库悲观锁的分布式锁
    使用锁解决电商中的超卖
  • 原文地址:https://www.cnblogs.com/yuan233/p/10531480.html
Copyright © 2011-2022 走看看