Что я спрашиваю Junior и Senior Flutter разработчиков на собеседовании

Что я спрашиваю Junior и Senior Flutter разработчиков на собеседовании

В этой статье я поделюсь своим подходом к Flutter собеседованиям, вопросами, которые задаю во время собеседований, и дам несколько советов для начинающих и опытных разработчиков.

Я Team Lead мобильного отдела и обязанности включают в себя такие вещи, как codereview, наставничество, программирование, конечно, и интервьюирование кандидатов. За свою карьеру я собеседовал людей на разные должности: Android разработчиков, фронтенд-разработчиков (особенно на позицию React) и последние нескольких лет — flutter разработчиков.

Собеседования на позиции android и front-end довольно понятны. Я имею в виду, что рынок для этой позиции не нов, и ясно, что спрашивать и что интервьюируемый должен знать для каждой позиции. Но с флаттером немного не так. Рынок Flutter приложений пока невелик по сравнению с другими развитыми рынками типа мобильная разработка под Android и iOS или веб разработка. 

А flutter разработчик должен знать не только язык Dart и Flutter фреймворк, а также множество аспектов мобильной разработки для разных платформ: как билдить и настраивать приложения для устройств iOS и Android, а также много других мелких, необязательно сложных вещей.

Изображение для публикации
О чем я спрашиваю Junior и Senior Flutter разработчиков на собеседовании

Собеседование по Flutter: начало

Обычно я начинаю собеседование с предложения кандидату рассказать о своем опыте, предыдущей должности. Также я прошу описать самую сложную проблему, которую человек когда-либо решал, или решение, которым кандидат больше всего гордится. Конечно, такие вопросы задаются разработчикам уровня Middle и Senior.

В случае собеседования с Junior разработчиком, я не буду начинать разговор с таких вопросов, потому что, очевидно, у этого человека еще нет такого опыта. В начале собеседования я обычно спрашиваю джунов о курсах, которые они посещали, или о том, на какие онлайн-курсы они записались, чтобы изучить Dart и Flutter. Еще одна важная вещь — это небольшие тестовые приложения, которые человек уже создал, потому что даже если вы начинающий разработчик, вам нужно как-то практиковаться, верно?

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

Flutter Интервью: Техническая часть

Мне не нравятся собеседования на доске или того хуже: вопросы, требующие бумаги и ручки, особенно реализация определенного алгоритма. Я был на нескольких подобных собеседованиях в качестве кандидата, и должен сказать, что это не лучший опыт. На написание алгоритмов, обсуждение технических вещей, лежащих в основе этих алгоритмов, на визуализацию структур данных и возможные решения вопросов, задаваемых интервьюером требуется много времени, часы! Возможно, такой подход подходит для крупных компаний, таких как Google или Amazon, но, на мой взгляд, не в большинстве случаев.

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

Вопросы для Flutter собеседований для младших разработчиков

Я всегда корректирую вопросы для собеседования в соответствии с уровнем навыков интервьюируемого. А в случае с кандидатом-джуном, мне нужно сначала проверить основы. Это позволит мне понять, знает ли человек язык программирования Dart, ООП, коллекции Dart и асинхронное программирование.

Кроме того, я задаю несколько базовых вопросов по фреймворку Flutter. Например, о разнице между Stateful и Stateless виджетами, BuildContext, разницу между пакетами и плагинами, что такое hot reload и hot restart, а также что-то о Scaffold, Row и Column и другим основам построения пользовательского интерфейса.

То же самое и с управлением состоянием: младший разработчик должен знать основы использования какого-либо решения для управления состоянием, такого как Provider с ChangeNotifiers или BLoC. Еще одна действительно важная вещь — это GIT. Человек должен знать основы GIT: как управлять репозиторием, ветками, слиянием веток и т.д. Также важно, есть ли у человека опыт командной работы. И это действительно важно. Это позволяет мне понять, заботится ли человек о качестве кода и следует ли лучшим практикам в работы в команде.

Вопросы для Flutter собеседований Middle и Senior разработчиков

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

В такого рода интервью я также задаю технические вопросы, но предполагаю, что собеседник уже знает основные темы, и поэтому вопросы будут более сложные. Например, Middle и Senior должен знать язык программирования Dart, включая такие темы, как Streams, может объяснить, что такое Event Loop, что такое Isolates и как их использовать. Кроме того, кандидат должен знать методы проектирования адаптивного UI и иметь опыт написания различных наборов тестов, включая, конечно, модульные тесты, виджет тесты и интеграционные тесты.

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

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

И это не только вещи, связанные с флаттером. Интервью также включает вопросы о Firebase сервисах, решениях для непрерывной интеграции и непрерывной доставки, то есть CI/CD типа Codemagic и Bitrise, или, возможно, самодельное решение с использованием Github Actions или других вендоров. Это большой плюс.

Middle и Senior Flutter разработчики должны использовать лучшие практики для релиза приложений или, по крайней мере, могут объяснить, что они использовали для такого рода задач. Если они не могут сказать несколько слов о том, как они релизят приложения, это тревожный звоночек.

Flutter собеседование: предлагаемые сценарии и решения

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

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

Советы и предложения по собеседованию

Важная вещь, которая играет огромную роль во всем интервью, — это то, как люди отвечают на вопросы.

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

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

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

И еще одно огромное преимущество кандидата в том, что у него есть собственные опубликованные Flutter приложения в Google Play и App Store . Это показывает большой интерес к Flutter разработке и показывает, что кандидат прошел все стадии процесса разработки: от идеи приложения до публикации.

Flutter Собеседование: практическое задание

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

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

Flutter Интервью: откуда кандидат?

Я предпочитаю проводить собеседования и брать на работу разработчиков, которые перешли на Flutter с Android или iOS, потому что эти кандидаты знают специфику мобильной разработки и уже знают, как создавать приложения, релизить приложения и настраивать нативный код. 

Что ж, если человек перешел с веб-разработки на flutter, то нативный код, конфигурации Xcode и зависимости Gradle действительно усложнят процесс обучения. Но это, конечно, не означает, что кандидат не может в будущем стать отличным разработчиком флаттера. Просто будет сложнее.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *