Skip to main content
ZombieMutex

30 results · ↑ ↓ navigate · Enter open · Esc close

Personal notebook / Interviews

Curiosities

Engineering Interview Guide

My working notes for iOS, Android, backend and general software engineering interviews, with ML and AI systems in the mix. The goal isn't to memorize a perfect answer. It's to get better at explaining what I would build, what could break, and how I'd know.

Practice questions Reference library
60 questions · 31 references

Foundations → Intermediate → Advanced

How I'd prepare

These are the areas I'd cover before chasing company-specific trivia. Different roles emphasize different skills, so I'd spend more time on the job's actual problems than on someone else's hundred-page checklist.

  1. 01

    Get the basics right

    Know data structures, complexity, state, concurrency, tests and debugging. Being senior doesn't exempt me from explaining an array.

  2. 02

    Go deep in one platform

    For iOS and Android, explain what happens with process death, cancellation, slow networks, lifecycle and security boundaries.

  3. 03

    Design beyond the screen

    Think API contracts, transactions, idempotency, observability, reliability and how the system behaves when a dependency fails.

  4. 04

    Review the hard edges

    Authorization, replay, supply chain, performance, multi-tenant isolation and the realities of production operations.

  5. 05

    Understand ML and AI systems

    Start with baselines and evaluation, then look at inference, retrieval, tool execution, privacy, costs and rollback.

  6. 06

    Practice telling real stories

    Own what I actually did, say what I didn't know, back up the decisions and finish with evidence. No fictional metrics.

Mobile and backend

Swift, Kotlin, APIs, data, concurrency, performance and failures on real devices.

Security and architecture

Threat boundaries, multi-tenant authorization, recovery, incident response and tradeoffs.

ML and AI engineering

Datasets, evaluation, inference, tool permissions, model drift and operating costs.

Questions and reasoning notes

Static review notes: no quizzes, scoring, saved progress or simulations.

Engineering fundamentals

Foundations

When does Big O matter in real code?

I start with the input size, hot path and memory costs. Then I compare realistic alternatives, write down complexity and benchmark the case we actually care about.

Review: Don't optimize a six-item list while ignoring a database round trip.

Foundations

Hash map, sorted map or array?

Compare lookup cost, ordering, memory overhead, hashing and actual access patterns. A hash map is great until iteration order or collision behavior matters.

Review: State assumptions about expected and worst-case complexity.

Foundations

What tests belong at each layer?

Keep fast deterministic tests near logic, integration tests at boundaries and a smaller set of device/UI workflows. Reproduce failures before changing the fix.

Review: A high coverage percentage does not prove good assertions.

Intermediate

Explain a race condition and make it repeatable.

Name the shared state and interleaving. Make a deterministic failing test, then choose isolation, serialization, immutable data or synchronization.

Review: A delay or sleep is usually not a race-condition fix.

Intermediate

How would you design a paginated API that stays consistent as data changes?

Specify pagination semantics, ordering, cursor stability, empty pages, filtering, authorization, invalid cursor behavior and versioning.

Review: Offset pagination can produce duplicates or gaps when data changes.

Intermediate

How do you troubleshoot something you've never seen before?

Define a symptom and a reproducible boundary. Form hypotheses, add instrumentation, change one variable and capture evidence. Fix the smallest causal issue.

Review: Don't change five things and then call the incident resolved.

Advanced

What is backpressure and where do you enforce it?

Look at producer rate, queue capacity, consumer throughput and whether overload should reject, delay or shed work. Separate latency budgets from retries.

Review: Infinite queues just defer the outage.

iOS & Swift

Foundations

Explain SwiftUI state ownership and invalidation.

Start with the source of truth. Explain @State, observable models, binding and how data flow reaches the view. Make ownership obvious.

Review: Avoid duplicating mutable state in multiple screens.

Foundations

Value types, reference types and ARC: when does each matter?

Describe copying vs shared identity, ARC retain cycles and how to reason about capture lists. Use a real UI or networking example.

Review: Don't say struct always lives on the stack.

Intermediate

A network response updates a screen after navigation. Fix it.

Trace the task lifecycle, cancellation propagation, main-actor updates and ownership of fetched state. Test rapid navigation and concurrent loads.

Review: Cancellation is cooperative, not a magical force-stop.

Intermediate

Why did this app freeze on the main thread?

Reproduce the freeze, collect Instruments traces and identify synchronous I/O or CPU work. Move the right operation without introducing races.

Review: Don't move UI state off the main actor just to 'fix' thread contention.

Advanced

What does App Attest prove and what doesn't it?

Discuss device/application integrity signals, server challenge binding, replay resistance, keys and failure recovery. Authorization remains separate.

Review: A legitimate device can still make an unauthorized request.

Advanced

Design an offline-capable iOS authentication flow.

