一面
日期:2025.11.10
一、 问题
实现一个异步任务的调度器,我说写过了最好给我换一题- 实现一个LRUCache
- 实现一个Promise.all
- 简单介绍一下 Vue 当中它的路由有两种模式,一种是哈希,一种是 history。那这两种模式它各自的基本特征是什么?它们各自的优缺点、适用的场景以及它们的底层原理有什么不同?
- Vue 当中它数组的变动,有些是不能检测到的。比如说我直接通过一个数组的索引去设置值,或者说我直接修改数组的长度的时候,这个时候它视图层是无法监听到这个数组的变化的。这个在它的底层,原因到底是什么?
- 简单描述一下 Vue 这个 computed 它的底层实现是怎样的?
- 我看你项目当中你有提到用 PNPM 来替代 Yarn。你当时为什么要做这个事情?过程中又是怎么做的?做完之后带来了有统计,有没有统计过带来哪些收益?
- 你这里面还有一个关于性能优化的,优化了1秒的提升,这个主要是做了些什么优化?首屏的性能提升。
- 你们首先定的是 LCP 指标,是吧?那为什么是 LCP 呢?LCP 它指的是绘制面积最大的元素,有可能,比如说你提到一个表格,可能表格外层的这个框已经出来了,但是里面表格里面的内容其实还没有出来。那你这 LCP 对你们来说这个指标准确吗?
- 你优化完成之后,你是怎么又防止它劣化的?
- 你刚才提到还有一个就是 JS 的一个懒加载。那你怎么确定这个庞大的巨石项目当中哪些代码应该是懒加载的?前提条件是你怎么把这些代码分成,怎么确定哪些代码应该把它变成一个 async import?这个代码应该以什么样的比较合适的方式去组织它,让它更容易去分层?
- 你们代码里面有没有分用这种模块化或者依赖注入这种方式?那你简单介绍一下,依赖注入这个东西,它到底可以解决什么样的问题?
- 简单介绍一下浏览器的这个缓存机制。
ETag这个 tag 的标识符是怎么实现的?- 再解释一下浏览器的那个跨域机制。
- 那如果说一个 POST 请求的情况下,并且后端又支持了跨域,那浏览器它的行为是怎样?会先发出什么请求,然后再发出什么请求?
二、 反问
说说你们那边的微前端是怎么实现的?
讲一讲你们那边对依赖注入的运用和实践
平时主要开发工作是做一些什么?
刚刚这场面试,就是能不能给我一个建议和评价,不是面试相关评价,对我这个人的评价,比如说哪里知识点还是有一些欠缺的,就是哪里有一些表达上问题之类的,诸如此类的。