To excel in the technical rounds, you must demonstrate depth across several specific domains. Our interviewers will probe your understanding of both legacy Android concepts and modern frameworks.
Kotlin Proficiency
Your fluency in Kotlin is a foundational requirement for the Mobile Engineer role at Amex. Interviewers will evaluate whether you understand Kotlin's unique paradigms or if you are simply writing Java code with Kotlin syntax. Strong performance means leveraging Kotlin's features to write concise, safe, and asynchronous code.
Be ready to go over:
- Coroutines and Flows – Understanding dispatchers, structured concurrency, and state management using StateFlow and SharedFlow.
- Language Features – Extension functions, sealed classes, scope functions (let, apply, run), and null safety mechanics.
- Memory Management – How Kotlin handles memory, preventing leaks in asynchronous operations, and understanding the garbage collection impact of your code.
- Advanced concepts (less common) – Inline classes, reified types, and custom coroutine scopes.
Example questions or scenarios:
- "Explain how you would handle a network timeout and retry mechanism using Kotlin Coroutines."
- "Describe the differences between
StateFlow and LiveData, and why you might migrate from one to the other."
- "Walk me through a 30-minute task to parse a complex JSON response and map it to a domain model using idiomatic Kotlin."
Core Android Architecture
Amex applications are large-scale and complex, requiring robust architectural patterns. We evaluate your ability to structure an app that is scalable, maintainable, and easily testable. You must understand the Android lifecycle intimately and know how to separate concerns effectively.
Be ready to go over:
- Architectural Patterns – Deep understanding of MVVM and MVI, and how to manage state across configuration changes.
- Lifecycle Management – Handling background processes, surviving process death, and lifecycle-aware components.
- Dependency Injection – Using tools like Hilt or Dagger to decouple components and improve testability.
- Advanced concepts (less common) – Multi-module architecture strategies, Gradle build optimization, and custom lint rules.
Example questions or scenarios:
- "How do you ensure your ViewModel does not leak context or outlive its intended lifecycle?"
- "Design a caching strategy for a financial dashboard that must work offline but display real-time data when connected."
- "Explain how you would structure a new feature module in a large, legacy codebase."
Modern UI & Jetpack Compose
The transition to declarative UI is a major focus for the Amex mobile team. You will be heavily evaluated on your experience with Jetpack Compose and your ability to build responsive, accessible user interfaces.
Be ready to go over:
- Compose State Management – Hoisting state, understanding recomposition, and using
remember and derivedStateOf.
- Migration Strategies – Interoperability between XML and Compose, and strategies for migrating legacy screens safely.
- Performance Optimization – Identifying and fixing unnecessary recompositions, and using tools like the Layout Inspector.
- Advanced concepts (less common) – Custom layouts in Compose, advanced animations, and Compose compiler metrics.
Example questions or scenarios:
- "Walk me through how you would build a custom, reusable button component in Jetpack Compose that adheres to a strict design system."
- "How do you debug a screen in Compose that is suffering from UI stuttering and excessive recomposition?"
- "Complete a 30-minute task to build a responsive list view using Compose that fetches and displays paginated data."
UI Testing and Quality Assurance
At Amex, a feature is not complete until it is thoroughly tested. The financial nature of our application demands exceptionally high quality. You will be evaluated on your ability to write reliable, non-flaky UI tests and your overall testing philosophy.
Be ready to go over:
- Compose Testing – Using
composeTestRule, finding nodes, and asserting UI states in a declarative world.
- Espresso & UI Automator – Writing robust tests for traditional XML views and cross-app interactions.
- Test Architecture – Mocking dependencies for UI tests, managing test data, and ensuring tests run reliably in a CI/CD pipeline.
- Advanced concepts (less common) – Snapshot testing, performance benchmarking, and mutation testing.
Example questions or scenarios:
- "Write a UI test for a Compose screen that verifies a loading spinner appears, followed by a list of transactions."
- "How do you handle animations and idling resources when writing UI tests to prevent flakiness?"
- "Explain your approach to testing a complex user flow that spans multiple screens and requires user authentication."