Android Developer Interview Questions for Non-Tech Recruiters | DistantJob - Remote Recruitment Agency
Career Advice / Tech Candidates Assessment

Android Developer Interview Questions for Non-Tech Recruiters

Gabriela Molina
Journalist, Director of Content at DistantJob - - - 3 min. to read

Is your company looking to hire a talented Android developer? If you have experience in recruiting and hiring developers, this shouldn’t be a daunting task. Yet, if you don’t have a technical background, hiring an Android developer can be as hard as trying to start a diet on Monday. You might have candidates that have caught your eye, but without knowing what to ask, you can miss the best talent for your team. In this article, we will reveal 15 Android interview questions that Ihor, our Recrutiment Director, put together, to help you prepare for those upcoming interviews.

Android is ruling the app world. No operating system has the number of applications that Android has. This is partly because the prices of iPhones and Android devices are significantly different.

15 Android Interview Questions to Ask Your Candidate

If recruiting, interviewing, and selecting Android developers seems like too much to handle, there’s no need for you to take care of the entire process. Why don’t you leave it in the hands of the experts like us? At DistantJob, we’re happy to find you the most talented Android developer.

However, if you want to be on top of every step of the process, we’ve selected 15 Android interview questions for experienced developers that can serve you as a general guideline to get the talent you deserve. 

1. What are the different types of services in Android?

A Service is an application component that performs long-running operations in the background, even when the user is not interacting with the application. There are three types of services:

  1. Foreground service, that performs operations noticeable to the user.
  2. Background service performs an operation that isn’t directly noticeable for the user.
  3. Bound service that offers a client-server interface that allows components to interact with the service, send requests, and receive results. 

2. Explain each of the permission levels in Android

There are four permission protection levels in Android:

1)  Normal – It consists of a lower-risk permission that gives requesting applications access to isolated application-level features.

2)  Dangerous – This is a higher-risk permission. Any dangerous permissions requested by an application may be displayed to the user and require permission before proceeding.

3)  Signature – This is a permission that the system enables if the requesting application is signed with the same certificate as the application that declared the permission.

4)  SignatureOrSystem – A permission that the system grants only to applications that are in the Android system image or that are signed with the same certificate as the application that declared the permission. 

3. What is Android Data Binding?

The Data Binding Library is a support library that allows you to bind UI components in layouts to data sources in your app using a declarative format.

Layouts are often definined in activities with code that calls UI framework methods. For example, the code below calls findViewByld() to find a TextView widget and bind it to the username property of the viewModel variable:

TextView textView = findViewById ( ;

textView.setText (viewModel.getUserName () ) ;

The following example shows how to use the Data Binding Library to assign text to the widget directly in the layout file. This removes the need to call any of the Java code shown above.

    	android : text= @{viewmodel.username} “ />

Using Android Data Binding reduces boilerplate code which in turn helps your code to have stronger readability, less coupling, and easy to implement custom attribute and custom view. 

4. Explain the difference between Handler vs AsyncTask vs Thread

The three elements have different purposes. The Handler class is used to register to a thread and provides a simple channel to send data to this thread. And it also allows you to communicate back with the UI thread from another background Thread. The AsyncTask class encapsulates the creation of a background process and the synchronization with the main thread. And the Thread is basically the core element of multithreading. 

5. What is a ThreadPool

A ThreadPool is a tasks queue and a group of worker threads that allows it to run on multiple parallel instances of a task.  One of the benefits of using a ThreadPool is that it’s more efficient than having multiple operations waiting to run on a single thread. Plus, it helps you avoid the creation (and elimination) of a thread every time you require a worker thread. 

6. What is the difference between a fragment and an activity?

An activity consists of a focused operation that a user can perform (like sending an email).  Some activities are very simple, but others created by developers are arbitrarily complex. Activity implementations can make use of the Fragment class for purposes such as production of more modular code or building sophisticated interfaces or larger screens.

A fragment is essentially a modular section of an activity, with its own lifecycle and input events, and which can be added or removed at will. A fragment’s lifecycle is directly affected by its host lifecycle. 

7. What is an ANR error and what measures can you take to avoid it?

An ANR (Application Not Responding) error appears to the user when an Android application remains unresponsive for more than 5 seconds, usually because you’ve blocked the main thread. To avoid encountering ANR, an app should perform lengthy database or network operations in separate threads; you should move as much work off the main thread as possible. 

8. What are the seven lifecycle methods of Android activity and what is their purpose?

The seven lifecycle methods of Android activity are:

  • onCreate()
  • onStart()
  • onRestart()
  • onResume()
  • onPause()
  • onStop()
  • onDestroy()

Their purpose is to help structure your code around how you want an activity to perform throughout its lifecycle on the device. 

9. What are the capabilities of DDMS?  

DDMS stands for Dalvik Debug Monitor Server and it provides a wide array of debugging features such as screen capture, thread and heap information, network traffic tracking, incoming call and SMS spoofing, location data spoofing, post-forwarding services, among others. 

10. What are launch modes? Explain

A launch mode is the way in which a new instance of an activity is associated with the current task. Launch modes can be defined under two mechanism:

1)  Manifest file: When declaring an activity in a manifest file, you can specify how the activity should associate with tasks when it starts. Supported values include:

