- LeetCode 39 – Combination Sum
The backtracking template with one twist: candidates may be reused without limit, which changes exactly one character in the recursive call. Why recursing from i rather than i + 1 is the whole difference, how the start index makes results unique structurally instead of by filtering, and why all-positive candidates are what guarantee the recursion terminates.
- AWS – Route 53: DNS, Alias Records and Health Checks
The one thing Route 53 does that other DNS does not: an ALIAS record, which points a bare domain at a CloudFront or ALB target with no CNAME and no charge. Hosted zones and delegation, the record types worth knowing, routing policies from simple to weighted to failover, and TTL as the rollback lever it is. Plus how to tell a propagation problem from your own resolver cache — `dig @8.8.8.8`, not `curl`.
- MySQL – IF, CASE and Conditional Expressions
Branching inside a query. IF() for the two-way case, CASE WHEN for everything else, IFNULL() and NULLIF(), COALESCE() for the first non-NULL of several, and the pattern that makes CASE genuinely useful — conditional aggregation, counting completed and cancelled orders in a single pass instead of running two queries.
- MySQL – LIMIT and Pagination
LIMIT, LIMIT with OFFSET, and why LIMIT without ORDER BY is a bug waiting to happen. Then the part most tutorials skip: OFFSET pagination gets slower the deeper you page, because the server still has to walk and discard every row it skips — and what keyset (seek) pagination does instead.
- Designing a URL Shortener
The classic warm-up question, worked properly. Requirements and estimates, base62 encoding against hash-and-truncate, how to handle collisions without a retry loop that never terminates, the 301-versus-302 decision that also decides whether you get analytics, the read path and its cache, custom aliases, and expiry that does not require scanning the table.