← Applied intuition Interview Insights

Applied intuition·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Apr 2026

Summary

Applied Intuition system design round focused entirely on building a replay simulator for autonomous vehicle evaluation. Pretty niche problem space but the depth they expected was real, covering everything from data modeling to API shape to storage architecture.

Questions Asked (4)

Q1

Design a simulator that can replay recorded driving scenarios (specifically left-turn intersections) for autonomous vehicle regression testing. Walk through the full system.

System DesignData ModelingTechnical Trade-offs
Author's notes

This was the whole interview, basically.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the goal: deterministic replay of recorded sensor data to test the AV stack's behavior in left-turn scenarios. Then outline a modular architecture covering data ingestion, scenario representation, simulation execution, and evaluation, emphasizing trade-offs between fidelity, scalability, and determinism.

Pro tip: Highlight the importance of deterministic replay and data versioning to ensure reproducible regression tests, and discuss how to handle sensor data synchronization and time alignment, which are common pitfalls in AV simulation.

1. Clarify Requirements and Scope

Ask about the types of recorded data (e.g., lidar, camera, radar, GPS/IMU), the desired fidelity (e.g., sensor-level vs. object-level), and the scale of testing (number of scenarios, frequency). Confirm that the focus is on left-turn intersections and regression testing.

2. Design Data Model and Storage

Propose a data model that captures the scenario: time-series sensor data, vehicle state, map information, and annotations. Discuss storage options (e.g., time-series databases, object storage) and the need for efficient querying and retrieval.

3. Architect the Simulation Engine

Outline the core components: a replay module that plays back sensor data, a scenario manager that controls the environment, and an interface to the AV software stack. Emphasize determinism, time synchronization, and the ability to inject variations (e.g., different initial conditions).

4. Define Evaluation Metrics and Regression Detection

Describe how to evaluate the AV's performance (e.g., safety, comfort, progress) and detect regressions by comparing against a baseline. Mention automated pass/fail criteria and the need for statistical significance.

5. Address Scalability and Trade-offs

Discuss scaling the simulator (parallelization, cloud resources) and trade-offs between realism and speed, data fidelity vs. storage cost, and determinism vs. flexibility. Mention potential optimizations like data compression and caching.

Key Points to Mention

  • Deterministic replay and time synchronization of multi-sensor data
  • Scenario representation and data model (e.g., using OpenSCENARIO or custom format)
  • Integration with the AV software stack (e.g., via ROS or custom APIs)
  • Evaluation metrics for left-turn scenarios (e.g., collision avoidance, turn efficiency)
  • Regression testing framework and baseline comparison
  • Scalability considerations: parallel simulation, cloud deployment, and data management

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

How would you design the data schema to represent a driving scenario, including sensor data, ego-vehicle state, surrounding agents, and map information?

Data ModelingSystem Design
Author's notes

Talked through a trip-level record with nested agent states keyed by timestamp.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and use cases for the driving scenario data, such as offline training, simulation, or real-time perception. Then propose a modular schema that separates static map data, dynamic agent data, ego-vehicle state, and sensor data, with clear relationships and timestamps. Emphasize scalability, efficiency, and compatibility with common formats like OpenDRIVE, Protobuf, or ROS messages.

Pro tip: Mention the importance of coordinate frames and transformations (e.g., ego-centric vs. global) and how you would handle time synchronization across sensors. Also, discuss trade-offs between normalized vs. denormalized schemas for query performance.

1. Clarify Requirements and Scope

Ask about the intended use (e.g., training ML models, real-time simulation, data analysis) and constraints (e.g., storage, latency, compatibility). This ensures the schema meets the actual needs.

2. Define Core Entities and Relationships

Identify the main entities: ego-vehicle, other agents, sensors, map elements, and time. Define how they relate (e.g., one ego-vehicle per scenario, multiple agents, sensors attached to ego).

3. Design Schema for Each Entity

For each entity, specify fields: ego-vehicle (pose, velocity, acceleration), agents (type, pose, velocity, history), sensors (type, data, calibration), map (lanes, roads, traffic signs). Use appropriate data types and consider serialization formats.

4. Address Time and Coordinate Frames

Incorporate timestamps for all dynamic data and define coordinate frames (global, ego-centric) with transformations. Ensure temporal alignment across sensors and agents.

5. Optimize for Performance and Scalability

Discuss indexing, partitioning, and storage formats (e.g., columnar for analytics, protobuf for streaming). Consider how the schema supports efficient queries and updates.

