How to Land a Job as an Android Engineer

Passed the interview and getting the offer letter in your hand

Gilang Kusuma Jati
Life At Moka
10 min readOct 7, 2018

--

Many companies run the business differently. It requires the best talent to join the board, especially startups. The investments in engineering talent are also so ambitious. That is because engineering takes the critical part on how startup winning “aha moment” for its products. In order to be able to deliver good products for customers, many companies set a very high bar for hiring. Yes, they only want to hire the best. If you have a plan to join a good company, you need to set your sight high to get hired and of course, you have to pass the interview process.

Hi. My name is Gilang Kusuma Jati. I am a Lead Software Engineer who works for Moka. In this article, I am going to share how to get a job as an Android Engineer and passed the interview.

General Process

The interview process could be so much different in many companies depending on its standard. In general, many startups will ask a lot of questions to know how familiar candidates with the platform that the company wants to build. In case you are applying for Software Engineer — Android, it demands a lot of knowledge about Android, Java, Kotlin, and another part that relate to Android application development that includes designing user interfaces, researching APIs, writing code, testing, debugging, etc. Besides the technical questions, there will be personality questions to know whether you have a good work ethic and would generally make a good fit with the company culture, including your soft skill to communicate and collaborate with others.

An interview is a great, fast and easy way to sense and measure your level of understanding of your skill set.

On the other hand, many big tech companies may have several rounds for an interview process. After submitting a job application and CV, there will be an initial phone screen interview with the recruiter. The recruiter will ask you questions about your background and interests. If you are the lucky one, you will have an initial phone screen interview with technical recruiter, who will ask you about technology and stuff. Besides background and interests, sometimes technical recruiter asks about basic computer science/informatics engineering that you have learned at university. If the background and interest match with the company needs, the candidate will be invited for the next round of problem-solving focusing on algorithms, data structure and other concepts that are not specific to a platform (platform independent). Not all companies require problem-solving phase, but they are replaced with project sessions, making an Android application from scratch by using specified requirement, flow, UI and data. The project should be presented by candidates.

The last round is an interview session with specific users in the company, that might be the team members that you would work with, so they may ask some personalities questions to assess how well you’d fit in the team. If you passed this last round, the offer will be in your hand.

Preparation

When your top goal is becoming an Android Engineer, it’s important to put some efforts to bring together a portfolio of what you built, likes your side projects or projects from an online course. Some of the interviewers also want to see your code. If you haven’t pushed all of your (non-private) projects code on GitHub (or somewhere else that can be easily accessed), make sure all of your projects are available before sending your CV to show that you can write many lines of code very well. After that, you should prepare to answer questions about your code, like how did you design and architect this project? What was the biggest technical challenge? How did you make sure your testing code has a good code coverage?

The more questions you got from the interviewers, the more opportunities to light up your experiences.

Keep in mind that each company has a specific purpose to hire you. Big tech companies may need an Android engineer just to do the job and to do it perfect. While startups may need an open-minded and fast learner engineer who could work on other technologies as well. So you shouldn’t focus only on the technical things, do some search about the company, try and explore their apps before the interview and prepare your question to ask the interviewer because an interview is a conversation, not a one-way interview.

What We are Looking for from Android Candidates

As we know that B2C (business to customer) or C2C (customer to customer) company build the core logic products on backend meanwhile for B2B (business to business) startup likes Moka, up to 80% of the logic is reassembled on the mobile side. Moka Android app is NOT ONLY a front-end application that calling the API, parse the response from the server, store the data on local DB then show it to users. But also handle a complicated calculation for a shopping cart, applying multiple discounts, promo detection for combination items, parallel bill synchronization within multiple devices, order tracking in several printers, hardware integrations, split the bill with multiple payment methods, and another combinatoric optimization. All of those products require engineers who have a good problem-solving skill.

Moka Android apps have 98% crash-free users.

