Interview guides · Major League Baseball (MLB)
Major League Baseball (MLB) Software Engineer Interview Guide
Major League Baseball (MLB) Software Engineer interview guide: reported rounds, questions and how candidates describe the process.
The 60-second brief
A Software Engineer at Major League Baseball (MLB) is responsible for building and maintaining the digital infrastructure that powers the modern fan experience. From streaming live high-definition video to millions of concurrent viewers via MLB.TV, to processing real-time player tracking data through Statcast, engineers at MLB work at the intersection of sports, media, and cutting-edge technology. The systems you build will directly impact how millions of fans interact with the game across web, mobile, connected devices, and broadcast systems. The engineering organization at MLB (historically pioneered by MLB Advanced Media) manages massive scale and complexity. As a Software Engineer, you will contribute to critical platforms such as real-time replay systems, interactive gaming engines, broadcast operations, and high-throughput data integration pipelines.
This guide is scoped to a Software Engineer candidate at Major League Baseball (MLB).
Focus areas
- Java
- Data Structures
- React
The Major League Baseball (MLB) interview process
Major League Baseball (MLB) candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.
HR Recruiter Screen
Initial discussion about your background, career goals, and compensation expectations.
What to demonstrate
- Initial discussion about your background, career goals, and compensation expectations
- Depth in Java
How to prepare
- Be able to walk your CV end to end in two minutes, and say why this company specifically.
- Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.
Technical Screening
Includes a technical phone call, live coding session, or a practical take-home coding assignment.
What to demonstrate
- Includes a technical phone call, live coding session, or a practical take-home coding assignment
- Depth in Java
How to prepare
- Answer aloud and timed: Walk through a live coding exercise demonstrating how pass-by-value works in Java using a custom object.
- Answer aloud and timed: Implement a search algorithm to find specific elements within a multi-dimensional array representing a stadium seating chart.
Panel Interviews
Virtual or onsite interviews with engineering managers, tech leads, and peers covering technical discussions and behavioral evaluations.
What to demonstrate
- Virtual or onsite interviews with engineering managers, tech leads, and peers covering technical discussions and behavioral evaluations
- Depth in Java
How to prepare
- Answer aloud and timed: Write a recursive function to traverse a nested tree structure of sports leagues, divisions, and teams.
- Answer aloud and timed: Build a responsive user interface that consumes a live game event endpoint and displays real-time score updates to the user.
Where candidates lose points
Treat the take-home test seriously
If your process includes a take-home coding assignment, treat it like production-grade code. Write comprehensive unit tests, document your architectural decisions, and ensure your code is clean, modular, and easy to run.
Focus on practical coding over pure LeetCode
When practicing coding challenges, prioritize real-world tasks like string parsing, array manipulation, and object-oriented class design. MLB interviewers value clean, readable code over clever, unreadable one-liners.
Ensure your salary expectations are aligned and documented early in the process
Some candidates have experienced communication mismatches regarding compensation offers late in the hiring cycle.
Questions & practice
Write a function to parse a complex raw string containing player statistics and format it into a structured JS
Medium · Coding & Data Structures
Write a function to parse a complex raw string containing player statistics and format it into a structured JSON object.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Walk through a live coding exercise demonstrating how pass-by-value works in Java using a custom object.
Medium · Coding & Data Structures
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Implement a search algorithm to find specific elements within a multi-dimensional array representing a stadium
Medium · Coding & Data Structures
Implement a search algorithm to find specific elements within a multi-dimensional array representing a stadium seating chart.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Write a recursive function to traverse a nested tree structure of sports leagues, divisions, and teams.
Medium · Coding & Data Structures
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Implement a custom UI component that allows users to filter and sort a large list of player profiles without d
Medium · Frontend & UI Development
Implement a custom UI component that allows users to filter and sort a large list of player profiles without degrading page performance.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Describe a situation where you had to work with an incomplete or ambiguous technical specification. How did yo
Medium · Behavioral & Experience
Describe a situation where you had to work with an incomplete or ambiguous technical specification. How did you proceed?
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Write the update path that detects a concurrent edit
Medium · optimistic concurrency · transactional outbox · audit history
resource carries version INT NOT NULL DEFAULT 1. resource_revision holds revision_id, resource_id, version, actor_user_id, change_kind, patch JSONB, request_id, created_at with UNIQUE (resource_id, version). outbox_event holds aggregate_type, aggregate_id, aggregate_version, event_type, payload, status. A PUT carries the version the client read. Write the exact statements for the single transaction that applies the edit, records the revision and enqueues 'resource.updated', and give the handler's branch on zero affected rows. Then say what PostgreSQL 16 does under READ COMMITTED when two of these updates hit one row at once.
Approach
- One transaction, three writes, no network call inside it: UPDATE resource SET title = $3, version = version + 1, updated_at = now() WHERE resource_id = $1 AND tenant_id = $4 AND version = $2; then INSERT the resource_revision row at version $2 + 1; then INSERT the outbox_event row at the same aggregate_version. The event goes to a table rather than a broker because no transaction spans both.
- Branch on the affected-row count before doing anything else. Zero has three causes — stale version, wrong tenant, row gone — so re-read once and map to 409 carrying the current version, or 404 for an id outside the caller's tenant, which also stops the endpoint confirming that another tenant's id exists.
- State the engine behaviour instead of assuming it. Under READ COMMITTED the second UPDATE blocks on the row lock, and when the first commits PostgreSQL re-evaluates the WHERE clause against the newly committed row, so the version predicate now fails and the statement reports zero rows. Under REPEATABLE READ the identical collision raises SQLSTATE 40001 instead, so the handler must fold both shapes into one conflict response.
- Keep UNIQUE (resource_id, version) even though the predicate already serialises writers. It is what makes a lost update unwritable if any other path ever reaches the revision table, and it converts a logic bug into 23505 rather than into a silently missing history row.
Follow-up
- A client sends the version it read ten minutes ago and the resource has moved three versions. What is in your 409 so it can resolve the conflict without a full re-fetch?
- Two editors, two disjoint fields, no overlap. Does your answer still refuse the second write, and should it?
Keep soft-deleted accounts from blocking re-registration
Easy · soft delete · unique constraints · engine differences
app_user holds user_id, tenant_id, email CITEXT, password_hash (NULL for SSO principals), email_verified_at, auth_version, status ('invited','active','suspended','deactivated'), created_at, updated_at, deleted_at. Two live accounts for one address inside a tenant must be impossible, but an address freed by a soft delete must be reusable, and the same tenant may delete and re-register it repeatedly. Write the uniqueness DDL for PostgreSQL 16, then the equivalent for MySQL 8 where partial indexes do not exist, and say what each permits once three deleted rows already hold that address.
Approach
- Start from what is actually unique: not (tenant_id, email), but (tenant_id, email) among live rows. PostgreSQL says that directly — CREATE UNIQUE INDEX app_user_live_email ON app_user (tenant_id, email) WHERE deleted_at IS NULL. A full constraint over the same two columns burns the address permanently the first time someone deletes an account.
- Keep case-insensitivity in the type or the index, never in the application: CITEXT as given, or UNIQUE (tenant_id, lower(email)) as an expression index where the extension is unavailable. A case-sensitive unique column is exactly how two accounts for one human appear.
- For MySQL 8 the predicate has to move inside the key: add a discriminator column that is a constant 0 while the row is live and is set to user_id on delete, with UNIQUE (tenant_id, email, deleted_marker). Live rows share the constant and still collide; deleted rows differ from each other and stop colliding.
- State the NULL variant and its dependency: leaving the marker NULL for deleted rows also works, because a unique index treats NULLs as distinct — true in MySQL, and true in PostgreSQL only under the default NULLS DISTINCT, which PostgreSQL 15 lets you reverse. Check the polarity against the three existing deleted rows: constant-on-live is what preserves the collision you want, and reversing it silently admits duplicate live accounts.
Follow-up
- A deleted account re-registers with the same address the next day. Do the old resource rows follow the new user_id, and how does the API keep the two principals apart?
- How do you honour an erasure request while resource_revision.actor_user_id still references this table?
Design an in-memory data structure to track live game events in chronological order, allowing for rapid retrie
Medium · Coding & Data Structures
Design an in-memory data structure to track live game events in chronological order, allowing for rapid retrieval and updates.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Build a responsive user interface that consumes a live game event endpoint and displays real-time score update
Medium · Frontend & UI Development
Build a responsive user interface that consumes a live game event endpoint and displays real-time score updates to the user.
Approach
- Say who the caller is and what they do when the call fails halfway.
- Define the identity of a request so a retry cannot double-apply it.
- Separate accepted, pending, failed and confirmed; they are different facts.
- Design the error taxonomy before the success shape; callers branch on it.
Follow-up
- What happens if the caller retries after a timeout?
- How does a client discover it is on an old version of this contract?
Explain how you would optimize a React application to prevent unnecessary re-renders when receiving high-frequ
Medium · Frontend & UI Development
Explain how you would optimize a React application to prevent unnecessary re-renders when receiving high-frequency websocket data.
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
Design a high-throughput ingestion pipeline that processes real-time sensor data from baseballs and bats, and
Medium · System Design & Architecture
Design a high-throughput ingestion pipeline that processes real-time sensor data from baseballs and bats, and distributes it to broadcast partners with sub-second latency.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
How would you architect a distributed caching layer to serve game-day player statistics to millions of concurr
Medium · System Design & Architecture
How would you architect a distributed caching layer to serve game-day player statistics to millions of concurrent mobile app users?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Design a relational database schema to support a fantasy baseball platform, including tables for users, teams,
Medium · System Design & Architecture
Design a relational database schema to support a fantasy baseball platform, including tables for users, teams, players, and real-time game performances.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Explain how you would establish and manage secure database connections in a microservices environment to preve
Medium · System Design & Architecture
Explain how you would establish and manage secure database connections in a microservices environment to prevent connection pooling exhaustion.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
How would you design a resilient video replay distribution system that allows replay officials to quickly acce
Medium · System Design & Architecture
How would you design a resilient video replay distribution system that allows replay officials to quickly access multiple camera angles?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Walk through the process of debugging a performance bottleneck in a JavaScript application using browser devel
Medium · Frontend & UI Development
Walk through the process of debugging a performance bottleneck in a JavaScript application using browser developer tools.
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
Suggested practice checklist
Built from the rounds and topics Major League Baseball (MLB) candidates report.
Day 1 — Map the Major League Baseball (MLB) loop
- Write out the reported sequence: HR Recruiter Screen, Technical Screening, Panel Interviews.
- For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.
Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.
Day 2 — Work Java
- Spend the session on Java, which Major League Baseball (MLB) candidates report being tested on.
- Write one worked example in Java and time yourself on it.
Deliverable: One timed worked example in Java.
Day 3 — Work Data Structures
- Spend the session on Data Structures, which Major League Baseball (MLB) candidates report being tested on.
- Write one worked example in Data Structures and time yourself on it.
Deliverable: One timed worked example in Data Structures.
Day 4 — Work React
- Spend the session on React, which Major League Baseball (MLB) candidates report being tested on.
- Write one worked example in React and time yourself on it.
Deliverable: One timed worked example in React.
Day 5 — Answer out loud: Coding & Data Structures
- Answer aloud, timed: Write a function to parse a complex raw string containing player statistics and format it into a structured JSON object.
- Answer aloud, timed: Design an in-memory data structure to track live game events in chronological order, allowing for rapid retrieval and updates.
Deliverable: Spoken answers to 2 reported Coding & Data Structures question(s), under time.
Day 6 — Answer out loud: Frontend & UI Development
- Answer aloud, timed: Build a responsive user interface that consumes a live game event endpoint and displays real-time score updates to the user.
- Answer aloud, timed: Explain how you would optimize a React application to prevent unnecessary re-renders when receiving high-frequency websocket data.
Deliverable: Spoken answers to 2 reported Frontend & UI Development question(s), under time.
Day 7 — Answer out loud: System Design & Architecture
- Answer aloud, timed: Design a high-throughput ingestion pipeline that processes real-time sensor data from baseballs and bats, and distributes it to broadcast partners with sub-second latency.
- Answer aloud, timed: How would you architect a distributed caching layer to serve game-day player statistics to millions of concurrent mobile app users?
Deliverable: Spoken answers to 2 reported System Design & Architecture question(s), under time.
Behavioural preparation
Behavioural rounds judge the decision you made and what it cost.
How do you handle browser caching and state synchronization for a sports dashboard that displays both static h
Medium · Frontend & UI Development
How do you handle browser caching and state synchronization for a sports dashboard that displays both static historical data and live statistics?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Describe a challenging technical project you led. What were the trade-offs you had to make, and what was the u
Medium · Behavioral & Experience
Describe a challenging technical project you led. What were the trade-offs you had to make, and what was the ultimate outcome?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
How do you prioritize your work and handle tight deadlines when multiple critical bugs are reported during a l
Medium · Behavioral & Experience
How do you prioritize your work and handle tight deadlines when multiple critical bugs are reported during a live broadcast event?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Talk about a time you disagreed with a technical decision made by a senior engineer or architect. How did you
Medium · Behavioral & Experience
Talk about a time you disagreed with a technical decision made by a senior engineer or architect. How did you resolve the conflict?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Why do you want to work for Major League Baseball (MLB), and how does your background align with our media and
Medium · Behavioral & Experience
Why do you want to work for Major League Baseball (MLB), and how does your background align with our media and technology goals?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?