Как взять интервью у разработчика Ruby on Rails

Эта статья пригодится вам, когда вам нужно протестировать программиста Ruby on Rails, но вы не уверены, какие вопросы задать собеседнику Rails. Вы можете рассматривать эту статью как руководство по собеседованию с программистом Ruby on Rails

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

Теперь давайте наметим структуру интервью Ruby on Rails. Статья будет разделена на несколько частей, поскольку мы обычно проверяем отдельные области знаний. Вот структура, которую мы обычно используем:

  • Руби вопросы;
  • Вопросы по Ruby on Rails;
  • Задача парного программирования;
  • Домашнее задание.
Задавайте вопросы Ruby для тестирования веб-разработчика
Почему мы задаем вопросы, связанные с Ruby, разработчикам Ruby on Rails ? Поскольку фреймворк Rails написан на Ruby. Это означает, что когда мы пишем код для Ruby on Rails, мы используем Ruby. Основная проблема, с которой мы сталкиваемся при работе с программистами Ruby on Rails, на самом деле заключается в том, что они не полностью понимают основы - сам язык программирования. Мы хотим нанять дальновидных программистов, которые будут создавать высококачественный код, и поэтому мы хотим оценить их компетенцию в Ruby.

Вопросы Ruby разработчику Ruby on Rails
Наши вопросы на собеседовании по Ruby обычно касаются парадигмы объектно-ориентированного программирования и объектно-ориентированных шаблонов проектирования. Иерархия классов, инкапсуляция, наследование и полиморфизм - ключевые концепции, которые должен хорошо знать каждый веб-разработчик Ruby on Rails.

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

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

  • Что такое класс?
  • В чем разница между классом и модулем?
  • Что такое объект?
  • Как бы вы объявили и использовали конструктор в Ruby?
  • Как бы вы создали методы получения и установки в Ruby?
  • Опишите разницу между переменными класса и экземпляра?
  • Каковы три уровня контроля доступа к методам для классов и что они означают?
  • Объясните, как (почти) все в Ruby является объектом.
  • Объясните, что такое одноэлементные методы. Что такое собственный класс в Ruby?
  • Опишите путь поиска метода Ruby.
  • Опишите доступные обратные вызовы Ruby. Как их использовать на практике?
  • В чем разница между Proc и lambda?

Вторая серия вопросов Ruby: бизнес-приложения
Знания основ недостаточно для работы в RubyGarage или любой другой серьезной компании по веб-разработке. Программист также должен уметь объяснять, как писать код для бизнес-приложений. Поскольку Rack - очень популярный интерфейс, позволяющий разрабатывать приложения на Ruby, мы задаем ему конкретные вопросы. Вот четыре возможных вопроса и проблемы:
  • Что такое стойка?
  • Объясните интерфейс приложения Rack.
  • Напишите простое приложение Rack.
  • Как работает промежуточное ПО Rack?

Третья серия вопросов о Ruby: Ruby Gems
Ruby - очень популярный язык программирования, и у него есть огромное сообщество разработчиков, которые создают множество полезных библиотек. В этой части интервью Ruby on Rails мы хотим узнать, как веб-разработчик Ruby воспринимает базовую структуру библиотеки гемов. Программист будет использовать несколько драгоценных камней при создании приложений на работе, поэтому для нас важно посмотреть, может ли разработчик читать и понимать код, написанный другими программистами. Опрашиваемый также должен описать RubyGems, специальную систему для создания, внедрения и обмена.
  • Что такое RubyGems? Как это работает?
  • Как вы можете создать свой собственный Ruby gem?
  • Не могли бы вы привести мне несколько примеров ваших любимых драгоценных камней помимо Ruby on Rails?

Вопросы для собеседования по Ruby on Rails
Пришло время окунуться в мир фреймворка Rails. Квалифицированный разработчик должен быть знаком с подходом модель-представление-контроллер к созданию приложений. Серия вопросов собеседований по Ruby on Rails для опытных программистов разделена на три группы. Сначала мы задаем несколько общих вопросов, связанных с фреймворком Rails. Во-вторых, мы хотим узнать, что разработчик знает о маршрутизации, контроллерах и представлениях - основных частях любого бизнес-приложения.

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