Having 98% crash-free users on hundred-thousands active Android devices to handle a million of transactions per month (and it’s significantly growing), billion click events each day, while supporting offline mode and could run smoothly in low-end devices is not easy. These achievements are NOT coming from an engineer who only knows how to g̶̶̶̶̶̶̶e̶̶̶̶̶̶̶t̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶s̶̶̶̶̶̶̶h̶̶̶̶̶̶̶i̶̶̶̶̶̶̶t̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶d̶̶̶̶̶̶̶o̶̶̶̶̶̶̶n̶̶̶̶̶̶̶e̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶b̶̶̶̶̶̶̶y̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶c̶̶̶̶̶̶̶o̶̶̶̶̶̶̶p̶̶̶̶̶̶̶y̶̶̶̶̶̶̶i̶̶̶̶̶̶̶n̶̶̶̶̶̶̶g̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶a̶̶̶̶̶̶̶n̶̶̶̶̶̶̶d̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶p̶̶̶̶̶̶̶a̶̶̶̶̶̶̶s̶̶̶̶̶̶̶t̶̶̶̶̶̶̶i̶̶̶̶̶̶̶n̶̶̶̶̶̶̶g̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶s̶̶̶̶̶̶̶o̶̶̶̶̶̶̶m̶̶̶̶̶̶̶e̶̶̶̶̶̶̶o̶̶̶̶̶̶̶n̶̶̶̶̶̶̶e̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶e̶̶̶̶̶̶̶l̶̶̶̶̶̶̶s̶̶̶̶̶̶̶e̶̶̶̶̶̶̶’̶̶̶̶̶̶̶s̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶c̶̶̶̶̶̶̶o̶̶̶̶̶̶̶d̶̶̶̶̶̶̶e̶̶̶̶̶̶̶ ̶̶̶̶̶̶̶f̶̶̶̶̶̶̶r̶̶̶̶̶̶̶o̶̶̶̶̶̶̶m̶̶̶̶̶̶̶ ̶t̶h̶e̶ ̶i̶n̶t̶e̶r̶n̶e̶t̶ implements a functionality in Android. These come from a great engineering team who knows how to pick a data structure properly, how to make code testable, scalable, maintainable, free from bugs, easy to understand and knows what is actually going on with the code. These made Moka remains as a leading cloud-based POS (point-of-sales) company in Indonesia.

In our Android team at Moka, we build the best product and reassemble the best techniques to serve our customer very well. The ambitions to make every pixel is perfect, every transition accurate & responsive and every integration seamless & magical leads our android-engineering division set up a high bar for everyone who wanna join this ship.

Men behind the success of Android in Moka

All challenges and complexities in Moka demand the best talents. We do not only expect the candidates to be well grounded in topics like good software design principles, scalable code architecture, and testing but also has a strong basis in Data Structure and Algorithm. Why this basic become so important? Unlike frameworks like Spring, Rails, Grails, Django, Laravel, or whatever you named it will be outdated and replaced with others in the future while Data Structure and Algorithm are universal and timeless, whatever programming language you choose, they will be there. This basic knowledge will also differentiate you from a normal/average programmer that just writes code and spends entire life writing CRUD applications.

Being able to write a code in Kotlin and having knowledge in Android Architecture Component is also a mandatory skill for Android Engineer nowadays. Kotlin eliminates many runtime errors at compile time while Android Architecture Component helps us to build robust, testable, maintainable apps and simplify long-term maintenance.

Besides all of that technical knowledge, you also have to show that you are a lifelong learner who can learn on daily basis and write high-quality code.

High quality code is coming from the brain of engineers who able to learn on daily basis. In Moka, we avoid having a team with a good CV but zero learning capability.

Topics

