# 面试小程序 **Repository Path**: springmeng/interview-mini-program ## Basic Information - **Project Name**: 面试小程序 - **Description**: 这是一款基于微信小程序的面试刷题平台,专为程序员面试准备设计。项目包含完整的后端管理系统、微信小程序客户端和Web管理后台,提供面试题库、在线刷题、VIP会员、学习路径、项目实践等多种功能。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://www.shenxunsoft.com/ - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2025-12-26 - **Last Updated**: 2025-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, Vue, 微信小程序 ## README # 面试刷题小程序 项目所有用的话,右上角请给一个 Star ⭐非常感谢 ## 项目简介 这是一款基于微信小程序的面试刷题平台,专为程序员面试准备设计。项目包含完整的后端管理系统、微信小程序客户端和Web管理后台,提供面试题库、在线刷题、VIP会员、学习路径、项目实践等多种功能。 项目非常牛叉,想开发考试、刷题、面试小程序的都可以用本项目参考下。 ### 主要特点 - 💡 **完整的题库系统**:支持多种编程语言的面试题库管理 - 📝 **智能刷题模式**:顺序刷题、随机刷题、挑战模式 - 🎓 **学习路径规划**:系统化的学习路径和模块化文章 - 💼 **项目实践**:真实项目案例练习 - 👥 **用户成长体系**:积分、等级、挑战排行榜 - 💎 **VIP会员系统**:支持会员功能和优惠券 - 💰 **微信支付集成**:完整的支付流程和订单管理 - 📊 **数据统计分析**:学习进度、答题记录、成绩统计 ## 体验小程序 扫描下方二维码,立即体验小程序:
小程序体验码

微信扫一扫,体验面试刷题小程序

