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. 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
  2. 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
  3. Focus: you have a short amount of time - what

    should you prep? Because interviewing is a BIG topic!
  4. 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
  5. 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
  6. What kind of technical questions are there? 1. Coding ability

    2. Android expertise and knowledge 3. CS fundamentals - aka algorithms and data structures
  7. 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)
  8. 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
  9. 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
  10. 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.
  11. 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?
  12. 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?
  13. 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)
  14. 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?
  15. 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)
  16. 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.
  17. 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?
  18. 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.
  19. 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
  20. 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)
  21. 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?
  22. 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
  23. 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
  24. 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!
  25. 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?
  26. 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
  27. 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.
  28. 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.
  29. 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.
  30. 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
  31. 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
  32. Q&A