Skip to content
RED SAGSkills
hardFull Stack Developer interview question

You need to split a large users table column "name" into "first_name" and "last_name" on a table with 50 million rows, with no downtime. Walk through your plan.

What the interviewer wants to hear

  • Expand and contract across several deploys
  • Add nullable columns without long locks
  • Dual write from the application, then backfill in small batches
  • Switch reads and verify data before dropping the old column
  • Each step must be compatible with the previous app version and reversible

Model answer

I would use expand and contract over several releases. Step one: add first_name and last_name as nullable columns with no default that rewrites the table, so the ALTER is quick and takes only a brief lock; I set a lock_timeout so it fails fast instead of blocking traffic. Step two: deploy code that writes to both the old and new columns on every create and update, while still reading the old one. Step three: backfill old rows in small batches, for example 5,000 rows at a time by primary key, with pauses so replication lag and load stay low; the job must be resumable. Step four: verify that the new columns match, then deploy code that reads from the new columns. Step five, in a later release once nothing uses it: stop writing name and drop it. At every step the previous app version still works, so a rollback is always safe.

Can you answer it under time pressure?

Take a timed hard round and get scored on every answer.

Start mock interview

More hard Full Stack Developer questions