Android CI/CD Interview Questions

Pipelines, builds, and release automation.

50 questions in this topic · 8 sample questions below

Practice CI/CD in the quiz engine

Sample questions

  1. Under Google Play App Signing, what is the practical difference between your upload key and the app signing key?

    • The upload key signs the artifact you send to Play, while Google holds the app signing key that signs the APKs delivered to users — correct
    • They are identical; Play just renames the same key internally
    • The app signing key signs what you upload, and the upload key signs what users receive
    • Both keys must be uploaded together in every release for verification

    Why: With Play App Signing you sign your bundle with the upload key; Google re-signs the delivered APKs with the app signing key it stores. Treating them as the same key is the classic misconception and misses that a lost upload key can be reset while the app signing key never changes.

  2. Why is passing --no-daemon recommended for Gradle builds on ephemeral CI runners?

    • It enables the configuration cache automatically
    • A lingering daemon on a short-lived runner wastes memory and can hold stale state, so a single-use build should not spawn a persistent daemon — correct
    • It forces parallel task execution across modules
    • It disables the build cache to guarantee clean builds

    Why: On ephemeral runners the JVM is discarded after the job, so a persistent daemon gives no reuse benefit and only risks stale state and extra memory. The belief that keeping the daemon on speeds up CI is wrong precisely because the runner does not persist between builds.

  3. In a GitHub Actions workflow, what does setting concurrency with cancel-in-progress true keyed on the branch achieve?

    • It runs all pushes to the branch in parallel for speed
    • It serializes jobs within a single run
    • It cancels an older still-running run for the same branch when a newer push arrives, avoiding wasted CI on outdated commits — correct
    • It prevents two different branches from ever building at once

    Why: A concurrency group with cancel-in-progress aborts superseded runs of the same group (e.g. per-branch), saving minutes on rapid pushes. It does not parallelize pushes; that is the opposite of what concurrency control does.

  4. Why can the Gradle configuration cache break a CI build that the plain build cache handles fine?

    • The configuration cache stores test results that expire on CI
    • It only works when the Gradle daemon is enabled
    • It requires a remote cache node to function
    • The configuration cache serializes the task graph and rejects configuration-time reads of environment or system state that are not declared as inputs — correct

    Why: The configuration cache captures the configured task graph and fails when a build reads env vars, system properties, or files at configuration time without declaring them as providers. The build cache only caches task outputs and has no such configuration-time constraints, so it can pass where the configuration cache fails.

  5. An Android App Bundle (AAB) differs from an APK in distribution because:

    • An AAB is a publishing format that Play uses to generate optimized per-device APKs, and it cannot be installed directly on a device — correct
    • An AAB can be sideloaded onto a device directly just like an APK
    • An AAB is only for instrumented tests, never production
    • An AAB is smaller because it strips all resources permanently

    Why: An AAB is an upload/publishing format; Play's bundletool splits it into device-specific APKs at delivery time, so you cannot install an .aab directly. Believing it sideloads like an APK is a common misconception; you would need bundletool to build installable APKs from it.

  6. What is the main advantage of Gradle Managed Devices over manually starting an emulator in a CI script?

    • They run instrumented tests on physical devices in the cloud for free
    • Gradle provisions, boots, and tears down the defined emulator automatically as part of the build, making runs reproducible and declarative — correct
    • They eliminate the need to build the app under test
    • They only work for unit tests, not instrumented tests

    Why: Gradle Managed Devices let you declare an emulator spec in the build config and Gradle handles provisioning and teardown, giving reproducible instrumented test runs. They are still emulators, not physical cloud devices, and they run instrumented tests, not just unit tests.

  7. Why is OIDC-based authentication to a cloud provider generally preferred over storing a long-lived cloud access key as a GitHub Actions secret?

    • OIDC secrets never appear in the workflow file, unlike static keys
    • OIDC encrypts the static key with a stronger cipher
    • OIDC lets the workflow exchange a short-lived, workload-scoped identity token for temporary credentials, so no long-lived secret is stored at all — correct
    • OIDC is faster because it skips the token exchange step

    Why: OIDC issues a signed identity token per run that the cloud trust policy exchanges for short-lived credentials, eliminating the standing secret that could leak. A stored static key remains a long-lived liability even if referenced as a secret, which is exactly what OIDC removes.

  8. A staged (percentage) rollout on the Play production track means:

    • The release is instantly delivered to 100% of users but marked staged
    • Only internal testers receive it until you promote it
    • It applies only to the open testing track
    • The update is delivered to a configurable fraction of users first, and you increase the percentage over time while monitoring stability — correct

    Why: Staged rollout releases to a chosen percentage of the production audience so you can watch crash and ANR rates before widening. Assuming staged means everyone gets it immediately defeats the purpose of controlled, monitored exposure.

Practice all 50 CI/CD questions

These 8 are a sample. The full CI/CD bank is scored, tracks your progress, and explains every answer.

Open the quiz

More Android interview topics