10 вопросов, которые помогут нанять лучшего Android-разработчика

Мобильные приложения  —  это эффективный инструмент для продвижения бизнеса. С помощью мобильных приложений можно гораздо успешней привлекать клиентов, что приводит к увеличению прибыли. Причина очевидна: пользователи смартфонов проводят больше времени в мобильных приложениях, чем на сайтах.

Кандидат, идеально подходящий на должность разработчика мобильных приложений, обязан проявить на собеседовании следующие компетенции и качества:

  • владение языком Java;
  • глубокие технологические знания;
  • подкованность в вопросах дизайна;
  • опыт работы с кроссплатформенными решениями;
  • критическое мышление;
  • адаптивность к инновациям;
  • желание учиться;
  • пространственное воображение.

Как подобрать такого специалиста? Например, чтобы нанять разработчика Angular JS, необходимо провести собеседование по Angular JS с соответствующими вопросами.

Аналогичным образом при найме Android-разработчика нужно знать, какие именно вопросы подойдут для собеседования. Приведенные ниже помогут найти подходящего кандидата.

  1. Каковы основные компоненты Android-приложения?
  2. Назовите 7 методов жизненного цикла Android Activity и их назначение.
  3. Почему вы решили стать Android-разработчиком? Назовите преимущества платформы Android.
  4. Можете ли вы написать быстрый сценарий для запуска новой Activity в приложении?
  5. В чем разница между SQLite и клиент-серверными системами управления базами данных?
  6. Определите компоненты архитектуры Android.
  7. Перечислите 4 класса Java, важных для использования датчиков на Android-платформе.
  8. Объясните, что такое DDMS и каковы функции этой утилиты?
  9. Как использовать метод hasSystemFeature() для проверки наличия Compass Sensor (магнитометра) в системе?
  10. Назовите меры, которые можно предпринять для предотвращения ANR.

1. Каковы основные элементы Android-приложения?

С этого вопроса стоит начать, чтобы проверить, знает ли кандидат основы разработки приложения с нуля.

К ним относятся:

  • вход в систему;
  • просмотр элементов пользовательского интерфейса;
  • намерение для вызова отдельных компонентов;
  • сервис;
  • контент-провайдер для обмена данными;
  • фрагменты;
  • Android-манифест.

2. Назовите 7 методов жизненного цикла Android Activity и их назначение

Жизненный цикл Android Activity определяется семью методами, каждый из которых имеет свое назначение, и кандидат должен знать о них. Вот эти методы.

  • onCreate (): первое создание Activity с выполнением статических настроек, включающих создание представлений и привязку данных к спискам.
  • onStart (): Activity запущена и становится видимой пользователю.
  • onRestart (): Activity остановлена, прежде чем будет запущена снова.
  • onResume (): Activity видна на экране и доступна для взаимодействия с пользователем.
  • onPause (): Activity переходит в фоновый режим, но (пока) не остановлена.
  • onStop (): Activity остановлена и не видна на экране, но хранится в памяти.
  • onDestroy (): Activity уничтожена и не хранится в памяти.

Кандидат должен обладать экспертными знаниями по данному жизненному циклу. Правильное структурирование кода зависит от выполнения деятельности на каждом этапе жизненного цикла.

3. Почему вы решили стать Android-разработчиком? Назовите преимущества платформы Android

Кандидат должен дать убедительный ответ на этот вопрос, проявив понимание того, как эффективно использовать платформу и как оптимизировать ее применение. Он также должен знать преимущества Andriod-платформы, включая открытый исходный код, выполнение программ с помощью виртуальной машины DVM (Dalvik Virtual Machine), разнообразные особенности платформ и опыт работы с Java.

Эта платформа не требует платы за разработку, лицензию и распространение. Благодаря открытому исходному коду, она получила широкое распространение среди производителей мобильных устройств.

4. Можете ли вы написать быстрый сценарий для запуска новой Activity в приложении?

Этот вопрос проверяет понимание кандидатом явного намерения, необходимого для запуска Activity. Activity, которую должен запустить разработчик, определяется с помощью быстрого сценария, называемого явным намерением.

5. В чем разница между SQLite и клиент-серверными системами управления базами данных?

В Android-приложениях используется библиотека SQLite, которая представляет собой реляционную базу данных с открытым исходным кодом. В отличие от других клиент-серверных отношений в различных системах управления базами данных, движок SQLite связан с приложением. Он не требует сервера, является автономным и транзакционным.

Библиотеку SQLite можно вызвать динамически. В ней используются простые вызовы функций, что уменьшает задержку доступа к базе данных.

6. Определите компоненты Android-архитектуры