Вопросы на собеседовании по Ruby on Rails:
  • Что такое ActiveJob? Когда мы должны его использовать?
  • Что такое Asset Pipeline?
  • Объясните разницу между типами кэширования Page, Action, Fragment, Low-Level и SQL.
  • Что такое движок Rails?
  • Маршрутизация, контроллеры и представления
  • Приведите пример маршрутизации и контроллера RESTful.
  • Опишите глаголы и действия CRUD.
  • Как тестировать маршруты?
  • Как использовать фильтры в контроллерах?
  • Что такое сильные параметры?
  • Что нам нужно тестировать в контроллерах?
  • Как использовать content_for и yield ?
  • Как использовать вложенные макеты?
  • Объясните шаблон Active Record.
  • Что такое объектно-реляционное сопоставление?
  • Опишите соглашения об Active Record.
  • Объясните механизм миграции.
  • Опишите типы ассоциаций в Active Record.
  • Что такое области? Как его использовать?
  • Объясните разницу между оптимистичной и пессимистической блокировкой.

Вопросы по Ruby on Rails: безопасность
Хорошее приложение должно быть безопасным. Помимо возможных атак, разработчик также должен знать все о существующих методах защиты. Разработчик знает, когда использовать такие методы и какие средства защиты подходят для каких ситуаций. Как вы увидите в предложенном списке вопросов, нас может интересовать не только безопасность Ruby on Rails, но и общие концепции веб-безопасности, такие как использование HTTPS вместо HTTP.

  • Объясните, что такое механизм сеансов. Как это работает?
  • Опишите подделку межсайтовых запросов, межсайтовые сценарии, перехват сеанса и атаки фиксации сеанса.
  • В чем разница между SQL-инъекцией и CSS-инъекцией?
  • Как следует хранить безопасные данные, например пароль?
  • Почему нам нужно использовать HTTPS вместо HTTP?

Вопросы об автоматических тестах в Ruby on Rails
Написание кода для производства без автоматизированных тестов - плохой подход к веб-разработке, особенно когда мы пишем код на Ruby, потому что сам язык требует, чтобы веб-разработчики писали тесты. Автоматическое тестирование в Ruby on Rails помогает снизить нагрузку на команду по обеспечению качества, и это значительно улучшает рабочий процесс.

Автоматическое тестирование крайне важно для стартапов. Вот причины.
Все веб-разработчики Ruby должны иметь четкое представление о том, зачем использовать автоматические тесты, когда их писать и какие типы тестов существуют. Помимо понимания методов тестирования, каждый разработчик Ruby on Rails должен знать, как создать пример тестирования, и должен быть знаком с руководящими принципами и передовыми методами тестирования. Вот несколько вопросов о тестировании, которые мы можем задать разработчику Ruby on Rails:

  • Что такое модульное тестирование (в классическом понимании)?
  • Какая основная техника написания теста?
  • Какие инструменты для написания модульных тестов вам нравятся больше всего?
  • Какие инструменты для написания тестов функций вам нравятся больше всего?

Спросите программиста Ruby on Rails о рефакторинге
Рефакторинг - важный шаг во время разработки любого приложения. Рефакторинг означает, что разработчики обновляют код, который они уже написали, чтобы сделать его более чистым и эффективным. Если разработчик знает, как достичь высокого уровня производительности, то в будущем команда сможет улучшить приложение быстрее в соответствии с изменяющимися запросами клиента. Следующая серия вопросов для собеседования по Ruby on Rails поможет вам оценить способность разработчика писать элегантный код. Не забывайте, что этот вопрос можно изменить, чтобы сосредоточиться на ваших собственных основных проблемах развития:

  • Что такое запах кода?
  • Какие ваши любимые инструменты для поиска запахов кода и потенциальных ошибок?
  • Почему вам следует избегать жирных контроллеров?
  • Почему стоит избегать толстых моделей?
  • Объясните методы извлечения значений, услуг, форм, представлений, запросов и объектов политики.
  • Выясните все ситуации, когда лучше провести рефакторинг кода.

Дайте задание на парное программирование
Следующая часть собеседования по Ruby on Rails всегда включает в себя проверку навыков программиста в паре со старшим веб-разработчиком. Мы объясняем собеседнику, что это необходимо, чтобы дать волю его разуму.

Какова цель теста по парному программированию? Прежде всего, это позволяет нам взглянуть на образ мышления разработчика. Как только программист Ruby on Rails получает задачу, он должен предложить некоторые методы или средства для ее решения. Задача парного программирования очень похожа на обсуждение, поскольку наш старший веб-разработчик помогает интервьюируемому понять, какое решение может быть не только работоспособным, но и лучшим. Во-вторых, задачи парного программирования помогают нам определить способность разработчика работать в команде. Ниже приведен пример задач, которые мы можем дать во время собеседования по Ruby on Rails.