Define trust expiration, credential refresh, secure storage, local unlock boundaries, logout and what the app must reject while offline.

Review: Don't promise real-time revocation without a network.

Android & Kotlin

Foundations

What makes Compose recomposition predictable?

Explain state reads, stable values, remembering state, lifecycle-aware observation and unidirectional data flow.

Review: Recomposition itself is not a bug; unnecessary expensive work inside it may be.

Foundations

What survives a rotation or process death?

Separate UI state, saved instance state and durable data. Use ViewModel, SavedStateHandle and persistence where appropriate.

Review: Don't treat ViewModel as durable storage across process death.

Intermediate

StateFlow vs SharedFlow vs a suspend function?

Match each to state, events and one-off operations. Explain replay, cancellation and backpressure in the consumer.

Review: A shared flow doesn't make a network call idempotent.

Intermediate

An Android client retries and doubles a backend mutation. How do you fix it?

Separate transient transport failures from unknown server outcome, add idempotency at the API, and keep an explicit retry budget on the client.

Review: Blind retries are not safe for every POST.

Advanced

Where does Play Integrity belong in authorization?

Treat attestation as a signal tied to a server request, verify responses server-side and consider freshness, replay and fallback policies.

Review: Integrity is not a substitute for tenant/resource authorization.

Advanced

Design a performance investigation for startup jank.

Distinguish cold/warm starts, baseline profiles, slow I/O, main-thread CPU, device diversity and measurable regressions.

Review: Testing only on a flagship phone hides problems.

Backend & systems

Foundations

What does idempotency mean for an API write?

Define repeat behavior, request fingerprints, idempotency keys, concurrency, retention and what happens after a timeout.

Review: A database unique constraint alone may not solve every ambiguous response.

Intermediate

Explain isolation levels with a concrete anomaly.

Pick write skew or lost updates, draw the concurrent transaction order and show which isolation levels permit it.

Review: Don't promise serializable isolation without considering contention.

Intermediate

A dependency times out and every caller retries. What happens?

Explain amplification, exponential backoff with jitter, deadlines, bounded attempts, admission control and load shedding.

Review: Retries should consume a budget, not manufacture traffic.

Intermediate

Design a worker queue and dead-letter behavior.

Talk delivery semantics, visibility timeouts, consumer idempotency, poison messages, retry policy and observability.

Review: Exactly-once behavior usually requires end-to-end design, not a marketing checkbox.

Advanced

Design a multi-tenant data-access boundary.

Resolve caller identity at the server, bind tenant context to queries, enforce object authorization and test cross-tenant negative cases.

Review: Filtering by a tenant ID supplied by the client isn't authorization.

Advanced

p99 latency doubles after a deploy. Walk through the incident.

Set the timeline, compare release cohorts, inspect traces and saturation, isolate one bottleneck, mitigate, verify and write the follow-up.

Review: An average latency chart can hide the problem.

Security engineering

Foundations

Authentication vs authorization: give a practical example.

A valid session proves identity; each resource and action still needs policy evaluation. Use a cross-account record lookup as the example.

Review: Hidden buttons and unpredictable IDs are not access controls.

Intermediate

An app sees TLS certificate errors in production. How do you debug?

Check device time, certificate chain, hostname, trust store and proxy conditions. Reproduce on a real network and log without leaking secrets.

Review: Disabling verification is not an incident fix.

Intermediate

How do you store and rotate tokens on mobile?

Discuss platform stores, short-lived credentials, refresh semantics, revocation, backups, device compromise and server-side controls.

Review: A secure store doesn't make a bearer token harmless.

Intermediate

Threat-model a mobile-to-backend API.

Draw data flow and trust boundaries. List assets, attackers, spoofing/replay/authorization paths and concrete negative tests.

Review: A threat model without a way to test assumptions is just a drawing.

Advanced

How would you investigate a suspicious mobile binary?

Establish authorized scope, isolate the environment, capture hashes, inspect static structure, instrument behavior and tie observations to evidence.

Review: Don't confuse an indicator with proof of compromise.

Advanced

Can an LLM prompt authorize a database write?

No. The model proposes actions; the executor must validate tool, arguments, authenticated principal, resource scope and approval.

Review: Prompt guardrails alone cannot enforce access policy.

ML & AI systems

Foundations

Why start with a baseline model?

Define the objective and simple baseline. Check dataset quality, leakage and class imbalance before spending time on more complexity.

Review: A high accuracy number on a leaked split is worse than useless.

Foundations

Precision, recall or accuracy: which metric?

Start from the decision cost and prevalence. Explain confusion matrix, thresholds and what happens to false positives/negatives.

Review: One metric won't cover every product risk.

Intermediate

What is training/validation leakage?

Describe target leakage, duplicate records, future data and user/session splits. Validate using a split that matches deployment.

Review: Don't shuffle time-series events blindly.

