字节AML日常实习二面

二面

  1. 说一下从输入URL到渲染页面的过程
  2. 项目介绍,吹了很久
  3. new 的实现写法,好家伙一面不是问了吗?
  4. for of 和 for in的区别

我推荐看https://www.bilibili.com/video/BV18S4y1K75g/?spm_id_from=333.337.search-card.all.click,

  1. 手写allSettled,我写的有两个问题,一个是闭包,一个是很隐蔽的问题
function allSettled(promises) {
   const results = []
   return new Promise(resolve => {
       for (let i = 0; i < promsies.length; i++) {
           const promise = promises[i]
           promise
               .then(res => results[i] = res)
               .catch(error => result[i] = error)
               .finally(() => {
                   if (results.length === promises.length) {
                       resolve(results)
                   }
               })
       }
   })
}

第一个问题是

const results = []

这个东西是在Promise外面,所以有闭包问题,会造成内存泄漏

第二个问题是finally内的

if (results.length === promises.length) {
    resolve(results)
}

如果用户传进来的promises是只有第一个和第100个有数据,比如说执行一下promises[100] = asyncTask这种操作,如果下标为100的先执行完,那results的length就直接100了,这时候就直接resolve是错误的,所以要改方法,也很简单,用个变量记录一下执行完的次数就行,这个问题我没有发现,是面试官告诉我的

  1. Map和Set,Map和Object的区别,WeakMap和Map的区别

当时问我WeakMap的key是不是只能为Object类型,我说我忘记了,查了一下MDN:WeakMap 的 key 只能是 Object 类型。 原始数据类型 是不能作为 key 的(比如 Symbol)。

  1. 为什么要在每个jsx文件里面写?
import React from 'react'
  1. webpack和vite的区别,vite是怎么打包的?rollup在vite里面的作用是?webpack和vite热更新有什么区别?webpack热更新会编译所有文件再热更新吗?
  2. 反问

反问:进来后做什么工作

对我的建议

面试官说我不喜欢给人建议,但最后说我表现不错,准备第三面

好家伙,刚说完十分钟就约三面了,明天下午

全部评论
这....问的问题一模一样啊我靠
点赞 回复 分享
发布于 2024-06-17 20:45 广东

相关推荐

不会取名字的牛油:学历加大加粗,面试库库来
点赞 评论 收藏
分享
图源网络侵权删
dddooola:这个事情我去年8月就看到有人b站(up:程序员正义)在举报了,可能一直在查,这次是查明后的处分了
点赞 评论 收藏
分享
评论
3
10
分享

创作者周榜

更多
牛客网
牛客企业服务