在线评测系统

在线评测系统（英语：Online Judge，缩写OJ）是一种在编程竞赛中用来测试参赛程序的在线系统，也可以用于平时练习。近年来（2016年或更早）亦出现一些针对求职面试的在线评测系统。许多OJ网站会自发组织一些竞赛。此外，OJ网站通常会设立用户排名，以用户的提交答案通过数多少或某个题目执行时间快慢为排名依据。

原理

算法竞赛通常采取黑盒测试，事先准备好一些测试数据，然后用它们来测试选手的程序。
在在线评测系统中，用户需要提交源代码至服务器，服务器会编译用户的源代码，然后执行源代码生成的可执行文件（或用解释方式执行，或直接执行脚本文件），得到其输出的结果，并与正确结果比较。
为防止攻击和恶意提交，服务器必须采取一定的安全措施，例如对用户提交的源代码实施过滤、将进程放入沙盒以进行隔离、对代码进行哈希以防止抄袭和重复提交等。

Virtual Judge

Virtual Judge是一种特殊的在线评测系统。与其他在线评测系统不同的是，Virtual Judge系统本身并没有任何测试数据，而是通过在其他在线评测系统中注册的机器人账号进行测试并抓取测试结果。因此可以在只有题目而没有测试数据的前提下创建竞赛。

题目状态

在提交程序之后，在线评测系统会根据题目的测评情况，返回评测结果。只有返回“Accepted”状态，才表示题目通过，选手才会获得成绩。不同OJ评测结果略有出入，但常见的评测结果大致分为以下三类。

实例

最早的在线评测系统是由西班牙Valladolid大学的Ciriaco García de Celis于1995年开发的，当时用于该校参加ACM/ICPC西南欧区域赛选拔队员。
现在较为著名的在线评测系统有洛谷，西班牙的UVaOJ、俄罗斯的SGU、Timus、Codeforces、波兰的SPOJ、美国的TopCoder、中国的POJ（北京大学）、ZOJ（浙江大学）、HDOJ（杭州电子科技大学）。
不同群体中不同OJ使用的频率也不同，学生中常会因为教师的要求使用公开/校内OJ，为此，许多公开OJ也提供了个性化服务，如Vijos中的“域”服务，OpenJudge、洛谷、Vjudge中的团队服务。
在特定群体中亦有一些流行的在线评测系统，例如中国初中选手中流行的Vijos、进阶选手使用的BZOJ（现称“耒阳大视野”）、hihocoder、美国求职者中流行的LeetCode等。