title: interview questions ...
Questions that I've either worked through, received in real or mock interviews, given in real or mock interviews, or would like to work through at some point.
- Serialize and deserialize an n-ary tree
-
ngrok: dynamically provision a reverse proxy to
localhost:8080
-
internal webhook delivery platform: allow internal services to deliver webhooks to user-provided webhook handler endpoints
-
location proximity search: given a dataset of locations, return the ones nearest to the user
-
top N currently streaming songs: show the top N, in order, along with the active stream count (some inaccuracy is OK), in real-time
-
schedule send, a la email, Slack, or text
System design is hard
- because identifying The Hard Problems™ is hard,
- because breaking down a problem into easy problems is hard, and
- because reasoning about edge cases and failure modes is hard.
Your job as a candidate is to demonstrate that you are capable of all this.
<rant>
Also, FYI: most system design resources on the internet are terrible.
-
They usually take the form "given assumptions A, B, and C, this is The Correct Way to solve this problem". A competent engineer can say "assuming A1 xor A2, here's how my design would change".
-
A lot of them suggest doing resource estimates, e.g. "given 2M entries, 5 bytes overhead, 33 bytes each, we need XYZ storage", but that's (naive) capacity planning, not system design. Do a Fermi estimate and move on.
</rant>