Active problem-solving
Practice Prompts
Try it before you reveal. Each coding and system-design prompt unfolds in stages — approach, then solution — so you practice retrieval, not recognition. Mark what you solved; revisit the rest.
- CodeMid
Debounce a SwiftUI search field
swiftuiconcurrencysearchA search field fires a query on every keystroke. Make it only query after the user pauses typing for 300ms, and cancel the in-flight query when a new keystroke arrives — using Swift concurrency, no Combine.
next: new - CodeSenior
A thread-safe image cache with an actor
concurrencyactorcacheMany view tasks request images concurrently. Build an in-memory cache that never races, and that de-duplicates concurrent requests for the same URL so it only downloads once.
next: new - CodeMid
Decode a messy JSON payload with Codable
datacodablejsonAn API returns
snake_casekeys, ISO-8601 dates, and a nested object. Decode it into clean Swift models without hand-writing every key.next: new - CodeSenior
Async retry with exponential backoff
concurrencynetworkingresilienceWrap an async operation so it retries on failure up to N times with exponential backoff, respects cancellation, and rethrows the last error if all attempts fail.
next: new - CodeMid
An @Observable list view model with load states
swiftuimvvmstateBuild a view model that loads a list and exposes loading / loaded / empty / error states so the view can render each cleanly. Make it testable.
next: new - CodeMid
Fetch two endpoints concurrently and combine
concurrencynetworkingA profile screen needs the user and their posts from two endpoints. Fetch them in parallel and combine — don't await one then the other.
next: new - CodeSenior
A minimal Keychain token store
securitykeychainStore and read an auth token securely. Explain why this belongs in the Keychain rather than
UserDefaults.next: new - CodeSenior
Bridge a callback API to async/await
concurrencyinteropYou have a legacy
load(completion:)that returns aResult. Expose a modernasync throwsversion without rewriting the legacy code.next: new - CodeSenior
Infinite-scroll list that paginates
swiftuiperformancepaginationRender a long list that loads the next page as the user nears the bottom, without loading everything up front and without firing duplicate page requests.
next: new - DesignArchitect
Design an offline-first notes app
architecturesyncdataUsers create and edit notes that must work fully offline and sync across devices. Design the data flow, sync strategy, and conflict resolution.
next: new - DesignArchitect
Architect an app for 30 engineers
architecturemodularizationspmA single-target app has 12-minute incremental builds and constant merge conflicts. How do you restructure it so a large team can move fast?
next: new - DesignSenior
Design a smooth image-heavy feed
performanceswiftuimediaDesign a social feed of high-resolution photos that scrolls at a steady frame rate on older devices and doesn't blow the memory budget.
next: new - DesignSenior
Design the networking & data layer
architecturenetworkingcachingDesign the layer between your UI and the backend: how requests, decoding, caching, auth refresh, and testing fit together.
next: new - DesignSenior
Design navigation & deep linking
architecturenavigationDesign navigation for a multi-tab app that must support deep links, push-notification routing, and state restoration.
next: new - DesignSenior
Design a CI/CD & release pipeline
cicdreleasesigningSet up build, test, signing, and release for a team so every change is verified and shipping is one click — with a safe rollout.
next: new - DesignBeyond
Design on-device semantic search
aicoremlsearchLet users search their content by meaning, not just keywords, entirely on device for privacy. Design it.
next: new