美团前端面试,已收到 OC

1. 浏览器从输入 URL 到页面渲染

2. HTML 渲染过程

3. JS 的解析内容

4. JS 事件循环机制

执行主线程任务(同步任务)→ 遇到异步任务放入任务队列 → 栈清空后事件循环调度任务 → 每轮循环执行一个宏任务,之后清空所有微任务。

5. 浏览器与 Node.js 的事件循环区别

浏览器:单宏任务队列,每轮循环:1 宏任务 → 清空所有微任务。

6. Vue2 vs Vue3 响应式区别

Vue2 用 Object.defineProperty,只能劫持已有属性;Vue3 用 Proxy,可代理整个对象,支持属性新增/删除和数组下标修改。

7. Vue3 自定义响应式

通过 reactive 或 ref 创建代理对象,内部用 Proxy 拦截 get/set,依赖收集和触发更新由 effect、track、trigger 实现。

8. ref 的基础类型 vs 引用类型

基础类型:包装成 { value } 对象,拦截 value 的 get/set。

引用类型:先用 reactive 转为 Proxy,再赋给 ref.value。

9. Vite 热更新比 Webpack 快的原因

Vite 利用原生 ES 模块,不需要打包,改动时直接让浏览器重新请求受影响的模块;Webpack 需要重新构建依赖图,速度慢。

10. Vite 解析所有文件的原理

基于 ESBuild 做依赖预构建,开发时拦截浏览器对模块的请求,用插件系统(如解析 TS、Vue、CSS)转换为浏览器可识别的代码。

11. 首屏优化方式

代码分割、路由懒加载、Tree Shaking;图片懒加载、压缩、CDN;关键资源内联;合理缓存策略(强缓存 + 协商缓存 + Service Worker)。

12. 大文件分片加载

将文件按固定大小切片(如 1MB),前端并发请求各片段(Range 请求或自定义分片接口),最后合并成完整文件;可记录进度支持断点续传。

13. 强缓存

通过 Cache-Control、Expires 控制,命中后浏览器直接读本地,不发请求。

14. 缓存标识的生成位置

构建工具会在构建时给文件名加内容哈希(如 app.8f3d2.js),内容变化时生成新文件名,自动失效旧缓存。

全部评论

相关推荐

评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务