8035649104_225aa5cfda_k

Денис Неклюдов, ведущий Android-разработчик британского финтех-стартапа Revolut, первый Google Developer Expert в России и ведущий подкаста о разработке под Android, продолжает рассказывать о том, как программистам избавиться от страха поменять работу.

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

Что спросят в первую очередь

Рассмотрим вопросы, которые заинтересуют интервьюеров в первую очередь. Итак, соискателю точно зададут вопросы по следующим темам:

Объектно-ориентированное программирование

Подобно нашей учебе на ИТ-факультете, любое собеседование для разогрева начинается с основ. У вас проверят понимание всех трех парадигм ООП и спросят о SOLID. Будут задавать вопросы про интерфейсы, абстрактные классы, классы вообще. Это самая простая часть собеседования. И обязательно попросят составить объектную модель чего-нибудь, вроде библиотеки службы доставки или метро.

Java

Если вас собеседует мужчина за 30, с большим прошлым разработки серверной Java, будьте готовы к вопросам про volatile-переменные, про synchronized — в общем про проблемы concurrency. Но начнут собеседование с простого: с вопросов про переприсвоения переменных, boxing и unboxing, но даже тут нельзя исключить «жести» с желанием узнать ваше мнение по поводу переприсвоения закэшиванных значений Integer в малом диапазоне около нуля. Почитайте книжки, не оставляйте в стороне Effective java, она вам еще не один раз понадобится в жизни.  

Android

Тут зависит от дерзости собеседующего. Если не уверены в своих знаниях повторите обязательно:

  • жизненный цикл Activity;
  • чем implicit intent отличается от explicit intent;
  • назначение Fragment;
  • как используется RecyclerView;
  • как организуется работа с сетью;
    • в каком потоке;
    • какими инструментами принято пользоваться;
    • что такое REST;
    • для чего создан Retrofit, что он делает;
    • Protobuf или Json за и против;
  • какая БД в Android;
  • как организуется доступ к БД вашего приложения из других приложений;
  • для чего используется Loader;
  • Service и IntentService, когда что нужно использовать;
  • почему нужно избегать библиотек, использующих механизм Reflection;
  • как сделать свой собственный визуальный компонент;
  • как нужно запрашивать разрешения на доступ к камере и местоположению;
  • для чего нужен JobScheduler;
  • почему нельзя хранить в статичном поле Context Activity или Service;
  • Serializable и Parcelable: как сохранить объект на устройстве без использования  БД;
  • какие проблемы могут возникнуть при повороте экрана устройства, как их предотвратить;
  • какие виды автоматизированного тестирования есть в Android и какими инструментами они осуществляются.

Архитектура

Здесь будет разбор аббревиатур MVP и MVVM, поговорят про паттерны, будьте готовы привести примеры шаблонов проектирования во фреймворке Android.

Алгоритмы

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

Полезные по жизни навыки

Это относится к любому собеседованию. С вас спросят знания английского языка, если это компания, которая тесно работает с иностранцами, то спросят по всей строгости.

Также возможно с вами будет общаться HR, и он будет задавать вопросы в духе: «кем вы видите себя через 5 лет, чем вы больше всего гордитесь в жизни». Тут нужно показать заинтересованность в своей профессии и желание работать именно в этой компании. А если не уверены в своих планах, можете заодно спросить, есть ли у компании бизнес-план на эти 5 лет? Относитесь к вопросам спокойно, это «эйчары», и это их работа знать, как вы отвечаете на подобные вопросы.

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

Как улучшить свои знания

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

Посещайте конференции по мобильной разработке. В столице это DroidCon и MBLTDev, в СПБ это Mobius, также во многих городах проходят Google DevFest и встречи GDG сообществ, где обсуждается много интересного, плюс весной по всему миру проходят бесплатные курсы для новичков Android StudyJams. И самое главное, слушайте подкасты о разработке (к примеру наш), читайте новости о разработке (например, androidweekly.net) и посещайте конференции мобильных разработчиков.

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

Как правильно подойти к тестовому заданию

Если вам дали тестовое задание, или попросили показать код, которым вы больше всего гордитесь, подойдите к реализации старательно. Не делайте «на отвали» ни в коем случае. Вам очень повезло, ведь часто достаточно просто взглянуть в код, чтобы понять, что за человек его написал, и есть ли смысл продолжать собеседование. Поэтому вложите в тестовое задание, все то лучшее из разработки, что вы сейчас знаете. Не поленитесь сделать красивую архитектуру, покройте все тестами, и оставьте комментарии. После написания будет хорошо предварительно отправить на ревью старшему коллеге по Android-цеху. Итоговую работу отправляйте ссылкой на github или bitbucket с правильным .gitignore, а не zip-архивом.

Что важно всегда иметь в виду, отправляясь на собеседование

Никогда не теряйте в голове мысль, что к вам настроены дружелюбно, какие бы вопросы не задавали — ни у кого нет цели вас завалить, как троечника на экзамене. Вас, столь редкого в свободном плавании сейчас зверя — Android-разработчика, искали неделями, и вы очень нужны команде. Зная это, вам будет гораздо легче вести общение на интервью.

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

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

Какие вопросы следует задать будущему работодателю

Главное, что должно вас интересовать — это процесс разработки, количество разработчиков и их квалификация. Конечно, не всегда рассказывают, что в релиз все ходят на головах до трех ночи, а скрам-процесс нарушается чаще, чем заваривается кофе. Но уловить общие черты того, как на самом деле обстоят дела на будущей работе можно.

Спросите:

  • как устроен процесс разработки;
  • сколько человек в команде;
  • кто выставляет требования к продукту;
  • как построена работа с дизайнерами;
  • есть ли удаленные разработчики;
  • на какой стадии проект;
  • какие технологии используются в проекте;
  • какие обязанности у разработчиков на позиции, на которую собеседуют вас;
  • ведется ли работа с CVS по Git-Flow;
  • настроен ли Continuous Integration;
  • как обстоят дела с тестированием и отделом QA;
  • возможна ли иногда работа из дома, если для вас это актуально.

Если что-то из вышеперечисленного вам не знакомо — не спрашивайте. Еще, конечно, не забудьте про бонусы за выслугу лет, места, где вкусно пообедать, рабочие командировки и посещения конференций, но не увлекайтесь, а то будущий работодатель испугается.

На этом все, мне лишь остается пожелать вам найти отличное место работы, или походив по соседним конторам, убедиться, что ваше место работы самое лучшее. Будьте уверены в себе, показывайте свои лучше качества, причем не только на собеседованиях, но и в ежедневном труде. Если есть желание обсудить данную тему, заходите в Telegram-чат.