← bobyard Interview Insights

bobyard·Software Engineer·Onsite - System Design / Architecture·Intermediate

IntermediatePrefer not to say
Jul 2026

Summary

System design round at Bobyard for a software engineer role. Two prompts back to back, both with enough moving parts to keep you busy. Not the hardest I've seen but definitely required thinking across the full stack.

Questions Asked (2)

Q1

Design a full-stack comment system supporting create, read, update, and delete operations, with the ability to sort comments by timestamp or user ID in ascending or descending order. The user's sort preference should persist after a page refresh.

System DesignData ModelingTechnical Trade-offs
Author's notes

The CRUD part was fine, I had that down.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then propose a full-stack architecture with a RESTful API, a relational database schema, and a frontend that persists sort preferences via localStorage or URL parameters. Walk through each CRUD operation, discuss sorting implementation on both backend and frontend, and highlight trade-offs such as pagination, indexing, and optimistic UI updates.

Pro tip: Emphasize that sort preference persistence should be handled client-side (e.g., localStorage or URL query params) to avoid unnecessary server round-trips and keep the API stateless. Also, mention that sorting by user ID may require a composite index or denormalization for performance.

1. Clarify Requirements and Constraints

Ask about expected scale, authentication, comment threading, and whether sorting should be server-side or client-side. Confirm that sort preference persistence is per-user and per-browser.

2. Design Data Model and API

Propose a comments table with fields like id, user_id, content, created_at, updated_at. Define REST endpoints: POST /comments, GET /comments?sort=field&order=asc|desc, PUT /comments/:id, DELETE /comments/:id.

3. Implement Sorting and Persistence

For sorting, either handle it in the database with ORDER BY and indexes, or fetch all and sort client-side for small datasets. Persist sort preference in localStorage or URL query parameters so it survives refresh.

4. Address Trade-offs and Edge Cases

Discuss pagination vs. infinite scroll, optimistic UI updates for responsiveness, error handling, and security (e.g., authorization for update/delete). Mention indexing strategies for sorting by timestamp or user ID.

5. Summarize and Validate

Recap the architecture, highlight how each requirement is met, and invite feedback or questions to ensure alignment with the interviewer's expectations.

Key Points to Mention

  • RESTful API design with proper HTTP methods and status codes
  • Database schema with appropriate indexes on created_at and user_id for efficient sorting
  • Client-side persistence of sort preference using localStorage or URL query parameters
  • Trade-offs between server-side and client-side sorting (performance, scalability, simplicity)
  • Optimistic UI updates and error handling for better user experience
  • Security considerations: authentication, authorization, and input validation

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

Q2

Design a service that generates images asynchronously, where the generation process can far exceed a normal HTTP request timeout. How do you accept requests, process jobs in the background, surface status and results to users, and maintain a consistent ordering of items in the UI?

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

This one got interesting fast.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then propose an asynchronous architecture with a job queue and worker pool. Explain how to handle request acceptance, background processing, status tracking, result retrieval, and UI ordering, emphasizing trade-offs and scalability.

Pro tip: Discuss idempotency and exactly-once processing to handle retries and duplicates, and mention how to design for failure recovery and monitoring. This shows maturity beyond basic functionality.

1. Clarify Requirements and Constraints

Ask about expected load, latency SLAs, image types, user expectations, and consistency requirements. This ensures the design meets actual needs.

2. High-Level Architecture

Propose an API gateway for request acceptance, a message queue (e.g., RabbitMQ, Kafka) for job distribution, and a pool of workers for image generation. Mention storage for results (e.g., S3) and a database for job metadata.

3. Request Handling and Job Submission

Describe how the API validates requests, creates a job record with a unique ID, enqueues the job, and immediately returns a 202 Accepted with the job ID and status URL.

4. Background Processing and Status Tracking

Explain how workers pick up jobs, update status (e.g., pending, processing, completed, failed), and store results. Include error handling, retries, and dead-letter queues.

5. Result Retrieval and UI Ordering

Detail how clients poll or subscribe (e.g., WebSockets, SSE) for status updates and fetch results. For UI ordering, discuss using a monotonic sequence number or timestamp to sort items consistently, even with out-of-order completions.

Key Points to Mention

  • Use of message queues for decoupling and load leveling
  • Job status tracking with a database and unique job IDs
  • Idempotency keys to handle duplicate submissions
  • Result storage in object storage with signed URLs for secure access
  • Polling vs. push notifications (WebSockets/SSE) for status updates
  • Ordering via sequence numbers or client-side sorting by creation time

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