字节AML日常实习二面
二面
- 说一下从输入URL到渲染页面的过程
- 项目介绍,吹了很久
- new 的实现写法,好家伙一面不是问了吗?
- for of 和 for in的区别
我推荐看https://www.bilibili.com/video/BV18S4y1K75g/?spm_id_from=333.337.search-card.all.click,
- 手写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是错误的,所以要改方法,也很简单,用个变量记录一下执行完的次数就行,这个问题我没有发现,是面试官告诉我的
- Map和Set,Map和Object的区别,WeakMap和Map的区别
当时问我WeakMap的key是不是只能为Object类型,我说我忘记了,查了一下MDN:WeakMap 的 key 只能是 Object
类型。 原始数据类型 是不能作为 key 的(比如 Symbol)。
- 为什么要在每个jsx文件里面写?
import React from 'react'
- webpack和vite的区别,vite是怎么打包的?rollup在vite里面的作用是?webpack和vite热更新有什么区别?webpack热更新会编译所有文件再热更新吗?
- 反问
反问:进来后做什么工作
对我的建议
面试官说我不喜欢给人建议,但最后说我表现不错,准备第三面
好家伙,刚说完十分钟就约三面了,明天下午