Katkat

Design executable notebook service APIs

GoogleSoftware Engineer · Technical Screen

Last updated

This question evaluates a candidate's competence in designing secure, scalable systems for executing user-supplied code, covering API design, sandboxing and isolation, dependency management, resource limits, scheduling, and streaming proxies for logs/results.

Design a collaborative, editable code notebook service with an execution service and a proxy that fetches execution results and returns them to the browser. Users may upload custom function JAR files with a fully qualified class and method name, then submit requests to run that function with arguments. Define RESTful endpoints and request and response schemas for uploading code, submitting executions, fetching logs and results, and cancelling. Discuss sandboxing, dependency management, resource limits, concurrency, and result streaming.