Этот вопрос позволит оценить общее представление разработчика о проектировании приложений. Ниже  —  пять основных компонентов программного обеспечения Android.

  • Linux Kernel (уровень Linux-ядра). Это интерфейс между программным и аппаратным обеспечением. С Linux Kernel взаимодействуют драйверы аппаратного обеспечения, включающие клавиатуру, камеру и дисплей.
  • Native Libraries (уровень нативных библиотек). Следующим уровнем в архитектуре Android является группа библиотек с открытым исходным кодом. К нативным библиотекам относятся браузерный движок WebKit, libc (стандартная библиотека языка C), а также база данных SQLite.
  • Android Runtime (уровень среды выполнения). Наряду с нативными библиотеками, Android снабжен виртуальной машиной Dalvik. Она позволяет Android-приложениям запускать свои процессы.
  • Application Framework (уровень фреймворка приложений). Через этот компонент архитектуры Android предоставляются сервисы более высокого уровня. Разработчик должен знать: View System (система представлений), Notifications Manager (менеджер уведомлений), Resource Manager (менеджер ресурсов), Content Providers (контент-провайдеры), Activity Manager (менеджер Activity). Этот компонент обеспечивает работу приложений и классов Java.
  • Applications (уровень приложений). Это самый верхний слой приложения. На нем устанавливаются приложения, и разработчики должны разбираться в работе этого уровня лучше всего.

7. Перечислите 4 класса Java, важных для использования датчиков на Android-платформе

На Android-платформе используются датчики, и разработчик должен быть знаком с 4 классами Java, необходимыми для работы с этими датчиками. В число датчиков, часто используемых в приложениях, входят акселерометр и гироскоп.

Эти 4 класса Java включают следующие.

  • SensorManager. Регистрация SensorEventListener, управление сбором данных и калибровка выполняются с помощью методов, представленных в этом классе.
  • Sensor. Возможности Sensor могут быть определены с помощью планов, представленных в этом классе. Он создает конкретный датчик как экземпляр.
  • SensorEvent. Объекты SensorEvent, создаваемые этим классом, предоставляют информацию о событиях датчиков.
  • SensorEventListener. Существует два метода коллбэка, с помощью которых можно получать уведомления о событиях датчика. Данный класс обеспечивает именно этот функционал.

8. Объясните, что такое DDMS и каковы функции этой утилиты?

Отладочная утилита, поставляемая вместе с Android, называется DDMS (Dalvik Debug Monitor Server, сервер мониторинга отладки Dalvik). В число возможностей DDMS входят:

  • захват изображения экрана;
  • информирование о динамической памяти и потоках;
  • эмулирование SMS, входящих вызовов, данных о местоположении;
  • отслеживание сетевого трафика;
  • переадресация портов;
  • моделирование задержек, скорости и состояния сети.

Разработчик должен быть знаком с функциями DDMS.

9. Как использовать метод hasSystemFeature() для проверки наличия Compass Sensor (магнитометра) в системе?

Методы hasSystemFeature() не предоставляются ни Sensor, ни SensorManager. Sensor или SensorManager могут получать необработанные данные датчика вместе с прямым доступом.

Если для оценки возможностей системы требуется получение информации через пакеты приложений устройства, необходимо использовать класс PackageManager.

10. Назовите меры, которые можно предпринять для предотвращения ANR

Одной из наиболее серьезных проблем, беспокоящих пользователей Android, является ошибка ANR (Application Not Responding, дословно “приложение не отвечает”). Подобные проблемы возникают, когда приложение в основном использует главный поток. Избежать их можно, выполняя сетевые операции или работу с громоздкими базами данных в отдельных потоках.

Для разгрузки потока пользовательского интерфейса можно использовать IntentService (в случае приложений, интенсивно работающих с задачами). Разработчик должен быть знаком с этой стратегией.

Ищите квалифицированных Android-разработчиков

Мобильные приложения выведут компанию на новый уровень, но для этого нужен хороший Android-разработчик. После поиска в интернете и составления короткого списка потенциальных разработчиков необходимо провести с ними собеседование и задать правильные вопросы.

При собеседовании с разработчиком вы должны иметь полную ясность в отношении своих требований. Если вы не знакомы с технологическими аспектами, пригласите на собеседование технического специалиста. Наблюдайте за ростом прибыли с помощью правильного разработчика!

Разработчики должны тестировать свои API и работать с ними так же, как API-пользователи, обеспечивать масштабируемость API на случай изменений в будущем и постоянно мониторить API на соответствие всем требованиям.

Это позволит избежать частных ошибок, допускаемых при проектировании API, и убедиться в должном уровне производительности API. Разработчики могут как быть самоучками, так и иметь высшее образование. Главное, чтобы они были квалифицированными специалистами.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи M N I M J Adam: Ask These 10 Questions For HIRING BEST Android Developer

Предыдущая статьяПроблема устаревших замыканий и способы ее решения в React. Часть 2
Следующая статьяКак уменьшить объем шаблонного кода в тестах Kotlin