## 项目架构 ### 系统架构 ``` ├── 后端服务 (Spring Boot + MyBatis) │ ├── 用户认证与授权 (Shiro) │ ├── 题库管理 │ ├── 支付服务 (微信支付V3) │ └── 数据统计 │ ├── 小程序端 (原生微信小程序) │ ├── 首页导航 │ ├── 题库浏览 │ ├── 在线刷题 │ ├── 个人中心 │ └── VIP购买 │ └── Web管理后台 (Thymeleaf) ├── 题库管理 ├── 用户管理 ├── 内容管理 └── 订单管理 ``` ## 技术栈 ### 后端技术 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 2.5.12 | 基础框架 | | RuoYi | 4.7.6 | 后台管理框架 | | MyBatis | - | ORM框架 | | Shiro | - | 权限认证 | | MySQL | - | 数据库 | | Druid | - | 数据库连接池 | | PageHelper | - | 分页插件 | | Hutool | 5.7.x | Java工具类库 | | HttpClient | 4.5.13 | HTTP客户端 | | Thymeleaf | - | 模板引擎 | ### 前端技术 | 技术 | 说明 | |------|------| | 微信小程序原生框架 | 小程序客户端 | | crypto-js | 加密库 | | Editor.md | Markdown编辑器 | | CodeMirror | 代码编辑器 | | jQuery | JavaScript库 | ### 开发环境 - JDK 1.8+ - Maven 3.x - MySQL 5.7+ - 微信开发者工具 ## 核心功能 ### 1. 题库管理系统 - 题目分类管理(按技术栈、难度分类) - 题目CRUD操作 - 题目详情(包含代码高亮) - 题目收藏 - 题目纠正反馈 - 浏览历史记录 ### 2. 刷题功能 - 顺序刷题 - 随机刷题 - 分类刷题 - 挑战模式 - 试卷模式 - 答题记录 ### 3. 学习系统 - 编程语言选择 - 学习路径规划 - 模块化文章 - 项目实践案例 - 进度追踪 ### 4. 用户系统 - 微信授权登录 - 用户资料管理 - 积分等级系统 - VIP会员管理 - 优惠券系统 - 用户反馈 ### 5. 内容管理 - 轮播图管理 - 公告通知 - 文章管理 - 公司信息 - 导航配置 ### 6. 支付系统 - 微信支付接入(V3版本) - VIP购买 - 优惠券使用 - 订单管理 - 支付回调处理 ## 项目结构 ``` interview/ ├── src/ │ ├── main/ │ │ ├── java/com/example/demo/ │ │ │ ├── controller/ # 控制器层 │ │ │ │ ├── BBannerController.java # 轮播图 │ │ │ │ ├── InterviewQuestionController.java # 题库管理 │ │ │ │ ├── InterviewQuestionApiController.java # 题库API │ │ │ │ ├── WxPayController.java # 微信支付 │ │ │ │ ├── WxuserController.java # 微信用户 │ │ │ │ └── ... # 其他控制器 │ │ │ ├── domain/ # 实体类 │ │ │ │ ├── BBanner.java # 轮播图实体 │ │ │ │ ├── InterviewQuestion.java # 面试题实体 │ │ │ │ ├── UserVip.java # VIP实体 │ │ │ │ └── ... # 其他实体 │ │ │ ├── mapper/ # 数据访问层 │ │ │ ├── service/ # 业务逻辑层 │ │ │ │ ├── Impl/ # 实现类 │ │ │ │ └── I*.java # 接口 │ │ │ └── utils/ # 工具类 │ │ │ ├── WeChatPayUtil.java # 微信支付工具 │ │ │ ├── HttpUtil.java # HTTP工具 │ │ │ └── JSONUtil.java # JSON工具 │ │ └── resources/ │ │ ├── application.yml # 主配置文件 │ │ ├── application-druid.yml # 数据源配置 │ │ ├── mapper/demo/ # MyBatis映射文件 │ │ ├── static/ # 静态资源 │ │ │ └── kf-pan-deng-micro/ # 小程序源码 │ │ │ ├── pages/ # 小程序页面 │ │ │ ├── utils/ # 工具类 │ │ │ ├── images/ # 图片资源 │ │ │ ├── app.js # 小程序主文件 │ │ │ ├── app.json # 小程序配置 │ │ │ └── ... │ │ └── templates/ # Web模板 │ └── test/ # 测试代码 ├── pom.xml # Maven配置 └── README.md # 项目说明 ``` ## 数据库设计 ### 核心业务表 | 表名 | 说明 | |------|------| | b_interview_question | 面试题库表(核心表) | | b_type_interview_question | 题目分类表 | | b_timus | 题目信息表 | | b_timu_option | 题目选项表 | | b_shijuan | 试卷表 | | b_shijuan_timu | 试卷题目关联表 | | b_favorite | 收藏表 | | b_corrective | 题目纠正表 | | b_user_feedback | 用户反馈表 | ### 用户相关表 | 表名 | 说明 | |------|------| | wxuser | 微信用户表 | | user_vip | VIP用户表 | | user_ad_vip | 广告VIP表 | | user_upgrade | 用户升级记录 | | user_interview_challenged | 用户挑战记录 | | b_user_coupon | 用户优惠券表 | ### 内容管理表 | 表名 | 说明 | |------|------| | b_banner | 轮播图表 | | b_notice | 公告表 | | b_module_article_info | 模块文章表 | | b_language_info | 编程语言表 | | b_study_path | 学习路径表 | | b_project_practice | 项目实践表 | | b_company_info | 公司信息表 | | b_tabbar_link_config | 导航配置表 | ### 商业功能表 | 表名 | 说明 | |------|------| | b_coupon | 优惠券表 | | vip_price_config | VIP价格配置表 | ## 快速开始 ### 1. 环境准备 确保已安装以下环境: - JDK 1.8 或更高版本 - Maven 3.x - MySQL 5.7 或更高版本 - 微信开发者工具(用于小程序开发) ### 2. 数据库配置 1. 创建数据库: ```sql CREATE DATABASE shuati DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 导入数据库脚本: ```bash # 导入SQL文件(项目中应包含数据库初始化脚本) mysql -u root -p shuati < database.sql ``` 3. 修改数据库配置文件: 编辑 `src/main/resources/application-druid.yml`: ```yaml spring: datasource: druid: master: url: jdbc:mysql://127.0.0.1:3306/shuati?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: 你的数据库用户名 password: 你的数据库密码 ``` ### 3. 配置文件修改 编辑 `src/main/resources/application.yml`: ```yaml # 文件上传路径配置 ruoyi: profile: D:/ruoyi/uploadPath # Windows # profile: /www/wwwroot/interview/uploads # Linux # 服务器端口 server: port: 8090 # 微信支付配置(需要申请微信支付商户号) weixinpay: mch_id: 你的商户号 mch_serial_no: 你的证书序列号 private_key_path: 证书路径/apiclient_key.pem private_cert_path: 证书路径/apiclient_cert.pem api_v3_key: 你的APIv3密钥 micro_app_id: 你的小程序AppID micro_app_secret: 你的小程序Secret domain: https://你的域名.com ``` ### 4. 后端启动 ```bash # 进入项目根目录 cd interview # Maven编译打包 mvn clean install # 启动项目 mvn spring-boot:run # 或者运行jar包 java -jar target/demo-0.0.1-SNAPSHOT.jar ``` 启动成功后访问:http://localhost:8090 ### 5. 小程序配置 1. 打开微信开发者工具 2. 导入小程序项目: - 项目路径:`src/main/resources/static/kf-pan-deng-micro/` - AppID:填入你的小程序AppID 3. 修改小程序配置: 编辑 `utils/uri.js` 配置后端API地址: ```javascript const baseUrl = 'http://localhost:8090'; // 开发环境 // const baseUrl = 'https://你的域名.com'; // 生产环境 ``` 4. 编译并运行小程序 ### 6. Web管理后台 访问:http://localhost:8090/login 默认管理员账号(若使用RuoYi框架默认账号): - 用户名:admin - 密码:admin123 ## 功能截图 ### 小程序端
首页
首页
展示刷题挑战入口
大厂信息
大厂信息
大厂面试信息
面试题页面
面试题
题目浏览列表
刷题挑战
刷题挑战
选择题目数量和难度
做题页面
做题页面
在线答题
成绩页面
成绩页面
查看答题结果
免费项目
免费项目
免费学习资源
VIP项目
VIP项目
VIP学习资源
开通VIP
开通VIP
VIP会员升级
我的页面
我的页面
个人信息管理
### 管理后台 - **题库管理**:题目增删改查、批量导入 - **用户管理**:用户列表管理 - **内容管理**:轮播图、公告管理 - **试卷管理**:刷题挑战试卷管理 - **配置管理**:TabBar链接配置 ### 小程序端 - **首页**:展示轮播图、快速入口、推荐题目 - **题库**:按语言、分类浏览题目 - **刷题**:题目详情、代码展示、答案解析 - **练习**:项目实践、学习路径 - **个人中心**:个人信息、VIP、成绩、收藏 ### 管理后台 - **题库管理**:题目增删改查、批量导入 - **用户管理**:用户列表、VIP管理 - **内容管理**:轮播图、公告、文章 - **订单管理**:支付订单、优惠券 - **数据统计**:用户统计、答题统计 ## 小程序页面说明 | 页面路径 | 说明 | |---------|------| | pages/index/index | 首页 | | pages/splash/splash | 启动页 | | pages/guide/guide | 引导页 | | pages/languageInfo/languageInfo | 编程语言选择 | | pages/typeInterviewQuestion/typeInterviewQuestion | 题目分类 | | pages/interviewQuestion/interviewQuestion | 题目列表 | | pages/interviewQuestionDetail/interviewQuestionDetail | 题目详情 | | pages/interviewQuestionSearch/interviewQuestionSearch | 搜索题目 | | pages/interviewQuestionFavorite/interviewQuestionFavorite | 我的收藏 | | pages/interviewQuestionCorrect/interviewQuestionCorrect | 题目纠正 | | pages/studyPath/studyPath | 学习路径 | | pages/moduleArticle/moduleArticle | 模块文章 | | pages/prjectPracticeList/prjectPracticeList | 项目实践列表 | | pages/doExam/doExam | 在线考试 | | pages/challenge/challenge | 挑战模式 | | pages/sj/sj | 试卷列表 | | pages/sjTimu/sjTimu | 试卷题目 | | pages/my/my | 个人中心 | | pages/score/score | 我的成绩 | | pages/grade/grade | 等级系统 | | pages/coupon/coupon | 我的优惠券 | | pages/vipUpgrade/vipUpgrade | VIP升级 | | pages/feedback/feedback | 问题反馈 | | pages/myFeedback/myFeedback | 我的反馈 | | pages/freeProject/freeProject | 免费项目 | | pages/vipProject/vipProject | VIP项目 | ## API接口说明 ### 小程序API端点 所有小程序API端点都配置在Shiro白名单中,无需登录验证: ``` /interviewQuestion/** # 题库相关 /detailInterviewQuestion/** # 题目详情 /interviewQuestionFavorite/** # 收藏相关 /lookHistoryInterviewerQuestion/** # 浏览历史 /demo/wxuser/** # 微信用户 /demo/banner/miniapp/list # 轮播图 /demo/wxpay/** # 微信支付 /demo/** # 其他API ``` ### 主要API列表 #### 题库API - `GET /interviewQuestion/list` - 获取题目列表 - `GET /detailInterviewQuestion/{id}` - 获取题目详情 - `POST /interviewQuestionFavorite/add` - 添加收藏 - `DELETE /interviewQuestionFavorite/remove/{id}` - 取消收藏 - `GET /interviewQuestionFavorite/list` - 获取收藏列表 #### 用户API - `POST /demo/wxuser/login` - 微信登录 - `GET /demo/wxuser/info` - 获取用户信息 - `POST /demo/wxuser/update` - 更新用户信息 #### 支付API - `POST /demo/wxpay/native` - 创建支付订单 - `POST /demo/wxpay/notify` - 支付回调 ## 配置说明 ### 重要配置项 #### 1. 文件上传路径 ```yaml ruoyi: profile: D:/ruoyi/uploadPath # 根据实际情况修改 ``` #### 2. 微信小程序配置 ```yaml weixinpay: micro_app_id: wxef3b89b54c1606ec # 替换为你的小程序AppID micro_app_secret: 你的小程序Secret # 替换为你的Secret ``` #### 3. 微信支付配置 ```yaml weixinpay: mch_id: 1641997373 # 替换为你的商户号 mch_serial_no: 你的证书序列号 # 商户API证书序列号 private_key_path: 证书路径 # 商户私钥文件路径 private_cert_path: 证书路径 # 商户证书文件路径 api_v3_key: 你的APIv3密钥 # APIv3密钥 domain: https://你的域名.com # 支付回调域名 ``` #### 4. 数据库配置 ```yaml spring: datasource: druid: master: url: jdbc:mysql://127.0.0.1:3306/shuati username: shuati password: 你的密码 ``` #### 5. Session配置 ```yaml shiro: session: expireTime: 30 # Session超时时间(分钟) maxSession: -1 # 最大会话数,-1不限制 ``` ## 安全配置 ### 1. Shiro安全框架 - 登录地址:`/login` - 首页地址:`/index` - 验证码开关:可配置开启/关闭 - Session超时:30分钟 ### 2. XSS防护 ```yaml xss: enabled: true excludes: /system/notice/* urlPatterns: /system/*,/monitor/*,/tool/* ``` ### 3. 密码策略 - 密码错误5次锁定10分钟 - 支持Remember Me功能(可配置) ## 部署说明 ### 1. 开发环境部署 直接使用IDE(如IntelliJ IDEA)运行 `DemoApplication.java` 启动类。 ### 2. 生产环境部署 #### 方式一:jar包部署 ```bash # 打包 mvn clean package -DskipTests # 运行 nohup java -jar target/demo-0.0.1-SNAPSHOT.jar > logs/app.log 2>&1 & ``` #### 方式二:Docker部署(需自行配置) ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp COPY target/demo-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` ### 3. Nginx反向代理配置 ```nginx server { listen 80; server_name 你的域名.com; location / { proxy_pass http://localhost:8090; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` ### 4. 小程序发布 1. 在微信开发者工具中点击"上传" 2. 填写版本号和项目备注 3. 登录微信公众平台提交审核 4. 审核通过后发布上线 ## 常见问题 ### 1. 数据库连接失败 - 检查数据库是否启动 - 检查配置文件中的数据库连接信息 - 确认数据库名称、用户名、密码是否正确 ### 2. 文件上传失败 - 检查文件上传路径是否存在 - 检查路径权限 - 查看配置文件中的 `ruoyi.profile` 配置 ### 3. 小程序无法连接后端 - 检查小程序 `utils/uri.js` 中的API地址配置 - 确认后端服务已启动 - 检查服务器防火墙设置 - 小程序正式环境需要配置合法域名(https) ### 4. 微信支付失败 - 确认已申请微信支付商户号 - 检查证书文件路径是否正确 - 验证APIv3密钥是否正确 - 查看支付回调域名是否配置正确 ### 5. 登录Session丢失 - 检查Shiro Session配置 - 确认Session超时时间设置 - 查看是否启用了多实例(需要配置Session共享) ## 项目特色 ### 1. 基于成熟框架 采用RuoYi后台管理框架,快速搭建后台管理系统,代码结构清晰,易于维护和扩展。 ### 2. 完整的业务闭环 从题库管理、用户学习、VIP购买、支付结算,形成完整的商业闭环。 ### 3. 丰富的功能模块 - 题库系统支持多种刷题模式 - 学习路径系统化引导 - 用户成长体系增强粘性 - VIP和优惠券提供商业变现 ### 4. 良好的扩展性 - 模块化设计,便于功能扩展 - 统一的API接口规范 - 完善的代码注释 - 支持代码生成功能 ## 技术亮点 ### 1. 微信支付V3版本集成 完整实现微信支付V3版本的Native支付和JSAPI支付流程,包括: - 签名验证 - 证书管理 - 回调处理 - 订单查询 ### 2. Markdown编辑器集成 集成Editor.md编辑器,支持: - 实时预览 - 代码高亮 - 多种主题 - 图片上传 ### 3. 权限管理系统 基于Shiro的权限管理: - 细粒度权限控制 - 角色权限分配 - 菜单权限动态加载 - 按钮级权限控制 ### 4. 小程序端优化 - 页面懒加载 - 图片压缩处理 - 请求防抖 - 数据缓存 ## 后续规划 - [ ] 增加在线考试计时功能 - [ ] 添加题目难度评级 - [ ] 实现用户积分商城 - [ ] 支持题目评论和讨论 - [ ] 增加AI智能推题 - [ ] 开发APP版本 - [ ] 添加社区功能 - [ ] 支持企业版定制 ## 开源协议 本项目采用 MIT 开源协议。 ## 免责声明 - 本项目仅供学习交流使用 - 使用本项目前请自行申请微信小程序AppID和支付商户号 - 请遵守微信小程序平台规则 - 商业使用请确保合规性 ## 技术支持 如有问题或建议,欢迎提Issue或Pull Request。 ## 鸣谢 - 感谢 [RuoYi](http://ruoyi.vip/) 提供的优秀后台管理框架 - 感谢所有开源项目的贡献者 - 感谢[深迅开发团队](https://shenxunsoft.com/) --- 项目所有用的话,右上角请给一个 Star ⭐非常感谢 **注意**: 1. 使用前请务必修改配置文件中的敏感信息(数据库密码、微信配置等) 2. 生产环境部署请使用HTTPS协议 3. 定期备份数据库数据 4. 关注微信官方政策变化,及时更新相关功能 **祝你使用愉快!**