【前端面试必备】前端20道高频面试题及答案详解,含扫码登录、秒杀系统、虚拟滚动、断点续传
本文整理前端开发20 道高频面试题,包含中高难度常考点、实现思路、核心逻辑、标准答案,覆盖实际开发与大厂面试高频场景,适合前端求职者、初中级开发者复习使用。
所有题目均为真实面试高频题,答案简洁清晰,可直接背诵、直接用于项目开发。
1. 前端如何实现扫码登录功能?
难度:困难
- 后端生成唯一scene值,作为二维码唯一标识。
- 前端展示二维码,使用轮询或WebSocket监听扫码状态。
- 用户扫码后,后端更新状态,前端实时获取结果。
- 验证成功后返回token、用户信息,前端保存登录态。
- 安全机制:scene一次性有效、过期刷新、防重复提交。
2. 如何设计和优化秒杀系统的前端?
难度:困难
- 防重复提交:按钮置灰、防抖、请求锁。
- 减少请求次数、合并请求、接口超时控制。
- 页面预加载、数据预加载、资源缓存提升性能。
- 高并发处理:请求排队、失败重试、限流降级。
- 安全策略:接口签名、身份校验、防刷、防篡改。
3. 无限滚动如何自动回收上方内容?
难度:困难
- 使用虚拟列表,只渲染可视区域DOM。
- 滚动时自动移除不可见区域DOM,节约内存。
- 数据保留,只销毁视图,滚动可恢复。
- 使用IntersectionObserver监听可视区域,性能最优。
- 适用于长列表、聊天记录、大数据流页面。
4. 前端大文件断点续传实现方案?
难度:困难
- 将大文件按固定大小切片。
- 每个分片携带hash、索引、总分片数、文件唯一标识。
- 前端计算文件hash,查询已上传分片,实现秒传。
- 失败自动重试,支持暂停、继续。
- 全部上传完成通知后端合并文件。
- 安全:文件hash校验、完整性校验、权限校验。
5. 前端请求耗时统计工具设计?
难度:困难
- 统一拦截fetch、axios、XMLHttpRequest。
- 记录开始时间、结束时间、耗时、URL、状态。
- 统计首屏时间、接口耗时、资源加载性能。
- 采用批量上报、防抖上报、采样上报。
- 输出慢接口、性能排行、异常监控。
6. WebAssembly前端应用实现?
难度:困难
- 使用C/C++编写计算逻辑,编译为wasm。
- JS通过WebAssembly.instantiate加载。
- JS与wasm互相调用函数、共享内存。
- 优势:计算快、不阻塞主线程、安全高效。
- 适用于加密、解码、图形渲染、大量计算。
7. 图片裁剪、旋转、缩放功能实现?
难度:困难
- 使用canvas绘制图片。
- 裁剪:绘制选区、拖拽定位。
- 旋转:使用ctx.rotate实现。
- 缩放:通过drawImage重绘调整尺寸。
- 支持预览、导出、下载、上传。
8. 前端角色权限系统设计?
难度:困难
- 角色:超级管理员、管理员、普通用户、游客。
- 权限:菜单权限、按钮权限、接口权限、数据权限。
- 实现:路由守卫、自定义指令、全局权限状态。
- 权限实时生效,刷新页面保持状态。
9. Markdown编辑器实时预览?
难度:困难
- 左侧编辑区、右侧预览区。
- 使用marked库将markdown转为HTML。
- 集成highlight.js实现代码高亮。
- 支持分屏、全屏、同步滚动。
10. SPA首屏加载慢优化方案?
难度:中等
- 路由懒加载、代码分割、按需加载。
- 资源压缩、图片优化、CDN加速。
- SSR服务端渲染、SSG静态生成、预渲染。
- 浏览器缓存:强缓存、协商缓存。
- 骨架屏、loading提升体验。
11. 图片拖拽缩放预览组件?
难度:困难
- 监听鼠标/触摸事件实现拖拽。
- 滚轮/手势实现缩放。
- 使用transform不触发重排。
- 边界限制、双击还原、手势优化。
12. 单点登录SSO前端实现?
难度:中等
- 一处登录,多系统自动登录。
- 统一鉴权中心,共享token或ticket。
- 流程:跳转鉴权中心 → 验证 → 带回token → 自动登录。
13. WebSocket实时聊天功能?
难度:困难
- 建立长连接,监听open、message、error、close。
- 消息包含用户、内容、时间、状态。
- 支持在线状态、已读未读、输入状态。
- 心跳重连、消息补发、持久化、通知提醒。
14. 前端日志埋点SDK设计?
难度:中等
- 提供log、error、event、performance API。
- 自动埋点:页面、点击、请求、错误、性能。
- 批量、防抖、节流、采样上报。
- 携带设备信息、用户ID、环境信息。
- 轻量、无侵入、可扩展。
15. 前端页面水印+防删除?
难度:中等
- canvas生成水印,全屏覆盖。
- MutationObserver监听DOM修改。
- 水印被删除/隐藏时自动重新绘制。
- 多层水印、最高层级、不可点击。
16. 移动端下拉刷新、上拉加载?
难度:中等
- 监听touch事件判断滑动距离。
- 下拉刷新:重新请求数据、展示最新内容。
- 上拉加载:加载下一页、追加数据。
- 状态:刷新中、加载中、无更多数据。
17. 响应式三栏布局实现?
难度:中等
- PC端(>1200px):flex三栏布局。
- 平板端:双栏布局。
- 移动端(<768px):单栏垂直排列。
- 使用媒体查询@media实现适配。
18. Service Worker离线访问?
难度:中等
- 注册SW,监听install、activate、fetch。
- 缓存静态资源HTML、CSS、JS、图片。
- 拦截请求:无网使用缓存,有网使用网络。
- 支持PWA离线应用。
19. 通用表格组件(分页、排序、筛选)?
难度:中等
- 数据驱动:columns、data、pagination。
- 分页:页码、页大小、总数、跳转。
- 排序:正序、倒序、默认。
- 筛选:输入、下拉、多选、远程筛选。
20. JavaScript事件总线EventBus?
难度:中等
- 发布订阅模式。
- 核心方法:on、off、emit、once。
- 维护事件列表与回调队列。
- 用于跨组件、跨页面无耦合通信。
总结
本文涵盖前端面试高频难点20题,包括功能实现、性能优化、安全机制、架构设计,是前端求职、复习、提升必备资料。
需要完整代码实现可以关注我,后续持续更新前端面试、项目实战、源码解析。