Here are the topics that you need to prepare before coming to an Android interview.

  1. Android. As an Android engineer, you have to familiar with 4 main components of Android, there are Activity, Service, Broadcast Receiver and Content Provider. Beside knowing Activity and Fragment’s lifecycle, you also have to know how to persist data in Android and how to perform a long running operation without blocking main or UI thread that can cause frames drawing to drop that lead to application lag. How ConstraintLayout could improve rendering performance. How to make RecyclerView could display multiple view type, here is a great article by Gilbert Christopher to display multiple view type in RecyclerView. How to utilize DiffUtil to improve performance when there are changes in the data. How to prevent an Android app from memory-leak.
    You also have to know when to use Serializable or Parcelable. Which one better between AsyncTask, Loader, Thread, or Rx, and explain why. Here is a great online course to refresh your Android knowledge, Developing Android Apps.
  2. Java. You have to know when to use primitive types rather than class type. Why we need to use float rather than double. How to utilize polymorphism, inheritance, abstraction, and encapsulation to make the code concise. When to declare a class or method to be generic. When to use a wild-card. When to choose between abstract class or interface. When to use enum rather than declaring integer constants. What happens when we do not give an access modifier like private, protected or public to a member variable in a class. How to make a variable or method thread-safe. How Collections.sort works. How to makes a particular collection can be sorted by Collections.sort. You can prepare and learn the Java language in a fun way from the Head-First Java book.
  3. Kotlin. You have to know what Kotlin provides to speed-up application development compare to Java. When to declare a variable as nullable or non-nullable. How to declare extension functions and extension properties. When to use String rather than StringBuilder. When to use == and ===. How to define a static method in Kotlin. Here are the great books to start learning Kotlin, Kotlin in Action and Kotlin for Android Developers. This is also a good online course for Kotlin, Kotlin Bootcamp for Programmers.
  4. Data Structure. Beside ArrayList and HashMap, there is another data structure that can be used while developing Android apps. There are LinkedList, ArrayList and Vector which implements interface List. There are HashMap, TreeMap, and LinkedHashMap which implements interface Map. There are HashSet, TreeSet, and LinkedHashSet which implements interface Set. There are Stack, Queue, PriorityQueue, SparseArray, etc. You have to know how they store their data, how the operation among them work and which case they can perform better compare to other.
  5. Algorithm. Which one better, quick-sort or merge-sort. How to estimate the running time of the algorithm. How to search data in sorted collections. In case we have unsorted data and want to search any particular data, which one better, linear search or sorting then do a binary search. How to find if a linked list contains a cycle. How to reverse LinkedList elements. You can sharpen your algorithmic thinking with Hackerrank.
  6. Design Pattern. You have to know the observer pattern, the decorator pattern, the factory pattern, the singleton pattern, the command pattern, the adapter & facade pattern, the iterator & composite pattern, and another pattern. Here is a very good book to learn about design pattern, Head First Design Patterns.
  7. Architecture. You have to be familiar with MVC (model-view-controller), MVP (model-view-presenter), MVVM (model-view-viewmodel), MVI (model-view-intent), MVP-VM (model-view-presenter-viewmodel) with its pros and cons.
  8. Dependency Injection. You have to know what dependency injection is, what kind of problem that solved by using dependency injection, how it’s implemented. What makes Dagger 2 better than Dagger 1? Which one better, Dagger 2 or KOIN? Are there any other dependency injection solutions for Android? What’s good/bad about them?
  9. Testing. How to make sure that unit test has a good code coverage. How to perform a unit test. How to mock an object. How to test the presenter (in MVP) or view model (in MVVM).
  10. Others. What is a good code? How to handle code duplication. How to make code testable. How to create a proper documentation for class and method.

Questions

Each company has a different question while interviewing candidates, there could be a simple question or case studies with very broad questions. You are expected to clarify and follow up with some solutions or be comprehensive on possible answers. So here is one example question for the interview and how to nail it.

If we have an Android application and it needs to be able to share data with other applications, how we can achieve that?

Sharing data between apps can be done by using one of the Android components called ContentProvider. ContentProvider interacts with data persistence like SQLite database, SharedPreference of maybe data in the backend. ContentProvider can be accessible by any Apps on Android device via URI. In order to share our apps data to other apps, at first, we have to setup ContentProvider and export it via AndroidManifest. In order to use data from other apps, we have to know what is the URI of ContentProvider provided by other apps. With that URI, we have to use ContentResolver to be able to communicate with ContentProvider. Chat messaging application like Whatsapp dan Telegram used ContentProvider of Contact Apps to be able to receive the contact list on Android phone.

Here are another sample interview questions including an answer to help you prepare for an Android interview. Do understand the answer and don’t memorize it.

The correct answer is not the most important thing, but the way you solve the problem is the most critical part that interviewers are looking for.

Thanks for reading!

Hope you find this useful. Don’t forget to clap if you found the article helpful.

--

--