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

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

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

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

  • 相关阅读:
    一个购物网站的思路设计分享
    B/S和C/S的区别(转)
    TreeSet
    计算出给你一个随机乱敲的一个字符串最多的一个
    JavaScript来实现打开链接页面(转载)
    js小数计算小数点后显示多位小数(转)
    java中使用 正则 抓取邮箱
    浅谈 正则表达式
    jQuery中each()、find()、filter()等节点操作方法
    Xcode插件VVDocumenter Alcatraz KSImageNamed等安装
  • 原文地址:https://www.cnblogs.com/yuan233/p/10531480.html
Copyright © 2011-2022 走看看