一、框架与库:React/Vue3核心机制与实战
1. React 19+新特性与Hooks深度应用
React 19引入的Selective Hydration(选择性水合)技术成为面试热点。该机制通过优先渲染用户交互区域(如点击的按钮),延迟非关键区域(如底部广告)的SSR水合,显著提升首屏交互速度。例如:
// React 19 Suspense与选择性水合示例function App() {return (<Suspense fallback={<Spinner />}><AsyncComponent /> {/* 延迟加载组件 */}<button onClick={handleClick}>提交</button> {/* 优先水合 */}</Suspense>);}
面试官可能追问:如何监控选择性水合的触发条件? 需结合React DevTools的Profiling面板,观察组件树的hydration标记与耗时统计。
2. Vue3 Composition API与响应式原理
Vue3的ref与reactive底层依赖Proxy对象实现响应式,区别于Vue2的Object.defineProperty。面试题常考察:
// Vue3响应式陷阱:修改数组索引或长度const state = reactive({ list: [1, 2, 3] });state.list[0] = 10; // 触发更新state.list.length = 0; // 不触发更新(需用splice)
解决方案:使用Vue.set或数组的变异方法(如push、splice),或通过ref包装数组。
二、TypeScript高级类型与工程化
1. 条件类型与高阶类型设计
TypeScript 5.4+的satisfies关键字可解决类型推断与精确性矛盾:
type Config = {timeout: number;retry: boolean;};const config = {timeout: 5000,retry: true,} satisfies Config; // 明确类型,避免宽泛的object
面试题可能要求实现一个DeepPartial<T>类型,递归将所有属性设为可选:
type DeepPartial<T> = {[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];};
2. 类型守卫与断言优化
在运行时类型检查中,推荐使用用户定义的类型守卫:
function isString(val: unknown): val is string {return typeof val === 'string';}function processInput(input: unknown) {if (isString(input)) {console.log(input.toUpperCase()); // 安全调用}}
三、Web性能优化:从指标到方案
1. Core Web Vitals实战
- LCP(最大内容绘制):优化关键资源(如英雄图片)的预加载,使用
<link rel="preload">。 - CLS(累积布局偏移):避免动态插入内容,预留占位空间:
<div class="placeholder" style="min-height: 200px;"></div><img src="hero.jpg" loading="lazy" style="width: 100%;" />
2. 代码分割与按需加载
React的lazy与Suspense组合实现路由级分割:
const Home = lazy(() => import('./Home'));const About = lazy(() => import('./About'));function App() {return (<Suspense fallback={<Loading />}><Routes><Route path="/" element={<Home />} /><Route path="/about" element={<About />} /></Routes></Suspense>);}
四、浏览器与网络:底层原理剖析
1. HTTP/3与QUIC协议
HTTP/3基于QUIC协议,解决TCP队头阻塞问题。面试题可能对比HTTP/2与HTTP/3:
| 特性 | HTTP/2 (TCP) | HTTP/3 (QUIC) |
|———————|———————|———————-|
| 连接复用 | 多路复用 | 多路复用+无队头阻塞 |
| 头部压缩 | HPACK | QPACK(独立流) |
| 0-RTT支持 | 有限 | 全支持 |
2. 事件循环与微任务优先级
Node.js与浏览器的事件循环差异常被考察:
// 浏览器环境setTimeout(() => console.log(1), 0);Promise.resolve().then(() => console.log(2));console.log(3); // 输出顺序:3 → 2 → 1// Node.js环境(process.nextTick优先级更高)setImmediate(() => console.log(1));Promise.resolve().then(() => console.log(2));process.nextTick(() => console.log(3)); // 输出顺序:3 → 2 → 1
五、工程化与安全:从构建到部署
1. Webpack5模块联邦实战
模块联邦实现微前端架构的动态加载:
// host应用配置new ModuleFederationPlugin({remotes: {app1: 'app1@http://remote-app.com/remoteEntry.js',},});// 远程应用配置new ModuleFederationPlugin({name: 'app1',filename: 'remoteEntry.js',exposes: {'./Button': './src/components/Button',},});
2. CSRF与XSS防御方案
- CSRF防御:同步令牌(CSRF Token)+ 双重提交Cookie。
- XSS防御:CSP(内容安全策略)限制内联脚本:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted.cdn.com;
六、备考建议与资源推荐
- 动手实践:使用CodeSandbox或StackBlitz实时调试代码片段。
- 模拟面试:通过Pramp或Interviewing.io进行模拟技术面试。
- 官方文档:优先阅读React、Vue、TypeScript的官方文档(2025年版本)。
- 性能工具:掌握Lighthouse、WebPageTest、Chrome DevTools的Performance面板。
2025年的前端面试更注重系统化知识与工程化思维,而非孤立的技术点。建议结合开源项目(如Next.js、Vite)深入理解技术选型背后的原因,例如为什么Vite选择Rollup而非Webpack作为生产构建工具。