Key Points to Mention

  • Use of standard formats like OpenDRIVE for maps, Protobuf for serialization, and ROS messages for sensor data.
  • Importance of coordinate frames and transformations (e.g., ego-centric vs. global) for consistency.
  • Time synchronization and timestamping across all data streams.
  • Modular design to separate static map data from dynamic agent and sensor data.
  • Scalability considerations: partitioning by time or scenario, indexing on agent IDs or timestamps.
  • Trade-offs between normalized and denormalized schemas for query performance and storage efficiency.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

What API surface would you expose for this simulator? Think about searching scenarios, fetching a replay, scrubbing to a specific timestamp, and branching a replay with edits.

API & IntegrationsSystem Design
Author's notes

The branching part tripped me up.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the core resources and operations, then design a RESTful API with clear endpoints for searching, fetching, scrubbing, and branching. Emphasize idempotency, versioning, and performance considerations like pagination and caching.

Pro tip: Mention that scrubbing and branching should be stateless operations that return a new replay state or a diff, avoiding mutation of the original replay to support undo and collaboration.

1. Identify Resources and Operations

Define the main entities: scenarios, replays, and branches. List the required operations: search, fetch, scrub, and branch.

2. Design RESTful Endpoints

Map operations to HTTP methods and URLs, e.g., GET /scenarios?query=..., GET /replays/{id}, GET /replays/{id}/frames?timestamp=..., POST /replays/{id}/branches.

3. Define Request/Response Schemas

Specify query parameters, path parameters, and JSON payloads for each endpoint, including pagination, filtering, and error responses.

4. Address Non-Functional Requirements

Discuss versioning, authentication, rate limiting, caching, and idempotency for branching operations.

5. Consider Advanced Patterns

Mention WebSockets for real-time scrubbing, GraphQL for flexible queries, or gRPC for high-performance streaming.

Key Points to Mention

  • Use pagination and filtering for scenario search (e.g., limit, offset, tags).
  • Replay fetching should support range requests or partial content for large replays.
  • Scrubbing should be a GET request with a timestamp parameter, returning the state at that time.
  • Branching should be a POST that creates a new replay from a base replay with edits, returning the new replay ID.
  • Version the API (e.g., /v1/) and use standard HTTP status codes.
  • Consider idempotency keys for branching to avoid duplicate branches on retries.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

What storage architecture would you use for this system, given that you have raw sensor data, time-series telemetry, and scenario metadata with different access patterns?

System DesignTechnical Trade-offs
Author's notes

Three-tier answer: object store for raw sensor blobs, time-series DB for per-frame telemetry, relational DB for scenario metadata and indexing.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the access patterns and scale for each data type, then propose a polyglot persistence architecture that matches each workload to the right storage technology. Justify your choices with trade-offs around latency, throughput, cost, and consistency.

Pro tip: Emphasize that raw sensor data is immutable and write-heavy, so object storage with tiering is ideal; time-series telemetry needs a specialized TSDB for efficient range queries and downsampling; scenario metadata is relational and benefits from a traditional RDBMS with indexing. This shows you understand data characteristics drive storage decisions.

1. Clarify Requirements

Ask about data volume, velocity, query patterns, retention policies, and consistency needs for each data type to ground your design in concrete requirements.

2. Characterize Data Types

Summarize the distinct characteristics: raw sensor data (immutable, large blobs, write-once read-rarely), time-series telemetry (timestamped, high write throughput, range queries, aggregations), and scenario metadata (structured, relational, frequent updates, complex queries).

3. Propose Storage Solutions

Recommend specific technologies: object storage (e.g., S3) for raw sensor data, a time-series database (e.g., TimescaleDB, InfluxDB) for telemetry, and a relational database (e.g., PostgreSQL) for scenario metadata.

4. Discuss Trade-offs and Integration

Explain how the systems integrate (e.g., references from metadata to raw data, ETL pipelines), and discuss trade-offs like cost, operational complexity, and consistency across stores.

5. Address Scalability and Evolution

Mention how the architecture scales (e.g., sharding, partitioning, tiered storage) and how it can evolve with changing requirements.

Key Points to Mention

  • Polyglot persistence: using different storage technologies for different data types
  • Object storage for raw sensor data: durability, cost-effectiveness, and lifecycle policies
  • Time-series database optimizations: compression, time-based partitioning, and downsampling
  • Relational database for metadata: ACID transactions, indexing, and complex queries
  • Data integration: how to link metadata to raw data and telemetry (e.g., foreign keys, unique IDs)
  • Trade-offs: consistency vs. availability, cost vs. performance, and operational overhead

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.