Lesson 19 · Senior platform judgment
Mock senior platform add-ons interview pack
A retrieval-first mock pack for turning the whole operational toolkit course into clear, interview-grade answers you can say under pressure.
Your win: run a realistic senior platform mock interview on yourself, score your answers honestly, and turn weak spots into a focused review plan.
Why this page matters more than a normal recap
A recap page is easy to read passively. A mock pack is not. This page only works if you treat it as active retrieval practice: answer first, then compare, then answer again more cleanly.
That is why this lesson exists. The goal is not to feel familiar with the material. The goal is to make your answers usable under pressure.
The format
This page works best if you treat it like a real interview. Answer first. Then check the points. Then answer again more cleanly.
- Round 1 · Ship it — 6 questions
- Round 2 · Keep it correct — 6 questions
- Round 3 · Run the domain and review it — 6 questions
- Time target — 60–90 seconds per answer
How to use the rounds well
Round 1 checks whether you can explain the platform’s shipping mechanics clearly. Round 2 checks whether you can defend the reliability layer honestly. Round 3 checks whether you can talk about runtime and review judgment like a senior engineer.
If a round feels weak, that is useful information. Do not skip it. That weakness is your study map.
Round 1 · Ship it
- Why is a forward-only migration model defensible here?
- Why is `gen-db-schema` part of the migration workflow?
- What makes a configured lint check different from an enforced guardrail?
- How does the secret-loading path actually work at runtime?
- Why is one-binary / many-subcommands useful?
- What is the operational difference between Skaffold and `./local/run.bash`?
- Fix-forward. Standardize recovery around new corrective migrations because live rollback is not always clean.
- Schema feed. sqlc reads generated schema dumps, so migrations must regenerate the schema snapshot.
- Enforcement. A guardrail must truly run and block bad changes, not just exist in config or code.
- Secrets path. SOPS-backed files are decrypted in process at boot, and some DB-stored keys use a separate AES layer.
- One binary. Shared image/build path, runtime role selected by cobra subcommand plus config.
- Two local loops. Skaffold+kind+Helm is the k8s path; `run.bash` is the compose/hot-swap path.
Round 2 · Keep it correct
- Why does at-least-once delivery force idempotent consumers?
- Why is the idempotent marker timing so important?
- What is the difference between in-process retry and broker redelivery?
- Why is the outbox stronger than publish-after-commit?
- Why might a team still choose publish-after-commit?
- What is the strongest honest summary of the repo’s reliability model?
- Duplicates. Brokers redeliver on doubt, so handlers must survive seeing the same message twice.
- Marker timing. Write only after success or non-retryable failure so retryable failures can truly rerun.
- Retry split. In-process retry happens inside the handler loop first; broker redelivery comes later if the message is still unacked/uncommitted.
- Outbox strength. It closes the dual-write gap by inserting the event in the same transaction as the state change.
- Publish-after-commit trade-off. It is cheaper and faster but accepts a crash gap mitigated by compensation or caller retry.
- Repo model. Mix of idempotency, retries, selective outbox, and deliberate compensation-based pragmatism.
Round 3 · Run the domain and review it
- Why is `QUEUED` not the same as “email delivered”?
- Why can swallowed push failures be intentional?
- What are the three runtime shapes in this platform?
- Why is a CronJob not the same thing as an in-process scheduler?
- How would you review whether a secrets design explanation is too shallow?
- How would you summarize this repo’s platform-add-ons philosophy honestly?
- Email state machine. `QUEUED` means published to Kafka, not necessarily accepted or delivered to the end recipient.
- Push trade-off. Avoiding double-push can matter more than treating every failed token as retryable.
- Runtime shapes. In-gRPC-pod consumers, KEDA-scaled gjob consumer pod, and k8s CronJobs.
- Cron truth. Kubernetes provides the timer; the Go job runs once and exits.
- Secrets review. Ask where decryption happens, who can unwrap keys, and what the plaintext/compromise boundary is.
- Repo philosophy. Pragmatic platform engineering: use real tools, keep the story honest, and accept some consciously chosen imperfections instead of pretending every path is ideal.
Self-scoring rubric
| Score | Meaning |
|---|---|
| 0 | I could not explain it without notes. |
| 1 | I gave fragments, but the answer was incomplete or fuzzy. |
| 2 | I explained the main idea, but missed the trade-off, weakness, or repo consequence. |
| 3 | I gave a strong, clear answer with mechanism + trade-off/weakness + repo consequence. |
Q1. The main rule of this mock pack is…
Sources. This pack synthesizes the whole course into retrieval practice.