Hire Android Developer Freelancer

Hard android interview questions even the most seasoned candidates might consider a challenge
Mobile apps help organizations create brand awareness, deliver personalized content, boost customer engagement, reduce costs, and increase sales. The popularity of mobile apps can be recognized by the fact that more than 2.5 million apps are available on Google Play. The growth over the years cannot be doubted and with the constant development of technologies, like the Internet of Things, Chatbots, Artificial Intelligence, Machine Learning, Blockchain, Augmented and Virtual Reality we can definitely say that it does not appear like something is about to change in the near future. This leads us to a greatly significant conclusion. The demand for Android developers will be reaching the highest point, but so will the number of applicants for this job. Whether you want to hire a software engineer or you are an Android developer yourself, you must be aware that the most crucial element of the hiring process is the interview. This is the part where not only the applicant’s knowledge should be thoroughly verified, yet also his thinking process. In order to achieve the desired results, you need to be perfectly prepared for the interview.

Red flags to watch out for when hiring

The ultimate goal of an interview is to verify if the applicant is a good (or bad) fit to a company. Here are some signs that should warn employers about a potentially mediocre employee.

  1. No references. References are a developer’s business card. If one does not have them, it might suggest that the candidate is unable to build rapport with colleagues, succeed in their assigned role, or positively contribute to the company.
  2. No personal weakness. It may suggest that the candidate will refuse to admit his mistakes, which leads to assigning blame somewhere else. These types of circumstances tend to have a negative impact on the team environment.
  3. Lying or refusing to say that you do not know something. Showing weakness is not bad, on the contrary, trying to pretend that you know everything is.
  4. A lack of interest. What is absolutely essential is to have a team of passionate people. If someone does not feel committed to what he is doing, he is not only going to work ineffectively, but also not going to care about the impact he has on a team as a whole.
  5. Not being confident. The best candidates are confident about their decisions and sincere in their reasoning. Regardless of a company’s culture, every organization wants someone who can take leadership of their own actions, both positive and negative.
  6. Overly concerned about money. That might be a sign that the applicant’s only motivations are earnings. Nothing stops this type of person from leaving the job in case of getting a better (money wise) offer.
The interview part is where not only the applicant’s knowledge should be thoroughly verified, but also his thinking process.

Interview questions many candidates will consider a challenge

Below we would like to present you a few interview questions even the most qualified candidates might consider a challenge.

1. Permissions are a vital part of the Android ecosystem. Describe all of the following types of permissions: Normal, Signature, Dangerous and Special permissions.

Normal permissions – cover areas where your app needs to access data or resources outside the app’s sandbox, but where there is very little risk to the user’s privacy or the operation of other apps. For example, permission to set the time zone is a normal permission. If an app declares in its manifest that it needs normal permission, the system automatically grants the app that permission at install time. The system does not prompt the user to grant normal permissions and users cannot revoke these permissions.

Signature permissions – the system grants these app permissions at install time, but only when the app that attempts to use permission is signed by the same certificate as the app that defines the permission.

Dangerous permissions – cover areas where the app wants data or resources that involve the user’s private information, or could potentially affect the user’s stored data or the operation of other apps. For example, the ability to read the user’s contacts is a dangerous permission. If an app declares that it needs a dangerous permission, the user has to explicitly grant the permission to the app. Until the user approves the permission, your app cannot provide functionality that depends on that permission. To use dangerous permission, your app must prompt the user to grant permission at runtime.

Special permissions – there are a couple of permissions that don’t behave like normal and dangerous permissions. SYSTEM_ALERT_WINDOW and WRITE_SETTINGS are particularly sensitive, so most apps should not use them. If an app needs one of these permissions, it must declare the permission in the manifest, and send an intent requesting the user’s authorization. The system responds to the intent by showing a detailed management screen to the user.

2. Android 8.0 (Oreo, API 26) introduced a number of limitations on Background Services, in order to improve the general user experience. Describe those limitations.

Background execution limits:

In order to improve device performance, the system limits certain behaviors by apps that are not running in the foreground. Specifically:

  • Apps that are running in the background now have limits on how freely they can access background services.
  • Apps cannot use their manifests to register for most implicit broadcasts (that is, broadcasts that are not targeted specifically at the app).