Intermediate

Design a retrieval-augmented answer system.

Define corpus provenance, chunking, relevance evaluation, citation fidelity, access filtering, stale documents and no-answer behavior.

Review: Retrieval must respect per-user document permissions.

Advanced

How would you evaluate a tool-using agent?

Version tasks and golden expected outcomes. Evaluate tool selection, auth denials, argument validation, failures, latency and costs independently.

Review: Don't call the model's own unverified judgment a ground truth label.

Advanced

How do you ship an ML model safely?

Separate train/test data, version features/model, measure inference constraints, run canaries, observe drift and define rollback.

Review: A good offline score doesn't guarantee production behavior.

Advanced architecture

Advanced

Design multi-device offline sync with conflicts.

Define ordering, version vectors or revision IDs, ownership, merge policy, tombstones and recovery after long offline periods.

Review: Last-write-wins is a product decision, not a universal solution.

Advanced

Design passkey login across iOS, Android and web.

Cover challenge binding, credential enrollment, phishing resistance, authenticator choices, account recovery and server session policies.

Review: A passkey login still needs a carefully designed recovery path.

Advanced

Your service grew tenfold. What do you change first?

Measure traffic, bottlenecks and cost drivers, then choose the smallest change with a rollback. Capacity and reliability are not separate conversations.

Review: Don't reach for microservices before checking the slow query.

Advanced

How do you protect the build and release pipeline?

Discuss provenance, dependencies, CI permissions, signing, secret handling, artifact verification and incident revocation.

Review: A green pipeline doesn't establish supply-chain integrity.

Advanced

Design an API that survives a partial outage.

Set dependency timeouts, bulkheads, rate limits, fallbacks, circuit breakers and operational signals. Define degraded but safe behavior.

Review: A fallback must not bypass authorization or correctness.

Career & communication

Foundations

Tell me about software you built that reached production.

I would describe the actual feature, my role, constraints, tradeoffs, test strategy, rollout and observed result. Only claim what I can verify.

Review: Don't turn a team accomplishment into a solo story.

Intermediate

How did you improve an unfamiliar codebase?

Explain how I formed a model of the system, found evidence, limited the change, protected existing behavior and measured improvement.

Review: The best story isn't 'I rewrote the whole thing.'

Intermediate

Describe an investigation into a difficult bug or security failure.

Use symptom → evidence → hypotheses → intervention → validation → follow-up. Be explicit about what I directly did.

Review: Don't invent a production incident or business metric.

Advanced

Tell me about a risky decision with incomplete information.

State what was known, unknown, time constraints, options, reversible choices and how I communicated the risk.

Review: Pretending there was no uncertainty is not confidence.

Intermediate

How do you handle a customer escalation?

Get an agreed symptom and severity, set communication cadence, reproduce with sanitized data, mitigate, confirm and close the loop.

Review: Avoid promising a fix before reproducing the problem.

Advanced

How would you challenge a proposed architecture?

Start with requirements, threat model and SLOs. Compare the simplest alternatives, identify failure modes and ask for a falsifiable test.

Review: Disagreement is useful when it produces evidence, not a longer meeting.

Case studies

Intermediate

Case: a mobile reconnect triggers a retry storm.

Map app retry policy, API timeouts, queue saturation and dependency health. Propose bounded retries with jitter, backpressure and idempotency.

Review: Show what measurement would prove the storm actually stopped.

Intermediate

Case: device integrity passes but another user's record is returned.

Separate device integrity from object authorization. Reproduce with two test tenants; fix the server query boundary and add a regression test.

Review: Never treat an attestation success as permission to read arbitrary records.

Advanced

Case: a large image crashes the app on older devices.

Compare memory traces, image decode dimensions, caches and lifecycle behavior on constrained hardware. Add regression benchmarks.

Review: Compression on disk is not the same as decoded bitmap memory.

Advanced

Case: an API migration breaks only a percentage of users.

Segment by app version, network, device and rollout cohort. Check backward compatibility and replays; mitigate with a reversible server change.

Review: Don't rely solely on the latest app version when clients update slowly.

Advanced

Case: an agent tries an unauthorized customer-data export.

Trace the retrieved text, proposed tool call, caller identity and backend policy. Deny on capability and tenancy, then evaluate similar attacks.

Review: Prompt wording is not a sufficient defense.

Intermediate

Case: a classifier scores well offline and fails after deployment.

Compare train and live distributions, leakage, threshold cost, missing features, feature drift and runtime instrumentation.

Review: Don't retrain before knowing what changed.

Bonus drills

Foundations

Try five whys on a flaky test.

Keep each why tied to evidence. Stop when a fixable systemic cause and verification plan emerge, not when someone is blamed.

Review: Five whys is a guide, not a requirement to invent exactly five causal links.

Foundations

