Как успешно пройти собеседование Android-разработчику?

Как успешно пройти собеседование Android-разработчику?
На чтение
17 мин.
Просмотров
86
Дата обновления
25.10.2024

Рассказывает Александр Аникин, декан факультета Android-разработки GeekBrains:

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

В этом посте я хочу поделиться опытом — рассказать, какие вопросы обычно задают на собеседовании. Бонусом в конце статьи я прикреплю список вопросов, который сам использую в качестве памятки для проведения интервью. Список довольно обширный, но это не значит, что я обязательно спрошу обо всём. Часто я задаю дополнительные вопросы по ходу собеседования, но в целом интервью не занимает больше часа.

На собеседовании может быть разное количество человек, но чаще всего это один-два разработчика. Иногда в начале присутствует представитель отдела кадров, который всех знакомит и рассказывает о компании. В крупных компаниях, бывает, собирается целая делегация: HR, пара разработчиков, тимлид, проджект-менеджер… Само собеседование условно делится на четыре части:

  1. Знакомство: 5–10 минут на представление собеседников, рассказ о компании и команде, пара слов о сфере деятельности.
  2. Проверка теоретических знаний: 40–60 минут вопросов по языку, платформе, библиотекам и т. п.
  3. Проверка практических навыков: 15–30 минут кодинга на расшаренном экране. Но такое встречается примерно в одном собеседовании из десяти, обычно хватает простого общения без кода.
  4. Вопросы соискателя (если есть): 5–10 минут.

[spacing size=”10″]

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

Java

  • класс Object и описание его методов;
  • Garbage collector и работа с памятью;
  • коллекции в Java:
  • какие бывают коллекции;
  • чем отличается Map от остальных;
  • отличия ArrayList от LinkedList;
  • как работает Map под капотом;
  • что такое Array;
  • как работает ArrayList под капотом;
  • как коллекции работают с многопоточностью.

многопоточность:

    • какие способы асинхронной работы есть в Java;
    • volatile;
    • synchronized;
    • lock, reentrantLock;
    • Semaphore, CountDownLatch, CyclicBarrier, Phaser, Exchanger;
    • с какими проблемами может столкнуться разработчик: deadlock, livelock.
  • ошибки в Java;
  • сериализация, transient;
  • рефлексия;
  • дженерики.

[spacing size=”12″]

Kotlin

  • Extension functions;
  • Inline functions;
  • свойства properties: методы get и set;
  • ключевые слова object, data class, lazy, companion object;
  • корутины.

[spacing size=”10″]

По Kotlin задают не очень много вопросов, потому что Java покрывает большинство ответов: эти языки работают по схожим принципам. Но баланс, скорее всего, будет сдвигаться в сторону Kotlin.

[spacing size=”12″]

Android

  • принципы SOLID и чистая архитектура;
  • активити и методы жизненного цикла, onSaveInstanceState/onRestoreInstanceState;
  • фрагмент и методы жизненного цикла;
  • контекст;
  • сервисы;
  • Broadcast Receiver;
  • интенты;
  • Handler/Looper;
  • AsyncTask;
  • что такое процесс;
  • Inter Process Communication;
  • сериализация и парселизация;
  • view: жизненный цикл, кастомные view;
  • Flavours/Builds;
  • архитектура MVP и MVVM;
  • многомодульность;
  • что такое OkHttp и зачем он нужен;

RxJava:

    • Hot и Cold observables;
    • разница между map и flatMap;
    • как создавать Observable;
    • разница между RxJava 1 и RxJava 2;
    • что такое BackPressure.

Dagger 2:

    • аннотация Named;
    • скоупы в Dagger 2.

[spacing size=”14″]

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

  • тренироваться в ветвлениях и условиях;
  • знать, что такое предикат;
  • знать основные методы пакетов Colleсtions, Array, которые работают с преобразованием коллекций и сортировкой;
  • решать задачи на алгоритмы и сортировки.

[spacing size=”12″]

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

[spacing size=”40″]

Начни карьеру разработчика с нуля за 1 месяц

Три интенсивных онлайн-курса
“Разработка под Android”

Вы освоите Android-разработку и сделаете свое первое приложение.

Оплата в рассрочку.

Узнать подробнее

[spacing size=”50″]

Практические советы

Я рекомендую составить карту памяти или памятку/шпаргалку, по которой вы будете быстро вспоминать, что недавно читали. Так удобнее готовиться к интервью.

Если не знаете ответ на какой-либо вопрос — отвечайте на знакомую смежную тему или расскажите то, что знаете по теме.

Например: «Я не уверен, что помню ответ на этот вопрос, но вот тут это делается так…». Не стоит говорить «Я не знаю/не помню», потому что это очень хорошо запомнит собеседующий. Если вы совсем не знаете тему, лучше просто порассуждайте вслух, предположите что-то на основе своих знаний — это покажет, что вы склонны к размышлению и поиску ответа.

Бонус. Мой список вопросов

Java Core:

  • OOP;
  • Class Object;
  • Reference;
  • Garbage collector;
  • Error/Exception;
  • Collections;
  • Network: URL, urlconnection, json, xml;
  • Generics/wildcards;
  • Reflection;
  • Enum;
  • Java.util.concurrent (Thread, Runnable, Executor, Future, Synchronized, Volatile, Synchronized collections) и всё, что связано с асинхронной работой в Java: Lesson: Concurrency (The Java™ Tutorials > Essential Classes).

Kotlin:

  • Extension functions;
  • Null Safety;
  • Inline functions;
  • Delegates;
  • Sequences;
  • Sealed classes;
  • Unit, Any, Nothing.

[spacing size=”12″]

Android:

  • Mafinest;
  • Intent & Intent Filters;
  • Serialization/parcelization;
  • Android tasks and backstack;
  • Notifications;
  • Permissions;
  • Resources;
  • Styles and Themes;
  • RecyclerView;
  • Custom views and animation;
  • Service (IBinder, Message Handler);
  • IPC/AIDL;
  • ContentProvider;
  • BroadcastReceiver ;
  • Activity;
  • Fragment;
  • Handler/Looper;
  • Context;
  • всё, что связано с асинхронной работой в Android + сколько есть способов выполнения асинхронной работы в Android;
  • Android architecture components;
  • MVP/MVVM.

[spacing size=”12″]

Common:

  • Patterns (GoF);
  • DI;
  • Git;
  • Gradle + Flavours/Builds

[spacing size=”20″]

[spacing size=”20″]

Источник

 

Реклама. Информация о рекламодателе по ссылкам в статье.
0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий