
1) 【一句话结论】核心模块技术选型为前端用React构建交互界面,后端用Spring Boot处理业务,数据库分MySQL(结构化数据)与MongoDB(非结构化作业),实时通信用WebSocket(互动)+WebRTC(音视频),关键性能指标需保障并发用户数≥1000,作业批改延迟≤5秒(异步处理)。
2) 【原理/概念讲解】
前端技术选型:采用React框架,其核心是组件化开发(将界面拆分为独立组件,复用性强)和虚拟DOM(减少真实DOM操作,提升渲染效率),适合构建直播控制、作业提交等复杂交互界面。
后端技术选型:选用Spring Boot,依托Spring生态(如Spring MVC、Spring Data)快速实现用户管理、课程调度、作业批改等业务逻辑,适合企业级高并发场景。
数据库技术选型:MySQL(关系型数据库)存储用户信息、课程表、作业记录等结构化数据,保障数据一致性与事务性;MongoDB(NoSQL文档型数据库)存储作业内容(如代码文件、文档),支持非结构化数据的高效写入。
实时通信技术:WebSocket保持长连接,实现低延迟的师生互动(如实时问答、弹幕);WebRTC支持音视频直播的P2P传输,减少服务器压力,提升音视频质量。
作业批改流程:通过异步消息队列(如RabbitMQ)接收作业提交请求,将批改任务放入队列,批改服务异步处理,减少用户等待时间。
3) 【对比与适用场景】
前端框架对比(以直播控制界面为例):
| 框架 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| React | Facebook开发的JS库 | 组件化、虚拟DOM、生态丰富(如Redux、Ant Design) | 大型复杂交互界面(如直播控制、作业提交、实时消息) | 需JS基础,学习曲线平缓,适合快速迭代 |
| Vue | 渐进式框架 | 易上手、模板语法灵活(如单文件组件) | 中小型项目或快速原型 | 生态较React稍弱,但性能接近,开发效率高 |
后端语言对比(以用户管理为例):
| 语言 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Java (Spring Boot) | 企业级开发框架 | 面向对象、生态成熟(Spring全家桶) | 高并发、复杂业务逻辑(如用户认证、权限控制) | 开发效率高,但启动慢,适合稳定系统 |
| Go | 轻量级语言 | 并发特性强(goroutine)、编译快 | 实时通信、高并发服务(如WebSocket服务器) | 生态相对年轻,库较少,适合性能敏感场景 |
4) 【示例】
用户提交作业的API请求(伪代码):
请求:
POST /api/assignments/submit
{
"assignmentId": "A123",
"userId": "U001",
"content": "用户提交的代码(如JavaScript文件)",
"file": "base64编码的文件内容(可选)"
}
响应:
{
"status": "success",
"message": "作业已提交,正在异步批改中",
"assignmentId": "A123",
"submissionId": "S123"
}
5) 【面试口播版答案】(约90秒)
“面试官您好,针对这个在线教学系统,核心模块技术选型如下:前端采用React框架,利用组件化和虚拟DOM提升界面交互效率,支持直播控制、作业提交等复杂操作;后端选用Spring Boot,借助Spring生态快速实现用户管理、课程调度等业务逻辑;数据库分两类,MySQL存储用户、课程等结构化数据,MongoDB存储作业内容等非结构化数据;实时通信方面,直播和互动用WebSocket保持长连接,实现低延迟的师生互动,音视频直播用WebRTC实现音视频传输。关键性能指标方面,并发用户数需支持至少1000人同时在线(根据教学场景),作业批改通过异步消息队列(如RabbitMQ)处理,延迟控制在5秒以内,确保学生能及时看到批改结果。这样既能保障系统的实时性和稳定性,又能满足教学需求。”
6) 【追问清单】
7) 【常见坑/雷区】