项目问答(自用记录)

在搭建 OJ 平台时,你选用了哪种编程语言和框架?为什么选择它们,它们在处理在线评测任务时有哪些优势?

Vue3+FastAPI是前端,python3是后端。FastAPI高效灵活,是用于构建API的高效的python web框架。vue3高效响应,处理大数据更优秀,相对于vue2来说选项式API,组合式API将函数封装在一起,方便代码的复用性和维护性。python简单高效有丰富的第三方库。

处理在线测评任务时python的subprocess模块可以方便的处理和管理子进程,用于运行用户提交的代码。

在 Vue3 和 FastAPI 的选型上,你主要考虑了它们的哪些特性来适配在线判题系统的需求?

vue3响应式系统优化可以更快速刷新界面,使得数据驱动速度更高效。组合式API使代码逻辑清晰,复用性高。vue3生态系统丰富,有更多好用的组件,加快开发速度。

fastapi基于python,语法简洁高效,开发率高。利用异步编程(await)可以更好地处理并发判题。fastapi有自动生成api文档的功能便于前后端交互和后期系统维护和扩展。

在线判题系统中,判题逻辑是核心部分。请详细阐述你是如何在 FastAPI 后端实现判题逻辑的,包括对不同编程语言代码的编译、运行和结果比对的处理方式。

对不同语言的处理方式不同,python用内置函数执行代码。通过捕获标准输出和标准错误来获取运算结果。对于c/c++,调用系统编译器(gcc)对代码编译生成可执行文件,然后运行可执行问价获得输出。判题,则用预先准备好的测试用例进行比对,同时设置运行时间限制防止恶意代码导致系统资源耗尽。

为了保证系统的稳定性和性能,在设计和实现过程中,你采取了哪些优化措施?比如在前端 Vue3 部分的渲染优化,或者后端 FastAPI 应对高并发判题请求的策略。

前端对图片资源压缩和懒加载处理,提升页面加载速度。

后端fastapi利用异步特性,使用uvicorn服务器处理高并发请求。

在 Vue3 前端与 FastAPI 后端进行交互时,你是如何设计数据传输格式和接口规范的?有没有遇到跨域问题,又是如何解决的?

数据传输格式是JSON,因为他简介易于解析,前后端都有很好的支持。

接口规范遵循RESTful API原则,比如使用不同的http方法(GET\POST\PUT\DELETE等)来对应不同的操作,如获取题目列表使用GET请求,提交代码使用POST请求。

考虑到用户在系统中提交代码可能存在恶意代码攻击的风险,你在系统设计中采取了哪些安全防护措施?

进行验证码输入,检查是否包含危险的系统命令或者敏感操作。用Docker容器技术,将用户代码和其他系统部分隔离开来。

在线判题系统可能会涉及多种编程语言的支持,你在实现对不同编程语言的支持时,遇到的最大挑战是什么,又是如何克服的?

最大挑战是不同语言编译和运行环境差距较大,解决方法是了解个语言的编译运行原理,然后针对每种语言编写相应的代码解析和执行模块。同时,简历统一接口运行不同语言的运行结果。

请描述一下系统的用户管理模块是如何设计的,包括用户注册、登录、权限管理等功能的实现细节。

用户注册时,前端会收集用户基本信息,进行基本的格式验证。然后将这些信息通过post请求发送到后端FastAPI的注册接口。后端会对用户名和邮箱进行唯一性检查,若不重复则存储密码到数据库中(哈希加密)

登录时,用户输入用户名和密码,前端讲这些信息发送到后端的登录接口。后端从数据库中查询对应的用户信息,验证密码是否匹配。若匹配,则生成一个Token并返回给前端,前端将token存在本地,用于后续身份验证。权限管理则根据不同角色设置不同权限,后端每个接口都会检查token,然后通过token决定是否能访问。

相关推荐
WJ.Polar6 分钟前
Python数据容器-list和tuple
开发语言·python
qq_229644118 分钟前
LucidShape 2024.09 最新
python
花好月圆春祺夏安2 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
萧鼎3 小时前
深度探索 Py2neo:用 Python 玩转图数据库 Neo4j
数据库·python·neo4j
华子w9089258593 小时前
基于 Python Django 和 Spark 的电力能耗数据分析系统设计与实现7000字论文实现
python·spark·django
Rockson4 小时前
使用Ruby接入实时行情API教程
javascript·python
Tipriest_5 小时前
Python关键字梳理
python·关键字·keyword
im_AMBER6 小时前
学习日志05 python
python·学习
大虫小呓6 小时前
Python 处理 Excel 数据 pandas 和 openpyxl 哪家强?
python·pandas
哪 吒6 小时前
2025B卷 - 华为OD机试七日集训第5期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