Вернуться в видеотеку

собес: руби + эликсир

Длинное техническое собеседование по Ruby и Elixir с практической задачей на потоки и подробным разбором Elixir-кластера. Участники обсуждают автозагрузку, GC, конкурентность, распределение состояния, макросы, конфигурацию и тестирование.

Источник: Alexei Matyushkin

Открыть на YouTube

Таймлайн

Коротко о видео

Это записанное техническое собеседование по Ruby и Elixir: после вопросов о модулях, операторе `===`, областях видимости переменных и автозагрузке Rails участнику дают задачу с потоками и тайм-аутом, затем обсуждают GC и конкурентность. Во второй половине разбирают код Elixir-проекта с кластеризацией: старт релиза, обнаружение нод, Docker, горячие кэши, перераспределение работы и корректный уход ноды. В финале обсуждают макросы и compile-time-конфигурацию, Credo, тесты и техдолг, а также фиксируют темы для дальнейшего изучения — GIL, GC и собственные тесты проекта.

Затронутые темы

Что взять на заметку

  • Для Ruby-собеседования стоит уметь различать роли модулей: mixin через include/prepend, пространство имён и контейнер для функций без состояния.
  • Нужно уверенно объяснять области видимости Ruby-переменных; отдельно проговорить, почему class variables разделяются между наследниками и когда безопаснее class instance variables.
  • Подготовить версионно-зависимое объяснение require, load и autoload, а также того, как Rails/Zeitwerk подгружает константы в development и production.
  • Полезно потренироваться на задаче с Thread, join, ожиданием результата и тайм-аутом, не полагаясь на автодополнение IDE.
  • При обсуждении производительности сначала искать неэффективный код и лишние аллокации, а уже затем связывать проблему с garbage collector или версией Ruby.
  • Для сервисов с горячим состоянием продумать graceful shutdown: предупредить о завершении, передать работу живым нодам и не потерять прогретый кэш при перезапуске контейнера.
  • В Elixir следует различать compile-time и runtime-конфигурацию: compile-time-подстановка может быть оправдана для неизменяемых значений, но ухудшает переносимость библиотеки без явной документации.
  • При ревью собственного старого кода важно проверять Git history, покрытие тестами и причины оптимизаций, а не предполагать их назначение по текущему виду кода.

Рекомендуем посмотреть

1 ч 2 мин
BackendMiddle

РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА BACKEND РАЗРАБОТЧИКА ПОЛУЧИЛ ЗП 280К ЗАВАЛИВ ПОЛОВИНУ ТЕХНИЧЕСКИХ ВОПРОСОВ

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