Руководство по техническим интервью Acing Ruby on Rails
ВСТУПЛЕНИЕ
Если вы когда-либо пытались претендовать на должности более высокого уровня, чем ваш текущий уровень, или просто хотите сменить текущую работу, есть вероятность, что вы разочаруетесь, если не пройдете техническое собеседование. Если у вас есть необходимые знания и опыт, но вы по-прежнему не справляетесь, вы не должны расстраиваться. Хотя интервьюер судил вас по результатам вашего интервью. Вы не одиноки в этом. Так много разработчиков столкнулись с этой проблемой не потому, что они не подходят для этой работы, а просто не могли справиться в тот момент.
Так много сообщений содержат прошлые вопросы для интервью, вы, должно быть, прочитали много из них, но ни один из них не был задан в вашем интервью. Однако вы могли бы добиться успеха, если бы знали темы, которые будут заданы.
Если вам когда-либо хотелось сдаться, пожалуйста, не делайте этого. «НЕ СДАВАЙСЯ», соберись, ты действительно меняешь ситуацию. Вы можете быть всего лишь кусочком информации от того, чтобы пройти следующее собеседование по Ruby on rails.
Этот пост призван перечислить области, которые часто задают на собеседовании по Ruby on Rails, включая расширенные концепции Ruby/Ruby on Rails, которые помогут вам подготовиться к техническому собеседованию.
Прочтите этот пост, прежде чем пытаться пройти техническое интервью по Ruby on Rails. И не стесняйтесь указывать любые дополнительные заголовки, которые могут помочь инженеру Ruby on rails в техническом интервью.
1. Ruby Truthy и операторы равенства
В ruby false и nil оцениваются как false, все остальное верно.
Подробнее здесь: правдивость в рубине
В ruby-равенстве несколько операторов работают по-разному. У вас под рукой есть разница между ==, eql?, equal? и === Операторы.
== проверить разницу между двумя объектами
eql используется хэшем для проверки того же хеш-ключа.
Равный? Проверяет, ссылаются ли два операнда на один и тот же объект.
=== Оператор равенства регистров проверяет, является ли объект в правой части членом объекта в левой части.
Подробнее здесь: разница-между-eql-равным-в-рубине
2. Объектно-ориентированное программирование.
Вы слышали, что в рубине все является объектом. Это парадигма объекта. это означает, что в языке Ruby все является объектом. Эти объекты, независимо от того, являются ли они строками, числами, классами, модулями и т. д., работают в системе, называемой объектной моделью. Подробнее здесь…
3. Качество кода
Будьте увлечены написанием чистого кода Ruby.
Познакомьтесь с инструментами обнаружения запаха кода ruby/rails.
Примеры: реек, рубокоп, лучшие практики рельсов, брейкмен и т. д.
Подробнее читайте по следующим ссылкам:
проверьте-мой-код-подсказки, чтобы сохранить-рубиновые-коды-без запаха
4. Знайте и применяйте соответствующие шаблоны проектирования
Дизайн SOLID — хорошее место для начала. Кроме того, заслуживают рассмотрения творческие, поведенческие и структурные шаблоны проектирования.
Это не только помогает понять код, написанный другими инженерами, но и дает представление о подходящих подходах к решению проблемы.
- ruby-solid-дизайн-принципы
- шаблоны проектирования
Просмотрите пример кода ruby для каждого шаблона следующим образом. - шаблоны проектирования ruby пример
5. Насмешки: двойники, заглушки, насмешки и шпионы.
Недостаточно практиковать TDD/BDD, просто написав простые тестовые примеры, кандидаты должны обладать необходимыми навыками для имитации. (тестовые двойники, заглушки, макеты и шпионы).
Ниже приведены определения этих понятий:
«Тестовый двойник — это упрощенная версия объекта, которая позволяет нам определять «фальшивые» методы и их возвращаемые значения».
«Заглушка метода — это реализация, которая возвращает заранее определенное значение. ”
«Мок — это заглушка со встроенным ожиданием, которое будет удовлетворено во время теста. ”
«Шпионы — это объекты, которые по умолчанию могут принимать все методы без каких-либо исключений и вести историю вызываемых для них методов. ”
Чтобы увидеть их в действии, прочитайте следующие сообщения.
издевательство над рубином с минитестом
разница-между-насмешками-заглушками-и-шпионами
6. Модули и миксины
Ruby поддерживает одиночное наследование, что означает, что класс может наследоваться только от одного класса. Модули и примеси играют важную роль в преодолении этого ограничения в пользу композиции, а не наследования. Это позволяет приложению обмениваться кодом в других местах.
Обратите внимание на 3 способа импорта модуля в класс.
1. через ключевое слово include
При импорте модуля с помощью оператора include модуль вставляется в цепочку предков класса, импортирующего модуль. Доступ к методам модуля можно получить через экземпляр класса.
2. через ключевое слово расширения
При импорте модуля с помощью оператора include методы модуля импортируются как методы класса.
3. через предваряющее ключевое слово
Он работает аналогично включению, модуль вставляется в конец цепочки даже перед классом. Вызовы методов для экземпляра класса сначала ищутся в методах модуля перед методами класса.
Подробнее здесь:
7. Безопасность Rails: токен CSRF
Токен CSRF — это то, что рельсы используют для предотвращения атак с подделкой межсайтовых запросов. Rails сравнивает токен со страницы с токеном из файла cookie сеанса, чтобы убедиться, что они совпадают.
Как разработчик Rails, вы получаете защиту от CSRF бесплатно. Он начинается с этой единственной строки в application_controller.rbкоторый включает защиту от CSRF:
protect_from_forgery with: :exception
Далее, есть эта единственная строка в приложение.html.erb
<%= csrf_meta_tags %>
Подробнее здесь глубокое погружение в защиту csrf в рельсах
8. Применение только Rails API и использование стороннего API
Использование рельсов для создания серверной части, которая используется совместно веб-приложениями и нативными приложениями.
Прочтите следующие ссылки:
9. Ленивая загрузка против жадной загрузки в Rails, когда использовать
- что такое ленивая загрузка в рельсы
- повышение-производительности-вашего-приложения-rails-с-нетерпеливой-загрузкой
- приложение с лучшей производительностью для рельсов с загрузкой и объединением
- соединяет-против-предварительной-против-включает-против-нетерпеливой загрузки-в-рельсы
8 лучших инструментов для оптимизации и очистки кода на Ruby-on-Rails
11. Последние функции в Rails
12. Ассоциация Activerecord и самосоединение
ruby-on-rails-активные-записи-ассоциации
13. Сервис-ориентированная архитектура
- сервис-ориентированная архитектура-рельсы
- строительно-сервисно-ориентированная архитектура с использованием рельсов и кафки
14. Реализация веб-сокетов в Ruby on Rails (Action Cable)
Ruby-on-Rails-WebSockets-and-ActionCable
15. Классы и сервисные объекты
Сервисный объект в Rails — это старый простой объект Ruby, созданный для определенного бизнес-действия. Это код, написанный вне уровня модели, контроллера или представления. Это может быть запрос POST для отправки транзакции в сторонний API.
16. Actionmailer и электронная почта в рельсах
отправка электронных писем в рельсах с помощью почтовой программы и gmail
17. CI/CD и облачное развертывание
Конвейер непрерывной интеграции (CI) теперь является нормой для современных приложений. Существует множество конвейерных технологий CI/CD, и ожидается, что разработчик знаком с некоторыми из них.
Ниже приведены руководства по конвейерам CI/CD.
- рельсы непрерывной интеграции
- установка-ci-cd-for-rails-приложение-использование-github-actions-aws-beanstalk
- установка-приложения-на-рельсах-для-кода-сборки-кода-развертывания-и-кодопровода-на-AWS
18. Применение в стойке
Rack — это базовая технология почти всех веб-фреймворков в мире Ruby.
Стойка предоставляет минимальный, модульный и адаптируемый интерфейс для разработки веб-приложений на Ruby.
Rack используется Rails и Sinatra. Вы можете узнать больше об этом здесь:
19. Решение проблем — алгоритм и структура данных
Это похоже на то, что после чата каждый интервьюер может дать вам проблему для решения. Как бы мало это ни было. Я рекомендую заниматься с: литкод вопросы
и ранг хакера Набор для подготовки к собеседованию на ранг хакера
20. Расширенные запросы ActiveRecord и кэширование.
Кэширование:
Резюме
Подготовка имеет первостепенное значение для успешного прохождения любого технического собеседования. В этом посте представлены критические области, которые были тщательно отобраны, чтобы иметь их под рукой, прежде чем приступить к техническому интервью Ruby. Это просто руководство, которое поможет освежить вашу память в областях, которые могут легко пропустить ваш ум.