Explain a complex system in 90 seconds.

Say the goal, key components, trust boundary, failure mode and one tradeoff. Then invite a deeper question.

Review: If I can't explain it without a ten-slide deck, I should keep working on it.

Intermediate

Name three tests you'd write before the happy path.

Use unauthorized access, duplicate/replayed requests and dependency timeouts. Then connect each to a specific invariant.

Review: Tests need clear observable outcomes.

Advanced

Review a PR that adds a 'temporary' TLS bypass.

Block the unsafe release, explain the trust boundary, reproduce the certificate issue and provide a safe diagnostic path.

Review: Temporary security bypasses have a habit of becoming permanent.

Intermediate

Explain a tradeoff you changed your mind about.

Use new evidence, what assumption broke, and what I changed. Revising a decision based on data is a strength.

Review: Don't retroactively claim the original choice was obviously wrong.

Advanced

Run a four-question mock without rehearsed scripts.

Cover a production build, inherited code, a difficult incident and a decision under uncertainty. Keep ownership and observed results explicit.

Review: No invented metrics. The follow-up questions usually expose them.

Reference library

iOS · Official docs

Swift concurrency

Tasks, actors and strict concurrency. Read this before explaining cancellation.

Open reference →

iOS · Official docs

SwiftUI state and data flow

Understand state ownership and how updates move through the view tree.

Open reference →

iOS · Official docs

Testing in Xcode

Swift Testing, XCTest, UI tests and test strategy.

Open reference →

iOS · Official docs

Core ML model integration

Useful when discussing real on-device inference constraints.

Open reference →

Android · Official docs

Android architecture

State holders, UDF, repositories and lifecycle tradeoffs.

Open reference →

Android · Official docs

Jetpack Compose

Recomposition, state and layout fundamentals.

Open reference →

Android · Official docs

Android testing

What to test locally, on devices and at boundaries.

Open reference →

Android · Official docs

Play Integrity

Device signals in a broader server-side abuse defense.

Open reference →

Android · Official docs

Kotlin coroutines

Structured concurrency and cancellation in plain Kotlin.

Open reference →

Backend · Official docs

PostgreSQL transaction isolation

Read the anomalies, then reproduce them in two sessions.

Open reference →

Backend · Official docs

OpenTelemetry docs

Tracing, metrics, propagation and what you can actually observe.

Open reference →

Backend · Reference

Google SRE book

Practical reliability, incidents and operations.

Open reference →

Backend · Official docs

Kubernetes concepts

Workload, health and deployment behavior worth testing.

Open reference →

Security · Reference

OWASP API Security Top 10

Start with object authorization, authentication and unsafe API use.

Open reference →

Security · Reference

OWASP MASVS

Structured requirements for reviewing real mobile security assumptions.

Open reference →

Security · Site reference

ZombieMutex CVE Explorer

Walk through public vulnerabilities and their trust boundaries.

Open reference →

Security · Site reference

ZombieMutex security analysis

Static security analysis and source-backed case studies.

Open reference →

ML & AI · Course

Google ML Crash Course

A practical starting point for model training and evaluation.

Open reference →

ML & AI · Course

PyTorch Learn the Basics

From tensors and datasets to optimization and saved models.

Open reference →

ML & AI · Reference

Google Rules of ML

Lessons on production ML before building something needlessly complicated.

Open reference →

ML & AI · Site reference

ZombieMutex AI & ML engineering

Technical write-ups on agent execution, evaluation and mobile inference.

Open reference →

ML & AI · Reference

NIST AI Risk Management Framework

A structured approach to risks around AI deployment and operation.

Open reference →

Career · Practice

LeetCode 75 study plan

Structured algorithm practice. Be able to explain complexity, not just pass.

Open reference →

Career · Reference

Tech Interview Handbook

Community guide to coding, systems and behavioral preparation.

Open reference →

Career · Reference

Coding Interview University

Large open study plan; select what matches the role rather than doing everything.

Open reference →

Career · Site reference

ZombieMutex project portfolio

Use real implementations and test evidence for ownership-based stories.

Open reference →

Case studies · Site reference

Retry storms and jitter

Walk through amplification and mitigations without hand-waving.

Open reference →

Case studies · Site reference

Malware and incident case files

Reconstruct what happened, how we know and what actually changed.

Open reference →

Case studies · Site reference

Security engineering workbench

Use documented attack paths and code review evidence.

Open reference →

Bonus · Reference

System Design Primer

Community reference for tradeoffs; no need to memorize every diagram.

Open reference →

Bonus · Reference

Git internals and Pro Git

A surprising number of engineering interviews still reveal Git gaps.

Open reference →
This is a study guide, not a record of interviews I've taken or outcomes I've achieved. For career questions, I use real work and honest ownership. Being able to explain a failure is more useful than sounding like I memorized a conference talk.