Hire Android Developer Hard android interview questions even the most seasoned candidates might consider a challenge Tom Potanski | 16 min read | Language: English

German Updated on 12 July 202016 min readLanguage:

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.

Desired skills of an Android developer Before you proceed with the interview, it is important to quickly screen the resumes to find out whether the candidate is suitable for the position he is applying for. Quick elimination of week candidates may save you hours of unfruitful interviews, so take a close look at primary features and skills that junior, mid and senior Android developer should possess: Junior Android Developer Up to 3 years of related experience Personal portfolio including simple apps Ability to work under the supervision of a mid developer

Mid Android Developer Up to 5 years of experience with developing mobile apps Skills enough to design complex apps independently Ability to develop an app without technical supervision

Senior Android Developer Over 5 years of experience with developing mobile apps Experience with leading and supervising large projects Ability to perform the role of a project’s leader

Hard and soft skills Android developer should possess Needless to say, the essential requirements mentioned above are just the core of every Android developer, who should also possess numerous additional skills. Technical expertise is the most vital for each engineer, so we will start by listing the most desired hard skills of a mobile apps programmer. Technical skills Expertise in Java or Kotlin – These are the top two programming languages for Android app development. We will shortly describe both of them at the end of this article. An android developer should have advanced knowledge of at least one of them.

– These are the top two programming languages for Android app development. We will shortly describe both of them at the end of this article. An android developer should have advanced knowledge of at least one of them. Excellent knowledge of Android SDK – Android Software Development Kit is a set of tools used for building Android apps. It consists of SDK Tools – required to design applications regardless of Android’s version, and Platform Tools, modified to adjust apps to particular versions of Android.

– Android Software Development Kit is a set of tools used for building Android apps. It consists of SDK Tools – required to design applications regardless of Android’s version, and Platform Tools, modified to adjust apps to particular versions of Android. Knowledge of APIs – in order to check whether a candidate is proficient with APIs, you can test whether he knows how to implement APIs like Graph, Crashlytics or Flurry in the mobile app.

– in order to check whether a candidate is proficient with APIs, you can test whether he knows how to implement APIs like Graph, Crashlytics or Flurry in the mobile app. Basic understanding of back-end – it is not an essential skill, but may turn out to be helpful for an Android programmer during the development process.

– it is not an essential skill, but may turn out to be helpful for an Android programmer during the development process. Basic understanding of XML – although XML, standing for Extensible Markup Language, is predominantly used for web apps, Android developers may often find it useful while transferring data between web servers and mobile apps. Non-technical skills Passion for technology – some could say that developer’s work is repetitive and consists in coding 40 hours every week. A programmer with a passion for his work should find his job absorbing to maintain the efficiency of his work.

– some could say that developer’s work is repetitive and consists in coding 40 hours every week. A programmer with a passion for his work should find his job absorbing to maintain the efficiency of his work. Up to date with design & mobile trends – it is absolutely essential for an Android developer to stay up to date with design and mobile trends in order to be able to build a user-friendly app, which will satisfy the needs of even the most demanding users in terms of functionality and user experience.

– it is absolutely essential for an Android developer to stay up to date with design and mobile trends in order to be able to build a user-friendly app, which will satisfy the needs of even the most demanding users in terms of functionality and user experience. Agile work methodology – an engineer should be willing to develop apps under agile work methodologies such as Scrum or Extreme Programming, as they are nowadays favored by most entrepreneurs and business owners.

– an engineer should be willing to develop apps under agile work methodologies such as Scrum or Extreme Programming, as they are nowadays favored by most entrepreneurs and business owners. Communication skills – programming is all about teamwork, therefore it is absolutely essential for a developer to be able to communicate effectively and solve interpersonal problems when needed.

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. 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. 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. 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. 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. 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. 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. If you need more inspiration, visit android.com. 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!

Programming languages to consider when you want to hire Android developer Basically, there are two main programming languages used for the purpose of designing Android apps – Java and Kotlin. It is an absolute must-have in the candidate’s resume and even a junior Android developer should know at least one of them like the back of his hand. Should you recruit a developer to update an existing Android app, you have to hire a developer who is proficient at the original language of this app. On the other hand, if you design a mobile application from scratch, you may be wondering which of the languages will be more suitable for your project. Below we present a short description of each of the languages in order to let you better understand the differences between these two languages. Java Java is the most popular programming language for Android apps, as Android itself was written in Java. It is also the most supported by Google and has a vast online support community which can help a developer who encounters troubles regarding his code. On the other hand, its complexity may result in delays with the project’s delivery – particularly if you want to hire less experienced developers. Kotlin Kotlin is a language explicitly designed to build Android apps. It first appeared in 2011 and can interoperate with Java. Kotlin is simpler than Java and does not contain many unnecessary features that slow down the development process. In May 2019 Google announced that from then on Kotlin became a preferred programming language for Android apps development.