By default, these restrictions only apply to apps that target O. However, users can enable these restrictions for any app from the Settings screen, even if the app has not targeted O.

Android background location limits: In order to preserve battery, user experience, and system health, background apps receive location updates less frequently when used on a device running Android 8.0. This behavior change affects all apps that receive location updates, including Google Play services.

These changes affect the following APIs:

  • Fused Location Provider (FLP)
  • Geofencing
  • GNSS Measurements
  • Location Manager
  • Wi-Fi Manager
    The best candidates are confident about their decisions and sincere in their reasoning.

    3. The last callback in the lifecycle of an activity is onDestroy(). The system calls this method on your activity as the final signal that your activity instance is being completely removed from the system memory. Usually, the system will call onPause() and onStop() before calling onDestroy(). Describe a scenario where onPause() and onStop() would not be invoked.

    onPause() and onStop() will not be invoked if finish() is called from within the onCreate() method. This might occur, for example, if you detect an error during onCreate() and call finish() as a result. In such a case, though, any cleanup you expected to be done in onPause() and onStop() will not be executed. Although onDestroy() is the last callback in the lifecycle of an activity, it is worth mentioning that this callback may not always be called and should not be relied upon to destroy resources. It is better have the resources created in onStart() and onResume(), and have them destroyed in onStop() and onPause(), respectively.

    4. How to you supply construction arguments into a Fragment?

    Construction arguments for a Fragment are passed via Bundle using the Fragment.setArgument(Bundle) method. The passed-in Bundle can then be retrieved through the Fragment.getArguments() method in the appropriate Fragment lifecycle method. It is a common mistake to pass in data through a custom constructor. Non-default constructors on a Fragment are not advisable because the Fragment may be destroyed and recreated due to a configuration change (e.g. orientation change). Using #setArguments()/getArguments() ensures that when the Fragment needs to be recreated, the Bundle will be appropriately serialized/deserialized so that construction data is restored.

    5. How would you check for the presence of a Compass sensor on the system using the hasSystemFeature() method?

    The sensor framework that forms a part of the Android package has Sensor and SensorManager classes. But these classes do not provide the hasSystemFeature() method. So they cannot be used for evaluating a system’s capabilities. The PackageManager class can, in fact, be used to find out information about the application packages available on a given device. One way of checking the presence of a Compass sensor on the system is:

    PackageManager myCompass = getPackageManger();
    If (!myCompass.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device lacks a compass, disable the compass feature

    6. Android 5.0 (Lollipop) introduced a new, more robust API for handling all Camera operations. That API is available under android.hardware.camera2 package. How would you turn on Auto Exposure and Auto Focus in this API when capturing a single image from the camera sensor?

    The answer to this question is our secret – almost nobody outside of DevsData can answer it 😉 Only our developers who made it through our interview process. This is the way of how we are able to make sure to hire the best of the best!

    Take away

    The aim of Android developer interviews is to test the applicant’s technical knowledge and skills to the fullest. At DevsData we believe that the above-presented questions will help you to get thoroughly prepared for the interview. Anyway, there is one thing related to the interview that is rarely distinguished, yet greatly significant – soft skills. Programming revolves mostly around teamwork. It might not matter how huge your technical knowledge is if you are not able to communicate properly or organize your work. The key to being an exceptional programmer is finding a balance between what your knowledge is and how you work. So do not rest on laurels, keep developing.
    If someone does not feel committed to what he is doing, he is not only going to work ineffectively, but also not going to care about the impact he has on a team as a whole.

    Thank you

    We'll get back to you as soon as possible.

    Got a project idea?

    Fill in an enquiry form and we’ll get back to you as soon as possible.


    Unbeatable tech experience

    “I interviewed about a dozen different firms. DevsData LLC is truly exceptional – their backend developers are some of the best I’ve ever worked with. I’ve worked with a lot of very well-qualified developers, locally in San Francisco, and remotely, so that is not a compliment I offer lightly. Their depth of knowledge and their ability to get things done quickly.
    Nicholas Johnson