字节跳动(前端一面)

  1. 你觉得你做的项目里面,哪个成长比较大?
  2. 除了你提到的使用新技术以外,你有没有遇到过那些需要请教他人才能解决的问题?

问下基础问题:

  1. 一个输入框和一个图片,怎么实现水平对齐?(display: flex; | display: inline-block; vertical-align: middle; | line-height: parentHeight;)
  2. js怎么去实现继承?(我先说了寄生组合继承,然后他问我组合继承解决了原型链继承的哪些问题?)
  3. 你能说一下for of 和for in的区别吗?
  4. for of 你提到Symbol.iterator,那么你能不能说一下你对iterator的理解?(迭代器模式在js里面的实现)
  5. iterator和generator的关系是什么?你说iterator能自动执行,那么是怎么实现自动执行的?(这里我应该讲错了,async和await才是自动的generator)
  6. typescript的联合类型和交叉类型是什么?
  7. typescript的Interface和type有什么区别?
  8. 讲一下你知道的网络安全问题吧,例如你介绍一下XSS和CSRF?分别怎么防御?
  9. 你讲到token,那么前端一般情况下怎么发送token呢?(带在Authorization头部这边)
  10. token存到哪里?前端各种存储方式你知道吗?会话生存期的存储有哪些(sessionStorage和cookie)?
  11. cookie都有哪些字段?cookie怎么删除?sameSite的具体值和用途是什么?
  12. 你知道网页资源加载的优先级嘛?
  13. js和css会不会阻塞dom的渲染?(两个都会)
  14. 如果要避免js阻塞dom渲染,有什么做法?
  15. 问下网络相关的内容,你能不能说一下https怎么实现握手的?
  16. 在这过程中,我们是可以通过软件抓包的嘛,为什么加密过,但是我还是可以抓到明文包呢?(证书链信任问题)
  17. 所以抓包的时候,这个抓包软件实际上是相当于服务器,我们是客户端对吧?(不太确定,没讲,但是应该是作为服务器才对)。
  18. 对于长任务的js,你提到说使用分片的方式去加载,那你是基于什么判断这个内容是可以进行分片的?(感觉是根据功能判断是否可以并行执行,如果可以,那么直接拆分为多个setTimeout,最终输出结果。如果不行,但是整体可以异步,那么整个丢到worker中执行。另外的话可以考虑使用generator函数)
  19. 我接下来说一个问题,md5是对称加密算法嘛?你首先判断一下这个问题是正确还是错误的,才回答。(我说不是对称加密算法,准确来讲是摘要算法)。
  20. 写题:

(1)实现Vue的花括号替换功能,题目不写了,看一下Vue的花括号语法也就知道什么意思了。
(2)实现数组转树。

// 第(2)提题目
const arr = [
  {
    pid: 0,
    id: 1,
    name: 'xxx'
  },
  {
    pid: 1,
    id: 2,
    name: 'xxx'
  },
  {
    pid: 1,
    id: 3,
    name: 'xxx'
  },
  {
    pid: 3,
    id: 4,
    name: 'xxx'
  },
  {
    pid: 4,
    id: 5,
    name: 'xxx'
  }
];

// 转成:
[
  {
    id: 1,
    name: 'xxx',
    children: [
      {
        id :2,
        name: 'xxx',
        children: []
      },
      {
        id: 3,
        name: 'xxx',
        children: [
          {
            id: 4,
            name: 'xxx',
            children: [
              {
                id: 5,
                name: 'xxx',
                children: []
              }
            ]
          }
        ]
      }
    ]
  }
]

你可能感兴趣的:(字节跳动(前端一面))