- Tell me what you know about the company and why you would be excited to join us.
- What is your general process and approach to starting a new project?
- How about a project that you are brought into mid-stream?
- What is the most appealing part of consulting for you?
- Tell me about your favorite project or team that you have been a part of.
- Tell me about a time you had to break some bad news to a manager, team member, or client. How did you approach it, and what did you do to ensure a good outcome?
- What does "agile" mean to you? How do you like to see "agile" implemented?
- Are they familiar with SOLID principles? Can they name them?
- If so, can they also explain a couple of them?
- If not, read the summary of one of the principles and see if they can articulate an example or explain its importance.
- What's the difference between a regular merge and a fast-forward merge?
- Explain "rebasing."
- Explain squash-and-merge.
- Walk me through the basic Android components: activity, fragment, view, service, application.
- What is the purpose of the lifecycle, and what might you expect to find in onCreate()?
- It's important not to block MainThread. How might you do something long-running, like a network call, in the background?
- What libraries or techniques have you used to access apis or network services?
- Let's say you need to save some piece of data locally on a device, and not in the cloud. What are some options?
- Have you used the MVP pattern in Android? If yes, what does MVP suggest, why might we use it, and how is it different from MVC? If no, what are some techniques you use to organize your code, and keep your activities/fragments from growing too big?
- Testing is important, and preferrably automated. How do you like to test your code? How do you differentiate between unit, functional, integration, feature, and view tests? Do you have experience with jUnit, espresso, robolectric, selenium/webdriver or seomthing else?
- Advanced topics: Do you have experience with kotlin, RxJava, the bluetooth stack, or DI frameworks?
- What is the android backstack, and how do Intents affect it?
- What's the difference between a class and a struct?
- What does the "mutating" keyword do? (Bonus points if they can accurately explain the actual mechanics, since I still haven't quite figured that out myself)
- Why is the mutable/immutable distinction important? How does it relate to classes and structs?
- In a Swift enum, what's the difference between raw values and associated values?
- How are optionals implemented?
- Share your knowledge of and experience with designing components, design systems, and styleguides.
- What are you most excited about in the design industry right now?
- What is your favorite app? Why?
- What app do you use every day and say “this is such a bad interaction, it would be so much more straightforward if they would just…”?