2)  Intent flags: Calls to startActivity() can include a flag in the Intent that declares how the new activity should be associated with the current task. 

11. List the components of the Android architecture

The components of the Android architecture are:

  1. Linux Kernel – The base layer of an application that directly interfaces with the device hardware.
  2. Native Libraries – Resting on top of the Linux Kernel are a set of open-source libraries, including the SQLite database, libc, and the WebKit browser engine.
  3. Android Runtime – The DVM is at the same level as the Native libraries and allows every Android app to run its own processes.
  4. Application Framework: It provides higher-level services, such as Activity Manager, Content Providers, Resource Manager, Notifications Manager, and the View System.
  5. Applications: The top layer is the Android App itself. 

12. What is the ViewHolder pattern? Why does it matter?

ViewHolder is a design pattern that can be applied as a way around repeated use of findViewById(). A ViewHolder holds the reference to the id of the view resource and calls to the resource will not be required after you “find” them: Thus performance of the application increases.

private static class ViewHolder {
  final TextView text;
  final TextView timestamp;
  final ImageView icon;
  final ProgressBar progress;
  ViewHolder(TextView text, TextView timestamp, ImageView icon, ProgressBar progress) {
    this.text = text;
    this.timestamp = timestamp;
    this.icon = icon;
    this.progress = progress;
public View getView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    view = // inflate new view
    ViewHolder holder = createViewHolderFrom(view);
  ViewHolder holder = view.getTag();
  // TODO: set correct data for this list item
  // holder.icon.setImageDrawable(...)
  // holder.text.setText(...)
  // holder.timestamp.setText(...)
  // holder.progress.setProgress(...)
  return view;
private ViewHolder createViewHolderFrom(View view) {
    ImageView icon = (ImageView) view.findViewById(;
    TextView text = (TextView) view.findViewById(;
    TextView timestamp = (TextView) view.findViewById(;
    ProgressBar progress = (ProgressBar) view.findViewById(;
    return new ViewHolder(text, timestamp, icon, progress);

13. How would you create a multi-threader Android app without using the Thread class

If you need to override the run() method and no other Thread methods, then the best way to create a multi-threader ap is by implementing Runnable. 

14. What is the main difference between ListView and RecyclerView?

The main difference between ListView and RecyclerView is that the ViewHolder pattern is entirely optional in ListView, but baked into RecyclerView. Another fundamental difference is that ListView only supports vertical scrolling while RecyclerView isn’t limited to vertical scrolling lists. 

15. What are three common cases for using an intent?

You can use an intent for:

  • Starting an activity: You can start a new instance of an Activity by passing an Intent to startActivity() method.
  • Starting a service: You can start a service to perform a one-time operation (such as downloading a file) by passing an Intent to startService().
  • Delivering a broadcast: You can deliver a broadcast to other apps by passing an Intent to sendBroadcast(), sendOrderedBroadcast(), or sendStickyBroadcast().

Not sure how to conduct the interview properly? DistantJob can help

If you’re not sure how to conduct an interview successfully or how to recruit efficient and effective Android developers for your business, don’t worry, you’re not alone. The IT industry is one of the most competitive when it comes to hiring talent, and not all companies can afford to pay Silicon Valley salaries.

The good news is that DistantJob exists! As a remote recruitment agency, we focus on recruiting remote Android developers that not only stand out because of their talent but also because they will be the perfect match for your company. We seek tech candidates that, besides having the skills, also will enjoy working for you. So, what are you waiting for? Contact us!  

Gabriela Molina

Gabriela Molina, the Executive Editor at DistantJob and Director of Content at ThinkRemote, combines her experience as a former freelance journalist with deep insights into remote work, technology, and recruitment best practices. Her diverse journalistic background covers a wide array of topics, positioning her as a knowledgeable voice in the tech and remote work sectors. Featured on platforms like Datasciencentral and Simpleprogrammer, Gabriela's expertise extends to shaping narratives around remote workforce strategies, making her contributions to DistantJob invaluable for those navigating the remote tech hiring landscape

Let’s talk about scaling up your team at half the cost!

Discover the advantages of hassle-free global recruitment. Schedule a discovery call with our team today and experience first-hand how DistantJob can elevate your success with exceptional global talent, delivered fast.

Subscribe to our newsletter and get exclusive content and bloopers

or Share this post

Let’s talk about scaling up your team at half the cost!

Discover the advantages of hassle-free global recruitment. Schedule a discovery call with our team today and experience first-hand how DistantJob can elevate your success with exceptional global talent, delivered fast.

Reduce Development Workload And Time With The Right Developer

When you partner with DistantJob for your next hire, you get the highest quality developers who will deliver expert work on time. We headhunt developers globally; that means you can expect candidates within two weeks or less and at a great value.

Increase your development output within the next 30 days without sacrificing quality.

Book a Discovery Call

What are your looking for?

Want to meet your top matching candidate?

Find professionals who connect with your mission and company.


    Talk with a senior recruiter.

    Fill the empty positions in your org chart in under a month.