← Workday Interview Insights

Workday·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Jul 2026

Summary

Workday software engineer interview with a meaty OOP design question about building a file parser system. The kind of problem where you think you know where it's going and then they keep pulling on threads.

Questions Asked (1)

Q1

Design a file parser system that supports multiple formats like CSV, JSON, XML, and custom delimited files. Walk through the class hierarchy, how you'd handle extensibility for new formats, and how you'd deal with large files and malformed input.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

I started with the interface and factory pattern which felt right, but I got tripped up when they pushed on how a brand new format gets added without touching existing code.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design a class hierarchy with an abstract Parser base class and concrete subclasses for each format, using the Factory pattern for instantiation. Discuss extensibility through the Strategy pattern and plugin architecture, and address large files with streaming and malformed input with robust error handling and recovery strategies.

Pro tip: Emphasize that the parser should be decoupled from the data model—use a common intermediate representation (e.g., a record iterator) so downstream consumers are format-agnostic. Also, mention that malformed input handling should be configurable (fail-fast vs. skip-and-log) to suit different use cases.

1. Clarify Requirements and Constraints

Ask about expected file sizes, format variations, performance needs, and error tolerance to tailor the design. Confirm whether the system should support schema validation or just parsing.

2. Design Class Hierarchy and Interfaces

Define an abstract Parser class with methods like parse(), and concrete subclasses (CSVParser, JSONParser, etc.). Use a Factory to create parsers based on file extension or content type.

3. Ensure Extensibility

Apply the Strategy pattern to encapsulate parsing algorithms, and allow new formats via a plugin system or registration mechanism. Discuss how to avoid modifying existing code when adding formats (Open/Closed Principle).

4. Handle Large Files

Use streaming or chunked parsing to avoid loading entire files into memory. Discuss trade-offs between memory usage and performance, and consider parallel processing for independent chunks.

5. Manage Malformed Input

Implement error handling strategies: fail-fast with detailed errors, skip-and-log, or attempt recovery. Make behavior configurable and ensure errors are reported with context (line number, column).

Key Points to Mention

  • Abstract base class and concrete implementations for each format
  • Factory pattern for parser instantiation based on file type
  • Strategy pattern for interchangeable parsing algorithms
  • Streaming/chunked reading for large files to minimize memory footprint
  • Configurable error handling (fail-fast vs. lenient) with detailed error reporting
  • Plugin architecture or registration for adding new formats without modifying core code

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