JavaScript核心
事件循环与异步编程
- Promise.allSettled与Promise.any的区别:Promise.allSettled等待所有Promise完成(无论成功失败),返回每个Promise的状态和结果;Promise.any取第一个成功的Promise,若全部失败则返回AggregateError
- async/await实现原理:async函数返回Promise对象,await将异步代码改造成同步写法,底层通过Generator和Promise实现,await后的表达式会被包装成Promise
内存管理与性能优化
- 闭包导致的内存泄漏检测与修复:使用Chrome DevTools的Memory面板拍摄堆快照对比,常见泄漏点包括未解绑的事件监听、未清理的定时器、全局变量缓存,修复方案包括显式解除事件监听、清理定时器、使用WeakMap替代强引用
ES6+新特性
- Proxy与Reflect的应用场景:Proxy用于拦截对象操作(如Vue3响应式系统),Reflect提供标准API调用方法,配合使用可实现数据绑定、验证、日志记录等功能
框架原理
React Hooks机制
- useEffect与useLayoutEffect的区别:useEffect在DOM更新后异步执行,适用于API请求、订阅等场景;useLayoutEffect在DOM更新前同步执行,适用于DOM测量、同步DOM操作
- React.memo与useMemo的区别:React.memo用于组件记忆化,避免不必要的重新渲染(浅比较props);useMemo用于计算结果记忆化,避免重复计算
Vue3响应式系统
- reactive与ref的底层实现差异:reactive通过Proxy拦截对象属性访问,支持嵌套对象响应式;ref对基本类型封装value属性,通过.value访问
- Vue3性能提升主要方面:Proxy替代Object.defineProperty(支持数组变化检测、惰性代理)、Composition API逻辑复用、Tree Shaking优化包体积
工程化与性能优化
Webpack构建优化
- Tree Shaking原理与配置:通过静态分析识别未使用的代码并移除,配置optimization.usedExports为true,结合ES6模块语法(import/export)实现
- 模块联邦(Module Federation)实战:实现微前端架构下的跨应用共享库,通过remotes配置引用远程模块,注意版本兼容性和运行时依赖冲突
性能优化策略
- 虚拟列表实现原理:仅渲染可视区域DOM,动态加载/卸载,结合React.memo和useCallback优化长列表渲染性能
- SSR首屏优化方案:静态化(SSG)预渲染不常变页面、流式渲染分块传输HTML、按需加载拆分asyncChunk、CDN+缓存静态资源
安全与前沿技术
Web安全防御
- XSS攻击防御方案:输入输出编码(DOMPurify库)、CSP策略限制脚本来源、HttpOnly标记保护Cookie
- CSRF攻击防御方案:SameSite Cookie属性(Lax/Strict模式)、CSRF Token验证机制、关键操作要求二次认证
新兴技术应用
- WebAssembly应用场景:图像处理、加密解密等计算密集型任务,通过Emscripten编译C/C++代码,AssemblyScript编写TypeScript风格WASM
- AI辅助开发趋势:LLM驱动的UI生成、代码自动补全、AI生成测试用例,开发者需掌握Prompt工程和AI工具协作能力