Skip to content

Instantly share code, notes, and snippets.

@demersdesigns
Created November 13, 2017 20:35
Show Gist options
  • Save demersdesigns/5899f3f9cfb9857ace47c7c225e768b1 to your computer and use it in GitHub Desktop.
Save demersdesigns/5899f3f9cfb9857ace47c7c225e768b1 to your computer and use it in GitHub Desktop.
A set of general design and engineering interview questions.

Overview Questions

  • 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?

Team Questions

  • 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?

General Programming

  • 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.

Git Questions

  • What's the difference between a regular merge and a fast-forward merge?
  • Explain "rebasing."
  • Explain squash-and-merge.

Android Questions

  • 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?

Swift Questions

  • 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?

Design Questions

  • 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…”?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment