Разбираемся с вопросами по Ruby и Rails
Ruby
Загрузка и интерпретация кода
Типы данных
Типы переменных в зависимости от области видимости
Объектная модель
Toplevel и методы Kernel
Область видимости методов
Использование блоков, proc и lambda
Иерархия наследования и поиск методов
Способы подключения модулей
Возможности метопрограммирования
Работа с памятью и GC
Процессы и потоки
Инкапсуляция и доступ к данным
Реализация полиморфизма
Проверка объектов на равенство
Спецификация Rack
Сильные и слабые стороны Ruby
Rails
Роли компонентов MVC
Дополнительные слои Rails приложения
Преимущества и недостатки обратных вызовов
Механизм доступа к данным Active Record
Назначение пула соединений Active Record
Загрузка и старт приложения
Механизм обработки запроса внутри приложения
Применение миграций в продакшен
Запуск приложения на Rack совместимом сервере
Рассматриваем RSpec, Web Fundamentals и базы данных
RSpec
Виды тестов и методика их написания
Фабрики моделей и их использование
Mock и Stub
Отличие request spec от controller spec
Способы оптимизации производительности тестов
Методика тестирования API
Web Fundamentals
Обработка HTTP запроса
HTTP кэширование
Протоколы HTTP(S) и WebSocket
DB
Реляционная модель данных
Нормализация и денормализация данных
Назначение внешних ключей
Виды соединений
Представления (PostgreSQL)
Назначение и типы индексов (PostgreSQL)
Этапы выполнения SQL запроса
Принципы ACID
Виды блокировок (PostgreSQL)
Транзакции и уровни их изоляции
Назначение VACUUM (PostgreSQL)
High Availability (PostgreSQL)
Секционирование (PostgreSQL)
Третий день посвящен вопросам Software Architecture, API Design, Git Flow, DevOps Basics
Software Architecture
Интерпретируемые и компилируемые языки
Парадигмы программирования
Принципы SOLID
Принцип DRY, случаи когда им можно пренебречь
Принцип KISS
Шаблоны доступа к данным: Active Record, Repository
Монолиты и микросервисы
Связанность компонентов и принципы абстракции
Схема сервисов в продакшен и их взаимодействие
API Design
REST, gRPC, GraphQL
Версионирование
Обработка ошибок
Git Flow
Общие принципы
Conventional commits
DevOps Basics
Типы ресурсов: CPU, memory, Disk I/O, Network
Использование CI
Способы деплоя приложения
Сбор логов
Мониторинг
Как проходит Soft Skills-интервью и какие вообще Soft Skills нужны разработчику
Soft Skills
Эмпатия и взаимодействие в команде
Важность понимания продукта и целей бизнеса
Важность данных и умение работать с ними
T-Shaped подход к развитию