网易|前端开发实习生 | 杭州 | 2021 一面面经

题外话:一面过了,二面我没有约时间,因为腾讯这边云证了,可能时间上网易流程也走不完了,希望下次再会。

一面 | 视频面试 | 40分钟

  1. 你先做个自我介绍吧

  2. 现在主要还是自学为主是吧?你都怎么自学?

  3. 代码题:使用for循环生成10个计时器,计时器的延迟执行时间分别是1到10秒时间,然后使用Promise同时执行这10个计时器,等全部计时器执行完毕后输出 “计时器全部执行完毕”。

    这道题麻了,没写出来,Promise还是敲得少。

    下面是我的错误代码

    new Promise(() => {for (let i = 0; i < 10; i++) {setTimeout(()=>{console.log(1);},1000 * i);}resolve();
    }).then(()=>{console.log('计时器全部执行完毕。');
    })
    

    问题在于,没有给promise的回调函数中传参,resolve和reject。

    后续我写一下这个题的想法。(挖坑

  4. 代码题:有一个数组,给定两个下标,将这两个下标之间的数组元素在原数组上面进行翻转,要求不能使用数组的方法。

    双指针,没什么好说的。

    function reverse(arr, left, right) {while (left < right) {[arr[left], arr[right]] = [arr[right], arr[left]];left++;right++;}
    }
    

    使用解构赋值交换元素值。

  5. 除了es6的语法,还有什么办法交换两个元素的值?

    1. 使用中间变量temp

    2. [a, b] => b = a + b => [a, a + b]

      ​ => a = b - a => [b, a + b]

      ​ => b = b - a => [b, a]

    3. 异或 a = a ^ b, b = a ^ b, a = a ^ b

  6. JSON.stringify了解吗?一般什么情况下用到?

    1. 网络请求不能发送JSON,需要转化为字符串
    2. 对象深拷贝
  7. 这个方法什么时候会发生异常?

    没答出来。

    • 当在循环引用时会抛出异常TypeError (“cyclic object value”)(循环对象值)
    • 当尝试去转换 BigInt 类型的值会抛出TypeError (“BigInt value can’t be serialized in JSON”)(BigInt值不能JSON序列化).

    我尝试第一个循环引用的时候 没搞出异常,感兴趣的同学可以试一下怎么才能搞出异常。

  8. form表单控件知道是什么意思吗?写一个checkbox试试。

    几百年没手写表单了,全是用自动填充写的= =。居然没写出来。

  9. 现在有一个不知道宽高的div,把它放到屏幕正中间,怎么做?

    1. 绝对定位:top50% left50% transfrom: translate(-50%, -50%);
    2. flex布局:align-items center, justify-content center
  10. 代码题:将一个数组元素清空有几种办法?

let arr = [1,2,3,4,5];

  1. arr = [],对const无效

  2. arr.length = 0;

  3. while(arr.length > 0) {arr.push();
    }
    
  4. 使用splice。arr.splice(0, arr.length);

反问

  1. 您对”前端停滞了三年没有发展了“,您对这个观点怎么看?

    应该说的是框架吧,作为实际的开发人员,会往一些特殊的方向发展。

    移动端的组件库还没有特别好的解决方案,跨端方面的问题。

    react出来的时候改变了人们写代码的思考方式


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部