字节飞书-秋招提前批-前端一面面经已凉

自我介绍、项目啥的就不说了,大概的问题如下
  1. http和https区别,ssl具体怎么实现的   (简单的说了说对称秘钥和非对称秘钥,以及数字签名、证书;)
  2. HTTP2解决的问题
  3. 数组和链表区别(这块还问到了系统是如何取链表加载到缓存的,这块不太理解她想问什么)
  4. react实现一个定时器,封装一个hook(这块确实有点菜,用useEffect写出了定时器,但是封装一个自己的hooks没写出来,还得学习学习)
  5. 看代码题
    var test = 'global'
    const b = (function () {
        const test = 'scope';
        return { 
            test: '111',
            say() {
                console.log(test);
        } };
    }());
    b.say(); // 'scope'
    删减了一部分,以上是我要吐槽的一部分。这块我当时的回答是,不确定是不是闭包,如果是闭包就应该打印scope.,如果不是就是global。结果面试官信誓旦旦的说和闭包没关系,然后我就信了。。但是今天尝试发现打印的就是scope,具体是不是闭包,求教各位大佬帮忙解答。
  6. 一道算法题 根据字符串执行对象的链式调用,无法进行链式调用就返回给定的默认值(最后一题面试官评价不行,不是最优解,不过下来想起来一个有意思的方法,可以在每个·前边加个问号,每个[前边加个?.,然后和obj拼接一个字符串,然后eval执行,例如eval('obj?.c?.[0]?.d?.e') || defaultVal)

#字节跳动秋招提前批##面经##校招##字节跳动##前端工程师#
全部评论
第四题感觉有个细节点,就是用useRef把timer包一下。感觉这是个加分项😂
1 回复
分享
发布于 2021-07-24 14:02
emmmmmmm 这道题, 这样好像就行了吧? function get(obj,chain,defaaultVal){ with(obj)return eval(chain)||defaaultVal; }
1 回复
分享
发布于 2021-07-25 18:42
联想
校招火热招聘中
官网直投
闭包吧
点赞 回复
分享
发布于 2021-07-24 12:53
对于第五题,我说一下我的理解: 首先是闭包的定义:闭包是一个函数,这个函数能够访问另一个函数作用域中的参数和变量。 而第五题中的函数是一个 IIFE 也就是立即执行的函数,返回了一个对象,这个对象中有一个 say 方法,这个 say 方法能够访问到这个立即执行的函数中的变量 test,所以 say 是一个闭包。 然后面试官说和闭包没关系的话,我觉得面试官是想让你回答 JS 的静态作用域吧,也就是 JS 中函数作用域是在函数定义的时候就决定了的,相对的有动态作用域,是函数在调用的时候才决定作用域。
点赞 回复
分享
发布于 2021-07-24 12:57
第五题可能是想考察作用域的问题吧?  一般来说考察闭包会ruturn 一个函数 而不是一个对象
点赞 回复
分享
发布于 2021-07-24 16:18
取链表加载到缓存应该是问虚拟地址空间怎么转换成物理地址空间吧。毕竟链表存的是地址?
点赞 回复
分享
发布于 2021-07-24 16:33
这道题我第一反应就是scope,我感觉是在考察作用域。块级作用域的问题。😀
点赞 回复
分享
发布于 2021-07-24 18:40
bd,应该是闭包,但是确实和闭包没关系
点赞 回复
分享
发布于 2021-07-25 14:44
最后一题学到了
点赞 回复
分享
发布于 2021-07-25 14:51
第五题立即执行函数也是闭包的表示形式,我觉得面试官的重点在this的绑定规则
点赞 回复
分享
发布于 2021-07-25 19:29
那个算法题是哪一题啊?
点赞 回复
分享
发布于 2021-07-29 09:16
我来说吧 ,  const test = 'scope&(13324)#39;;     return {          test: '111',         say() {             console.log(test);     } }; } 其实say是这样写的 var obj={ } obj.test="111" obj.say=function(){ console.log(test)} //这个函数的作用域建立在上一个花括号的 不是当前花括号,要去按作用域链去找 第一个 scope 第二个 global 根本不可能是111
点赞 回复
分享
发布于 2021-08-02 21:22
关于打印scope那个,想考的应该是当前作用域,因为打印的是test,不是this.test // '1111'。当前作用域没有test。沿着作用域向上找,在闭包里找到test //scope,所以打印scope
点赞 回复
分享
发布于 2021-08-04 18:01

相关推荐

8 47 评论
分享
牛客网
牛客企业服务