基于SpringBoot与DeepSeek大模型的智能OJ系统设计研究
张鹏
重庆航天职业技术学院 重庆 400021
1 引言
编程能力是计算机相关专业学生的一项必备的基本技能,近年来计算机相关专业工作的面试内容也越来越关注学生基本编程和算法的能力,所有的一线互联网公司如腾讯、网易、京东等在进行校园招聘时,算法题目编程已成为一项基本的准入门槛。对大部分同学而言,程序设计类课程具有入门难,两极分化严重、实践性强等特点,各大高校在计算机专业人才培养时,仍以教师讲授演习为主,学生实操练习为辅。由于每堂课程时间有限,在这种模式下,一方面容易造成填鸭式教学,学生更多在被动学习而缺乏实践操作实践;另一方面学生在课后练习时,也会缺乏教师指导,陷入迷茫并逐渐产生厌恶。如何满足新时期的教育发展需求,提高学生动手实践能力,培养具有更高水平的程序设计类专业人才,是高校教师亟待解决的问题。
在线测评系统(Online Judge, OJ)起源于 ACM 国际大学生程序 设 计 竞 赛(ACM International Collegiate Programming Contest, ACMICPM)[1]。各大高校纷纷开发了属于自己的在线评测系统,其中国内比较著名的系统包括:北京大学的 POJ,浙江大学的 ZOJ 和华中科技大学的 HustOJ 等,这些系统在程序竞赛领域均有较高的知名度。近年来各大公司也使用一些针对求职面试的在线测评系统。这些测评系统不仅广泛应用于教学、竞赛培训和求职面试中,还对外开放注册,为其他程序爱好者提供题库和代码测评服务。
自 2022 年底 ChatGPT 引爆全球之后,大模型技术便迎来快速的发展时期 [2]。在教育领域,大语言模型的应用为教学方式与方法的革新提供了强力支持,特别是针对计算机领域,如果可以与 OJ 系统相结合,针对学生所提交内容给出针对性建议和意见,不仅能够帮助学生更好地理解编程逻辑、算法原理等核心概念,还能通过智能辅导、自动评估等手段,有效提升教学质量。
2 教学实施目标与系统架构设计
2.1 实施目标
(1)专业能力提升,评价过程优化
人工智能支持下的智慧学习,实现智能技术与学习内容充分耦合、学习服务与学习路径深度融合,已成为智慧学习的理想状态[3]。通过OJ 系统,采用线上线下教学融合的方式,总体实施目标是通过 OJ 系统自动判题并将结果接入大语言模型(Large Language Model,LLM),通过 LLM 对学生所提交的代码内容和正确率进行评估,从而实现对学生薄弱环境针对性的指导;通过增加 OJ 系统的线上变成训练和机考,将单纯“重笔试”的结果性评价,转变为“重能力”的过程性评价 [4]。
(2)健全练习机制,培养独立思考
LLM 在运用过程中,确实会提供非常便利和友好的内容提示,但可能因此让学生产生依赖的风险,过分依赖 LLM 分析内容从而放弃独立思考 [5]。针对 LLM 在使用过程中可能产生的依赖风险,在实际使用过程中,一是应针对学习内容和学习任务,制定针对性的练习题目,并且对 LLM 的返回内容进行限制,即只针对学生所提交内容进行针对性分析,而不加以修改或提示,也不提供正确参考案例,以培养学生独立思考的习惯;二是引导学生认识到 LLM 的本质为“内容生成”而非“解决问题”,即对 LLM 而言,只需要根据问题生成“回答内容”而非回答“正确内容”,需要在使用过程中自行辨别回答的准确性。
2.2 系统架构设计
本系统采用分层解耦架构,核心目标为支撑高并发判题与实时AI 分析。系统整体采用B/S 架构模式,分为前端页面、后端服务、判题引擎和AI 集成四大部分。具体技术选型见表1。
表1 技术选型

