Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Acing the Android Interview

Acing the Android Interview

Sumayyah Ahmed

August 17, 2021
Tweet

More Decks by Sumayyah Ahmed

Other Decks in Technology

Transcript

  1. Acing the Android Interview
    Sumayyah Ahmed

    View full-size slide

  2. Why are we here?

    View full-size slide

  3. The Android job market

    View full-size slide

  4. Who am I?
    8 years as an Android dev at a
    non-FAANG corporation,
    startups, freelance consultant
    4-5 interviews per year at LEAST
    for each of these years
    Interviewed 20+ candidates

    View full-size slide

  5. An interview is...
    A session where an awesome group of people decides whether I’m cool enough to
    work for them
    A business meeting where a vendor (you) and a customer (company) evaluate whether
    each of you can fulfill a business need

    View full-size slide

  6. Focus: you have a short amount of time - what
    should you prep?
    Because interviewing is a BIG topic!

    View full-size slide

  7. Overview

    Process

    Technical questions

    Coding challenges

    CS (Algorithms + data structures)

    Android-related

    Behavioral questions

    Tips & tricks to stand out, kick butt, take names

    Q&A

    View full-size slide

  8. Step # What is it Technical? Purpose?
    1 Recruiter call No Friendly, gauge general fit for job
    2 Phone screen Yes (often) Generally 30 mins, meant to weed out
    obviously unfit candidates
    3 Virtual coding session (optional) Yes Generally 60 mins, meant to get a
    handle on candidate’s coding ability
    4 Coding challenge (optional) Yes Meant to get a handle on candidate’s
    coding ability
    5 Onsite Yes and also
    behavioral
    4-6 hour gauntlet of technical,
    algorithmic, systems knowledge as
    well as culture fit and
    behavioral/communication ability
    6 Offer! No Haggle over the details - salary,
    equity, start date, work hours,
    location, etc

    View full-size slide

  9. Let’s get technical

    View full-size slide

  10. What kind of technical questions are there?
    1. Coding ability
    2. Android expertise and knowledge
    3. CS fundamentals - aka algorithms and data structures

    View full-size slide

  11. Live Coding or Take Home Coding Challenges
    What do interviewers look for?
    Does the candidate know how to program comfortably and fluently?
    Do they have a handle on object-oriented paradigms?
    Can they translate theoretical problems to code?
    Do they show good (clean) coding practices?
    (we’ll handle the content of these coding challenges in a minute)

    View full-size slide

  12. Live Coding or Take Home Coding Challenges
    How can I prep?
    Get fluent. Practice.
    1. Make simple side projects (and upload them to Github).
    a. Preferably Android apps.
    2. Coding challenges on HackerRank
    3. Read about “clean” coding and design patterns
    a. Effective Java
    b. Head First Design Patterns

    View full-size slide

  13. Live Coding Challenges
    Live coding sample questions (these are all real questions I’ve gotten):
    1. Create a function that will take parameters: a) integer k and b) list of integers.
    Return kth smallest integer
    2. Find the largest mirror image of integers in an array of integers
    3. Write a function to reverse a linked list with iteration and then again with
    recursion
    4. Given a set of strings separated by a delimiter, how would you separate the unique
    strings?
    You’ll probably do this on something like CoderPad

    View full-size slide

  14. Take Home Coding Challenges
    Take home challenges often involve you creating a very simple Android app, with some
    basic features:

    Multiple screens

    Lists

    Network fetches
    For example: Create an app that hits the sample IMDB API. Show the results of the
    API in a list view. When you tap on a list item, launch a new screen with more details
    on that item.

    View full-size slide

  15. Android stuff

    View full-size slide

  16. Android interview questions
    What do interviewers look for?
    Does the candidate know how the basics of making Android apps?
    Do they have a handle on big no-no’s like long-running threads?
    Can they explain why they chose certain libraries or tools?
    Are they familiar working with Android-specific tools?

    View full-size slide

  17. Android fundamentals you should know (an abbreviated list)
    1. The Android Activity and Fragment lifecycle
    2. The relationship between Activities and Fragments
    3. Kotlin
    4. Android Architecture Components (aka Jetpack)
    a. In particular, ViewModels
    5. How to create a list view
    6. How to do a network fetch
    7. Local data storage (SharedPreferences, local DB, in-memory cache)
    8. What happens on rotation, and why is it important?
    9. What can cause ANRs or app crashes?

    View full-size slide

  18. Android tooling you should know
    1. Android Studio
    2. Git
    3. ADB and how to test apps on emulators and real phones
    4. Debugging with built in debugging tools
    5. How is an app released to the Play Store?
    6. The common networking libraries- (Okhttp, Retrofit)
    7. The common threading libraries - (RxJava, Kotlin coroutines) (this is
    intermediate, don’t worry about this if you’re a beginner)
    8. Unit-testing basics and libraries - (JUnit, Mockito)

    View full-size slide

  19. Sample Android questions (verbal or whiteboard)
    1. Describe Fragments and Activities; how would you architect the use of each and
    why?
    2. How would you do Fragment to Fragment communication?
    3. What are the different launch modes?
    4. Which Activity lifecycle calls cancel background tasks?
    5. What are the downsides of AsyncTasks and why?

    View full-size slide

  20. Sample Android challenges (verbal or whiteboard)
    1. Architect a chat feature - how would you architect the UI, data and networking
    layers? How would you handle several hundred messages a second? How would
    you cache the data? How would you update the UI without overloading the main
    thread?
    2. Build out a custom findViewById()
    (these are real questions I’ve gotten)

    View full-size slide

  21. This sounds like way too much
    Relax - it’s ok to not know everything, especially if you’re trying for your first Android
    job.
    So what should I say if I don’t know something?

    I don’t know

    But here is how I would tackle something I don’t know (usually Android
    developer docs, talking to a senior dev, source code, etc)
    The good news is - if you make a couple of very basic Android apps, you will be able to
    answer a lot of these questions.

    View full-size slide

  22. Algorithms, Data Structures, and CS Fundamentals

    View full-size slide

  23. CS interview questions
    What do interviewers look for?
    Is the candidate familiar with common data structures and algorithms?
    Can they create an algorithm from a theoretical problem?
    Can they handle multiple layers of abstraction at once?
    Can they clearly communicate their thought process? Their problem-solving process?
    How they approach a difficult problem?

    View full-size slide

  24. CS interview questions - do I really need to know this stuff?
    Yes.
    (unfortunately)
    This doesn’t mean you need to be an expert, but there are some fundamentals all
    interviews expect you to know.

    View full-size slide

  25. Data structures to know

    Strings

    Arrays

    Lists

    HashMaps and HashTables

    LinkedLists
    (Trees and graphs are less common, though used more by FAANGs)
    Be comfortable with how these work in your language of choice

    View full-size slide

  26. Algorithms to know

    Search:

    Binary Search

    Depth First search

    Breadth first search

    Sort: Quicksort, Bubble Sort, MergeSort

    Dynamic Programming

    Recursion (usually this is the “reversing a linkedlist” question)

    View full-size slide

  27. Concepts to know

    Big O notation

    Time complexity of common operations in each data structure, in Big O notation?

    Common operations: Insert, Remove, Search, Sort
    Example questions:
    What is the time complexity of adding items to a list vs array?
    What is the time complexity of sorting an array with bubble sort?

    View full-size slide

  28. Sample questions (verbal or whiteboard)
    1. Explain Arrays vs LinkedLists
    2. Can you reverse a LinkedList using recursion?
    3. Insert a Node at a given position in a list
    Often, you’re expected to use data structures and algorithms in your coding challenges

    View full-size slide

  29. How can I prep?
    1. HackerRank/LeetCode challenges
    2. Cracking the Coding Interview
    3. If you want to learn from scratch, try online courses in Data Structures and
    Algorithms

    View full-size slide

  30. What if I don’t have a CS background?
    Be honest
    Do some research. If you learn nothing else, learn:

    What are arrays and how to create/use them in code (and why)

    Hashmaps and how to create/use them in code (and why)

    Knowing something will go a long way further than not having any knowledge at
    all. A little effort will demonstrate “ability to learn”.
    Focus on learning ability!

    View full-size slide

  31. Non-technical questions

    View full-size slide

  32. Non-technical interview questions
    What do interviewers look for?
    Has the candidate shown themselves to be a quick learner? (this is especially important
    if you’re just starting out)
    Is this person a good team player?
    Can the candidate clearly communicate when they’re stuck, what they don’t know, and
    how they think?
    Has the candidate shown independence and ambition?

    View full-size slide

  33. Non-technical interview questions
    What do interviewers look for?
    This usually focuses on your resume and past experience
    Have anecdotes ready about:

    Learning ability:

    How fast you went from 0 to pushing up working code to Git

    Times when you figured out solutions to hard problems

    Times when you had difficult conversations and resolved them

    View full-size slide

  34. Non-technical interview questions
    How can I prep?
    Honestly, very similar to other types of interviews. Be honest, write clearly and
    concisely on your resume, and it really helps to have a few good anecdotes.

    View full-size slide

  35. Tips & Tricks

    View full-size slide

  36. Sumayyah’s secrets to success:

    Coding is a skill - it gets better with practice and feedback.

    Interviewing is a skill - it gets better with practice and feedback
    Do both of these as much as you can.
    Take notes on every interview you go on. Write down the questions you got, how you
    approached it, what the answers were. This will become an invaluable prep guide for
    the next round.
    Volunteering is a great way to put coding on your resume.

    View full-size slide

  37. How to interview the interviewers
    Ask them questions:

    What are you looking for in a candidate?

    What feedback do you have for me?

    What kind of work culture do you have here?

    What keeps you here at this job?
    Remember, it is illegal for interviewers to ask about your race, ethnicity, gender, sexual
    orientation, pregnancy status, marital status, country of origin, native language.
    If you get asked any questions about the above, don’t be afraid to push back.

    View full-size slide

  38. Remember:
    Companies want to hire people that will cost them as little training time as possible
    Rejection is very common! For many reasons!
    Companies will often err on the side of rejection to save themselves from an expensive
    “bad hire” situation

    View full-size slide

  39. Who’s hiring?
    FAANGs
    Startups
    What’s in between? Lots of companies!

    Banks and financial institutions with apps for clients

    Healthcare institutions/clinics that use patient portals

    Smart home/smart device product companies

    Utility and internet companies

    And lots more

    View full-size slide