这是我为准备前端/全栈开发工程师面试整理的第九天每日三题练习,涵盖:
解析:
事件代理(Event Delegation)是一种利用事件冒泡的机制,将子元素的事件委托到父元素上,从而提高性能、节省内存。
document
。target
是哪个子元素,再做相应处理。示例代码:
<ul id="list">
<li data-id="1">Item 1li>
<li data-id="2">Item 2li>
ul>
<script>
document.getElementById('list').addEventListener('click', function (event) {
if (event.target.tagName === 'LI') {
console.log('Clicked item ID:', event.target.dataset.id);
}
});
script>
记忆脑图建议:
事件机制
├── 冒泡阶段
├── 捕获阶段
└── 应用:事件代理
└── 优点:节省资源、动态元素绑定
解析:
Context API 是 React 提供的跨组件传值方案,适用于主题、用户信息等全局数据共享,但也存在性能问题,主要是:任何使用 Context 的组件在 Context 值变动时都会重新渲染。
示例代码:
// 创建上下文
const UserContext = React.createContext();
// 父组件提供数据
function App() {
const [user, setUser] = React.useState({ name: 'Alice' });
return (
);
}
// 子组件消费数据
function UserProfile() {
const user = React.useContext(UserContext);
return {user.name}
;
}
性能优化建议:
React.memo
包裹组件,避免非必要的重新渲染。useMemo
/useCallback
保持引用稳定。记忆脑图建议:
Context API
├── 场景:全局共享状态
├── 问题:所有使用组件会重新渲染
└── 优化:
├── React.memo
├── Context 拆分
└── useMemo/useCallback
解析:
分布式缓存系统广泛用于提升系统性能与响应速度,关键在于:高可用性、数据一致性、扩展性与容错机制。
⚙️ 架构设计要点:
Cache Aside 模式代码示意(Node.js 示例):
const redis = require("redis");
const client = redis.createClient();
const db = require("./database");
async function getUser(userId) {
const cached = await client.get(`user:${userId}`);
if (cached) return JSON.parse(cached);
const user = await db.getUserById(userId);
await client.set(`user:${userId}`, JSON.stringify(user));
return user;
}
记忆脑图建议:
分布式缓存系统设计
├── 关键目标:高可用 + 一致性 + 扩展性
├── 架构选型:Redis 主从/哨兵/集群
├── 策略:
│ ├── 缓存更新策略
│ ├── 缓存穿透/击穿/雪崩
└── 接入模式:Cache Aside 为主流
题目编号 | 核心知识点 | 实用建议与示例 |
---|---|---|
题目 1 | 事件代理与冒泡机制 | 统一监听,提高性能,适用于动态元素 |
题目 2 | React Context API 性能问题 | 使用 React.memo、Context 拆分优化渲染 |
题目 3 | 分布式缓存系统设计 | Redis + Cache Aside,处理一致性与可用性问题 |
这是我为准备前端开发面试规划的第十天每日三题预告:
✨ 坚持学习,慢慢积累,厚积薄发,终将迎来你的高光时刻!