前端页面技术选型为 Vue+Ace 编辑器。Ace 编辑器可以支持 30多种类语法高亮,实时错误提示和代码折叠,很大程度提升编码体验。此外,通过 Echarts 对每个用户的学习行为进行分析,如错误类型分布饼图、能力成长折线图等。
后端服务采用比较流行的 SpringBoot,SpringBoot 的自动配置与内嵌Tomcat/Jetty 容器,显著减少部署复杂度,适合教学场景的快速迭代。SpringBoot 的 starter 机制可以简化服务开发与集成,响应式编程模型支持万级判题请求[6]。数据存储于MySQL 中,Redis 提供缓存功能。
判题引擎使用 Kafka 作为消息队列,异步解耦判题请求,避免并发提交导致的服务器阻塞;Docker 为每份提交代码创建独立沙箱环境,通过资源限制(CPU/ 内存)防止恶意代码破坏宿主机。
AI 集 成 使 用 SpringAI 流 式 调 用 本 地 DeepSeek 模 型 接 口,DeepSeek-R1 替代 OpenAI 接口,通过 Ollama 实现本地化部署,避免公网 API 依赖与数据泄露风险,符合教育系统安全规范。通过DeepSeek 解析学生代码的算法逻辑和代码风格,对学习行为进行跟踪,形成针对性的练习资源于建议。
2.3 系统模块设计
系统采用四层解耦架构,各层职责与交互逻辑如表2 所示
表2 系统架构

业务逻辑层集成 Spring Cloud Gateway,根据题目 ID 哈希路由判题请求,确保同一题目提交顺序处理,避免并发判题冲突。考虑到所提交内容的特殊性,在网关部分还需对代码进行静态扫描,使用正则表达式拦截危险系统调用。
判题服务层的沙盒调度策略采用即使创建方式,针对每次提交均独立创建一个新的 Docker 容器,实现资源的彻底隔离。根据所提交的代码语言采用不同的判题模式,如 Java 代码在计算耗时时,应当扣除 JVM 启动时间,即总耗时 σ=σ 用户代码耗时 +200ms 的 JVM 预热。Python 代码考虑到Python 解释器的内存占用,应当适当放宽内存限制。
3 智能诊断驱动的教学模型设计
构建精准的学习者模型,是智能化教育服务的关键。知识追踪模型主要基于马尔可夫过程、逻辑回归和深度学习三种不同的方法进行构建,每一类模型的优缺点、性能和适用范围均不相同 [7]。本研究中通过不同维度的数据采集生成用户画像,实现学生认知状态建模,并生成个性化学习路线。
3.1 数据采集与用户画像
通过代码语义特征、错误模式聚类、结题行为序列三个维度的数据采集,形成用户画像。通过 DeepSeek 解析代码语义特征,分析抽象语法树,识别算法逻辑错误如循环边界错误、递归终止条件缺失等;根据用户提交记录中的错误情况进行聚类分析,发现错误类型和频率,统计学生的共性弱点如数组越界、状态转移方程错误等,标注为知识弱点标签;最后根据学生题目的提交顺序,评估学生的问题解决策略。通过关系图驱动的认知诊断模型 [8](Relation Map Driven CognitiveDiagnosis, RCD)结合以上数据构建学生认知训练标签,形成用户画像。针对同一用户,每产生 5 次提交操作更新一次弱点标签。用户画像具体结构如表3 所示。

