Skip to content
About
Main content

Interview questions

Try each one before you open the answer.

What changes at a boundary

1Why does the deciding question change from 'what is fastest?' to 'what can both sides agree on?' when data crosses a boundary between systems?

Because the and the cannot be updated at the same moment, and the producer may no longer exist. How many parties can take part without negotiating matters more than speed.

Read moreWhat changes at a boundary

2What two variables organize interfaces between systems, and which three families do they produce?

The time gap between writer and reader, and whether the reader can talk back to the writer. They give file formats (unbounded gap, no channel back), access protocols (short gap, a full channel back) and integration patterns (an indefinite gap, where the channel back must also remember where it got to).

Read moreTime gap and back-channel

3Who usually ends up paying the cost of a boundary between two parties?

The party with less power to refuse. Power, not efficiency, predicts which side does the work.

Read morePrinciple C: power picks the payerWho pays

File formats

4What is the parse tax, and who pays it?

The work between the bytes and the values: characters, guessing types, decoding. The reader pays it on every read, forever.

Read moreThe parse tax

5What is splittability, and is 'gzip is not splittable' correct?

is whether a reader starting at an arbitrary byte can find the next record boundary, so that many workers can share one file. It is a property of the , not of the compression codec. One big gzip stream cannot be entered in the middle, but formats that cut the file into independent blocks stay splittable under any codec.

Read moreSplittability

6Why is CSV with quoted newlines not reliably splittable, and what fixes it?

A quoted field may contain a newline, so a worker that jumps into the middle and looks for the next newline may start inside a field. Newline-delimited JSON () fixes it with the rule "one record, one line".

Read moreText formatsNDJSON: framing is worth more than encoding

8Where can a schema live, and what does each choice cost?
  • Nowhere: the reader infers it, paying the and the risk of guessing wrong.
  • In the bytes: overhead in every file, which sets a minimum sensible file size.
  • In a : tiny messages, but the registry is on the critical path, and losing it makes the data undecodable.

Read moreWhere does the agreed schema sit?

9Name six ways two systems can both parse the data correctly yet disagree on what it means.

Character encoding; decimal versus float; versus empty versus absent; timestamps and time zones; integer width; and (sorting rules). A "not null" check does not catch them, because the data is valid and simply means two things.

Read moreThe interop hazards

Access protocols

10Why can a client never be sure whether a failed remote request happened?

If the reply is lost, the sender sees the same silence whether the request failed before, during or after the action. This never goes away, so the receiver must be able to handle the same request twice (idempotency).

Read moreThe back-channel appearsWebhooks and callbacks

11Why do SQL dialects differ between engines?

Mostly because engines have different capabilities, not because vendors are careless. A interface lets the engine decide how to execute, so each engine exposes what it can do.

Read moreDialects, not vendor sloppiness

12Why is a JDBC or ODBC cursor bad for one huge result, and what are the three ways a large result can leave an engine?

The is , stateful and synchronous, so a slow client holds the server's session. The three ways out are the cursor, columnar RPC, and (write files to shared storage and hand over a pointer). Only unload has a cost that does not depend on the client's speed.

Read moreWhat they force: the cursorResult egress: only three ways out

13What does statelessness give REST, and what does it cost?

Any server can answer any request, so servers can be added and removed freely. The price is context re-sent on every request, and often .

Read moreREST and GraphQLThe price is paid twice

14What does GraphQL gain and lose, and what do mature GraphQL services add?

It gains one round trip for any need, and loses a predictable cost per request. Mature services add depth limits, , cost estimation and , which fix the set of query shapes again.

Read moreGraphQL: let the caller choose the shape

15What is the difference between protocol compatibility and semantic compatibility?

Protocol compatibility means clients can connect and exchange bytes, as with the . Semantic compatibility means the same isolation, types, transactions and functions. The first is cheap; the second is not.

Read moreThe Postgres wire protocol

16What four things do webhooks force on you?

Duplicates, so the receiver must be ; , so , budgets and a ; no guaranteed order; and the receiver's availability becoming part of the producer's pipeline.

Read moreWebhooks and callbacks

17How do you estimate the cost of changing a public interface?

With 400 integrations and a 12-month , that is 4,800 integration-months.

Read moreVersioning and deprecation

Integration patterns

18When can a data source be resumed from where a sync left off?

Only when its position is total (any two positions can be compared) and (it only increases). A log offset qualifies. A timestamp high-watermark does not, if writes arrive out of order or share a millisecond.

Read moreConnector frameworksWhat is a position?

19ETL or ELT: what actually decides?

Reprocessability. keeps the raw data, so after a bug you recompute inside the destination. shields the destination from schema at the source, but forces you to extract again. The industry moved because storage became cheap and compute elastic, an economic fact that could flip back.

Read moreELT versus ETLWhy the industry moved

20What decides whether federated queries across systems perform well?

How selective the part that can be pushed down to the source is. With 10⁹ rows of 100 bytes and a filter keeping 0.1%, pushing the filter down moves 100 MB, and not pushing it moves 100 GB: a 1,000× difference from a mismatch in capability.

Read moreFederation and query pass-through

21Why is offset pagination wrong, not just slow?

Under concurrent inserts or deletes, rows shift between pages, so a client sees a row twice or never sees it, with no error. anchors to a value instead, but needs a unique, stable, ordered key.

Read morePagination and sync tokensKeyset pagination

22Why is a file that never arrived the one failure that needs a clock to detect?

Every other failure produces a signal, such as an error or a wrong value. A missing file produces nothing, so it can only be noticed by expecting it on a schedule.

Read moreFile drop and partner exchange