The code gets uploaded to the server which sends it to an "engine" sitting in a Docker container. The engine generates test cases and send them with the code to another Docker container where the code is run. Then the output from your code is sent back to the engine which checks to see how many test cases you got correct before sending all the information back to your browser.