其中认知训练(cognitive_traits)根据 RCD 计算得出。弱点标签(weakness_chain)依据知识状态拓扑排序实现对知识状态的线性排列,从而得到按知识掌握的全面程度由低到高排列的线性序列[9]。学习风格(learning_style)根据调试次数与题目停留时长的比值判定,即比值相对越高,则为“实践型”,比值相对越低则为“理论型”。
3.2 认知状态建模
编程知识的内在逻辑具有强依赖性,例如指针操作是链表实现的前置基础,而递归优化又依赖于对栈内存的深入理解。为建模这种关系,首先需要将知识点之间的依赖关系形成有向无环图(DAG);其次设计二进制矩阵关联题目与知识点,其中 m 为题量,n为知识点数量,若题目 i 考察知识点 j,则;最后,以学生为节点,概念为边,动态更新“学生 - 概念交互图”,基于学生历史答题的正确率计算学生对概念的掌握概率,如学生连续两次正确完成指针操作题目,其权重可能从 0.6 提升至 0.8。
在完成上述知识依赖网络构建后,基于项目反应理论(ItemResponse Theory, IRT),将学生对知识点的掌握程度划分为三级,分别为 L1 基础理解,L2 应用迁移和 L3 创新解决,并通过三阶段流程实现诊断。
阶段一,知识状态初筛,当学生提交代码后,系统解析其错误类型,映射到依赖图中的叶子节点,即具体知识点。阶段二,深度依赖分析,若某知识点连续三次诊断未达标,则沿DAG 向上追溯其依赖链。阶段三,噪声过滤与置信校准 [10],为排除偶然失误,引入 BP 神经网络构建误差校正层。该网络输入包含三个维度,答题时间、代码复杂度和历史稳定性,其中,若答题时间低于平均时长 30% 则可能为猜测,低复杂度题目高错误率更可能为知识缺陷,而同一用户的提交准确率的波动大于 40% 则需人工复核。通过上述三个维度计算用户本次提交是否为认真答题,若认定为非认真答题,则标记本次结果无效并要求学生重新提交。
4 结论与展望
智能 OJ 系统的使用对教师教学提供了极大的帮助,同时也在潜移默化中改变了学生的学习方式,提高了学习效率。通过对本校校内同一年级同一课程的两个不同班级进行为期一学期的对照实验,对照组人数 43 人,使用无 AI 分析的传统 OJ 系统和统一的习题集,实验组人数 43 人,使用本文中的智能 OJ 系统和动态的学习路径推荐。最终实验组的期末平均成绩明显高于对照组,且系统中“困难”难度题目的通过率实验组也较高于对照组。此外,在校级与市级的编程能力比赛中,相较于本校其他参赛同学,使用了智能 OJ 系统的参赛同学获奖的概率更高。综上,智能 OJ 系统在针对学社的编程能力的提升方面确实有一定的作用。
除针对学生的编程能力提升以外,智能 OJ 系统也可以帮助教师评估教学效果,通过用户画像和知识依赖网络,教师可根据学生对知识点的掌握程度更好地调整教学方法和教学内容,适当的增减某些知识点的课时量。同时在课堂教学过程中,可以更有效地聚焦错误率大于 40% 的共性难点,实现对重点和难点的精准干预。
在系统后续的完善过程中,预计将加入论坛和评论的功能,为学生提供一个交流的平台,以期实现对知识点和题目的深入掌握和理解,学习他人的编程技巧和经验,提升自身编程实例,加强学生团队间的合作。
参考文献
[1] 张赫尧 , 史文静 , 施尔宁等 . 基于 Online Judge 与 ACM_ICPC模式的课程探究 [J]. 计算机光盘软件与应用 , 2014, 23: 212–214.
[2] 石晶. 大模型驱动下计算机教学的变革与突破[J]. 计算机教学,2025, 9: 217–219.
[3] 于娅囡 , 张兴科 . 人工智能背景下高职计算机课程智慧学习模型的构建与应用研究 [J]. 中文科技期刊数据库(引文版)教育科学 ,2024: 30–33.
[4] 秦汉林, 卢成浪, 邹会来. OJ 系统和在线课程混合驱动的程序设计课程教学新模式 [J]. 计算机教育 , 2023, 6: 189–193.
[5] 张书涵 , 孟小艳 , 王婷等 . 基于大语言模型的计算机教育:机遇、挑战与教学策略革新 [J]. 电脑知识与技术 , 2025, 21(12): 171–173.
[6] 钟耀章, 桂琼. ACM 竞赛在线测评系统设计与实现[J]. 无线互联科技 , 2020(18): 42–44.
[7] 卢宇 , 王德亮 , 章志等 . 智能导学系统中的知识追踪建模综述[J]. 现代教育技术 , 2021, 31(11): 87–95.
[8]Gao W, Liu Q, Huang Z 等 . RCD: Relation Map Driven Cognitive Diagnosis for Intelligent Education Systems[J]. SIGIR 2021 - Proceedings of the 44th International ACM SIGIR Conference on Research and Development in Information Retrieval, 2021: 501–510.
[9] 叶海智 , 苏明骜 , 黄宏涛等 . 认知诊断支持下的合作学习互补分组方法研究 [J]. 河南师范大学学报(自然科学版), 2019, 47(2): 1–15.
[10]Ma H, Song S, Qin C 等 . DGCD: An Adaptive Denoising GNN for Group-level Cognitive Diagnosis[J]. IJCAI International Joint Conference on Artificial Intelligence, 2024, 1: 2261–2269.
基金项目:市职业教育教学改革研究项目一般课题“基于智能导师系统开发的软件技术专业课程教学模式探究与应用”(项目编号:Z233136)