1. Js为什么是单线程? 标记显示答案设计初衷:响应事件、操作 DOM、发送网络请求,适合 I/O 密集型。单线程原因:简化开发、避免 DOM 操作冲突。补充:JS 引擎单线程,但浏览器可多线程(Web Workers);配合事件循环处理异步。
4. promise和async/await的区别? 标记显示答案Promise:ES6,链式 then/catch,写法偏底层。async/await:ES7,同步写法写异步,用 try/catch 捕获错误,可读性更高。二者常结合使用。
8. 什么是内存泄漏? 标记显示答案已不再使用的内存未被释放,占用持续增长,导致卡顿甚至崩溃。常见原因:意外全局变量、未清除定时器/监听器、闭包持有大对象、DOM 已删除仍被 JS 引用。排查:Chrome DevTools → Memory 面板,对比快照找持续增长的对象。处理:clearInterval/removeEventListener、解除引用(置 null)、避免闭包长期持有无用数据。
9. 隐藏类优化、JIT、ESM优化? 标记显示答案隐藏类:同一函数内对象属性添加顺序保持一致。JIT:函数参数类型尽量保持一致,避免频繁变形。ESM:按需 import,避免 import * 通配符导入全部。
2. 浏览器渲染页面步骤? 标记显示答案解析 HTML → DOM 树;解析 CSS → CSSOM → 合成渲染树 → 布局 → 绘制 → 合成。选择器匹配从右往左;JS 阻塞 HTML 解析;CSS 阻塞 JS 执行。
3. 事件委托、捕获、冒泡理解? 标记显示答案事件委托:监听绑在父元素,用 event.target 判断实际触发元素,减少监听器。捕获:外→内(.capture 或第三参 true)冒泡:内→外(默认)顺序:捕获 → 目标 → 冒泡
4. 对网络协议的理解? 标记显示答案DNS 解析 → HTTP 报文 → TCP 三次握手 → IP 头 → MAC 头 → 服务端逐层拆包校验 → 业务处理 → HTTP 响应 → 四次挥手 → 浏览器拆包 → 渲染页面
7. Web Storage API有哪些?分别有什么特点? 标记显示答案localStorage:~5MB,永久存储,键值对sessionStorage:~5MB,会话级,键值对IndexedDB:大容量,永久存储,支持结构化数据和索引
1. Webpack和Vite区别? 标记显示答案Webpack:先打包再启动,全量构建,生态成熟,适合复杂定制。Vite:开发用 ESModule 按需加载 + esbuild 预构建,HMR 极快;生产用 Rollup 打包。
2. SSR和CSR的区别? 标记显示答案SSR:服务端执行 Vue 生成 HTML → 返回完整页面 → 客户端 hydrate 激活。首屏快、SEO 好,但服务器压力大、开发复杂。CSR:浏览器下载 JS 后渲染。首屏慢、SEO 弱,但服务器压力小、交互后流畅。
2. Vue2和Vue3的区别? 标记显示答案1. 性能:Vue3 用 Proxy 懒代理,打包更小、渲染更快2. 组合式 API(setup)3. 原生 TS 支持4. 构建工具演进(Vite 秒级 HMR)
5. watch和Computed的区别? 标记显示答案watch:监听变化执行副作用,拿新旧值,不需 return。适合异步请求、手动操作。computed:根据依赖计算派生值,有缓存,必须 return。适合模板展示的计算结果。
6. Vue3中ref和reactive区别? 标记显示答案ref:包装任意类型,访问/修改需 .value,替换整个 .value 仍响应式。reactive:仅对象/数组,直接访问属性;整体替换会丢失响应式,需 Object.assign 或逐个赋值。
7. Vue3响应式核心API? 标记显示答案ref、reactive、computed、watch、watchEffect、readonlyshallowRef/shallowReactive:浅层响应式toRaw:获取原始对象(临时)markRaw:永久标记为非响应式customRef:自定义 reftriggerRef:手动触发更新
2. mitt和 Event Bus 区别? 标记显示答案mitt:纯 JS 库,~200 字节,支持 TS,兼容 Vue3。Event Bus:基于 Vue 实例($on/$emit),Vue3 已移除,需引入整个 Vue 实例。
3. Vue的路由模式与路由守卫? 标记显示答案模式:hash(带#,兼容好)、history(无#,需服务器 fallback)。守卫:全局 beforeEach/beforeResolve/afterEach;路由 beforeEnter;组件内 beforeRouteEnter/Update/Leave。
4. Vuex和Pinia的区别? 标记显示答案Vuex:state/getters/mutations(同步)/actions(异步),modules 模块化,createStore 挂载。Pinia:state/getters/actions(无 mutations),按 store 拆分,原生 TS,体积更小,利于 tree-shaking。