第一期 - 项目介绍
2024年11月13日约 688 字大约 2 分钟
第一期 - 项目介绍
面试吧笔记第一期 - 项目介绍
1. 项目介绍
面试吧是一款基于 Next.js 服务端渲染 + Spring Boot + Redis + MySQL + ElasticSearch 的面试刷题平台,运用 Druid + HotKey + Sa-Token + Sentinel 提高了系统的性能和安全性。
管理员可以创建题库、题目和题解,并批量关联题目到题库;用户可以注册登录、分词检索题目、在线刷题并查看刷题记录日历等。
项目中涉及到大量企业项目开发新技术,比如使用数据库连接池、热 Key 探测、缓存、高级数据结构来提升性能;通过流量控制、熔断、动态 IP 黑白名单过滤、同端登录冲突检测、分级反爬虫策略来提升系统和内容的安全性。
2. 核心业务流程
如下图所示:
3. 项目功能
3.1 基础功能
用户模块
- 用户注册
- 用户登录(账号密码)
- 【管理员】管理用户 - 增删改查
题库模块
- 查看题库列表
- 查看题库详情(展示题库下的题目)
- 【管理员】管理题库-增删改查
题目模块
- 题目搜索
- 查看题目详情(进入刷题页面)
- 【管理员】管理题目 - 增删改查(按照题库查询题目、修改题目所属题库等)
3.2 高级功能
题目批量管理
- 【管理员】批量向题库添加题目
- 【管理员】批量从题库移除题目
- 【管理员】批量删除题目
分词题目搜索
用户刷题记录日历图
自动缓存热门题目
网站流量控制和熔断
动态 IP 黑白名单过滤
同端登录冲突检测
分级题目反爬虫策略
4. 技术选型
4.1 前端
- React 18 框架
- Next.js 服务端渲染
- Redux 状态管理
- Ant Design 组件库
- 富文本编辑器组件
- 前端工程化:ESLint + Prettier + TypeScript
- OpenAPI 前端代码生成
4.2 后端
- Java Spring Boot 框架 + Maven 多模块构建
- MySQL 数据库 + MyBatis-Plus 框架 + MyBatis X
- Redis 分布式缓存 + Caffeine 本地缓存
- Redission 分布式锁 + BitMap + BloomFilter
- Elasticsearch 搜索引擎
- Druid 数据库连接池 + 并发编程
- Sa-Token 权限控制
- HotKey 热点探测
- Sentinel 流量控制
- Nacos 配置中心
- 多角度项目优化:性能、安全性、可用性
6. 架构设计
7. 环境准备
后端 JDK 版本需要使用 8、11 或 17,不能超过 17!
推荐使用 11 版本,因为 Caffeine 缓存要求使用 11 版本。
前端 Node.js 版本 18.18。