Двоичный разрыв
Двоичный разрыв в целом положительном числе N является любой максимальной последовательностью последовательных нулей, которые окружали единицы на обоих концах в двоичном представлении N . Например, число 9 имеет двоичное представление 1001 и содержит двоичный пробел длиной 2. Число 529 имеет двоичное представление 1000010001 и содержит два двоичных пробела: один длиной 4 и один длиной 3. Число 20 имеет двоичное представление 10100 и содержит один двоичный пробел длиной 1. Число 15 имеет двоичное представление 1111 и не имеет двоичных пробелов.

Напишите функцию def binary_gap (n), которая, учитывая положительное целое число N , возвращает длину самого длинного двоичного разрыва. Функция должна вернуть 0, если N не содержит двоичного пробела.

Например, если N = 1041 , функция должна вернуть 5, потому что N имеет двоичное представление 10000010001, а его самый длинный двоичный пробел равен 5.

Предположим, что:

N - целое число в диапазоне [1..2 147 483 647].

Сложность:
ожидаемая временная сложность наихудшего случая - O (log (N)) ;
ожидаемая сложность пространства в наихудшем случае - O (1) .

Домашняя задача для разработчика Ruby on Rails
Это последнее задание, которое можно дать интервьюируемому.Для того, чтобы выяснить может ли Rails-разработчик использовать несколько технологий для веб-разработки. Собеседник должен хорошо разбираться во многих интерфейсных инструментах, включая язык программирования JavaScript, его фреймворки и библиотеки. Хорошее знание языка разметки и таблиц стилей, безусловно, необходимо. Мы также включаем задачи для проверки способности разработчика писать автотесты с использованием таких инструментов, как RSpec, Capybara и подобных.

Домашнее задание может быть разным. Например, мы можем попросить разработчика Rails реализовать задачу с помощью React, Ember или Backbone вместо Angular. Конкретная задача, которую мы даем, может зависеть от конкретного проекта, над которым будет работать разработчик Rails, если его наняли. Эта задача по программированию, которую должен выполнять только соискатель, очень ценна для проверки его или ее навыков.

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

Функциональные требования:
  • Я хочу иметь возможность войти / зарегистрироваться по электронной почте / паролю или через Facebook;
  • Я хочу иметь возможность создавать / обновлять / удалять проекты;
  • Я хочу иметь возможность добавлять задачи в свой проект;
  • Я хочу иметь возможность обновлять / удалять задачи;
  • Я хочу иметь возможность расставлять приоритеты задач в рамках проекта;
  • Я хочу иметь возможность установить крайний срок для моей задачи;
  • Я хочу иметь возможность отмечать задачу как выполненную;
  • Я хочу иметь возможность добавлять комментарии к своим задачам;
  • Я хочу иметь возможность удалять комментарии;
  • Я хочу иметь возможность прикреплять файлы к комментариям.

Технические требования
  • Это должно быть веб-приложение:
  • На стороне клиента используйте HTML5, CSS3, Bootstrap, JavaScript, AngularJS и jQuery;
  • На стороне сервера используйте Ruby on Rails.
  • Он должен иметь проверку на стороне клиента и на стороне сервера;
  • Он должен работать как одностраничное WEB-приложение и должен использовать технологию AJAX (загружать и отправлять данные без перезагрузки страницы);
  • У него должно быть решение для аутентификации пользователя. Пользователь должен иметь доступ только к своим проектам и задачам (Devise, Cancancan);
  • В нем должны быть автоматизированные тесты для всей функциональности (модели - RSpec, контроллеры - RSpec, приемочные / функциональные тесты - RSpec + Capybara);

Рекомендуем к дополнительному прочтению нашу статью Вопросы для собеседования с разработчиком Ruby on Rails. Данный материал будет полезен рекрутерам при подборе ит персонала и более глубоко оценить и взять интервью у программиста.
HR Блог для IT рекрутера в Телеграм
Хочешь всегда получать новые статьи, бесплатные материалы и полезные HR лайфхаки! Подписывайся на нас в Telegram! С нами подбор ит персонала становится проще ;)
Хотите найти талантливого сотрудника?
Оставьте заявку и получите в подарок список вопросов для сбора рекомендаций на кандидата