Skip to content

Latest commit

 

History

History
108 lines (90 loc) · 10.9 KB

File metadata and controls

108 lines (90 loc) · 10.9 KB

Вопросы для PHP-разработчиков

Вопросы по soft skills Вопросы по алгоритмам

Junior

Общие вопросы

  1. Почему ты решил стать бэкенд-разработчиком, чем тебя привлекает профессия?
  2. Приходилось писать тесты и на чем?
  3. Знаком с пирамидой тестирования? Какие виды тестирования знаешь?

PHP

  1. Какие есть типы данных в PHP?
  2. Что такое интерфейсы и абстрактные классы в PHP, зачем они нужны и чем отличаются?
  3. Что такое инкремент и декремент и в чем разница между префиксной и постфиксной записями?
  4. Расскажи про динамические переменные.
  5. Что такое рекурсия? Назовите плюсы и минусы рекурсии?
  6. В чем разница между =, ==, ===?
  7. Какая система типов используется в PHP?
  8. Что такое магический метод? Какие магические методы вы знаете, где они применяются?
  9. Что такое трейты?
  10. Можно ли наследоваться множество раз? Если нет, то какие есть альтернативы для этого решения?
  11. Какие существуют методы обработки ошибок?
  12. Какая разница между self и $this?
  13. Что такое генератор?
  14. Что такое неймспейсы и зачем они нужны?
  15. Чем отличается include от require?
  16. Как сделать, чтобы объект вел себя как массив?
  17. При замыкании как прокинуть переменную? При использовании в классе, нужно ли прокидывать $this?
  18. Что будет с объектом после передачи в метод и его модификации? А если передать массив?

Базы данных

  1. С какими СУБД работал?
  2. Фундаментальные различия между MongoDB и Postgres?
  3. Знаком с ACID? Можешь рассказать, что это такое?
  4. Какие виды JOIN знаешь? Чем они отличаются?
  5. Что такое транзакция?
  6. Расскажи о ссылочной целостности в БД, что это и для чего нужно?
  7. Какие ключи есть в MySQL? Как их можно настроить, на какие события?
  8. В чем различие between where и having?
  9. Обязательно ли поле с id, которое ссылается на другую таблицу, делать внешним ключом?
  10. Какие ORM знаешь и какие использовал? Какие плюсы и минусы можешь выделить?
  11. Если соединяем несколько таблиц БД с помощью INNER JOIN, есть ли разница в оптимизации, в каком порядке соединяем таблицы?

Сети

  1. В чем различие TCP и UDP?
  2. Расскажи про OSI. На каком уровне находится HTTP?
  3. Что из себя представляет HTTP запрос? Структура? Тело есть у всех HTTP запросов?
  4. Можешь рассказать, что такое REST? Использовал ли в работе REST?
  5. В чем разница между GET и POST?
  6. Какой HTTP метод используется для обновления небольшого кусочка по REST?

Middle

Общие вопросы

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

  2. Зачем нужен refresh-токен в JWT? Почему недостаточно обычного access-токена?

  3. JWT или сессии — что лучше? Чем различаются?

  4. Решал ли ты какие-то задачи производительности в БД?

  5. Знаком, что такое PG Bouncer?

  6. Какие минусы у микросервисной архитектуры? Какие плюсы?

  7. Про микросервисы. Расскажи, какие могут быть минусы?

  8. Масштабирование: горизонтальное, вертикальное. Можешь рассказать, что это?

  9. Как можно оценить, что твое приложение начинает тормозить?

  10. Какие знаешь паттерны ООП? Какие использовал?

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

  12. Работал ли с Docker? Kubernetes?

  13. Можешь рассказать про плюсы и минусы расположения БД в контейнере и без? В каких случаях стоит использовать базу в контейнере?

  14. Работал ли с Grafana?

  15. Достаточно ли валидации в ORM при реализации проверки на уникальность, например, email при регистрации? Раскройте

  16. Какие последствия возможны при отправке email прямо в контроллере? Как можно решить эти проблемы?

  17. Как бы вы реализовали смену email на сайте, так чтобы соблюсти баланс между сложностью и безопасностью?

  18. Можно ли доверять email, который мы получаем по oauth от соц сетей и мержить аккаунты автоматически? Приведите примеры

  19. Как ограничить отправку email пользователю, который добавил письмо нашего проекта в спам? И почему это стоит делать (или не стоит)?

  20. Предположим что вы реализуете редакцию журнала, где редактора могут в админке править статьи. Как предотвратить ситуацию, когда два редактора могут начать одновременно редактировать одну статью и перетирать изменения друг друга?

  21. Каких принципов разработки нужно придерживаться, для обеспечения механизма zero downtime deployment. Как это достигается?

  22. Что может произойти, если ваша cron задача, которая запускается раз в минуту, стала выполняться больше 1 минуты? Как это можно предотвратить?

  23. Если вы пишите тесты, то как вы обходите проблему того, что код который вы тестируете, делает внешние вызовы? Доп условие, говорим о том, что на CI внешние вызовы запрещены (почему так правильно?)

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

  25. Как вы узнаете об ошибках, которые происходят на продакшене? От пользователей или это автоматизировано?

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

PHP

  1. Знаешь, как работает сборщик мусора в PHP? Если у нас есть переменная, например объект, который ссылается сам на себя, сборщик мусора его обработает?
  2. При передаче объекта в функцию и модификации этого объекта в функции, что происходит? Расскажите про механизм "Copy on Write".
  3. Что такое деструкторы, где применяются?
  4. Приходилось работать с Reflection API? Зачем оно может пригодиться?

Базы данных

  1. Для чего нужны индексы в БД?
  2. В каких случаях первичный ключ может быть null?
  3. В каком случае первичный ключ может быть составным и может ли он быть составным? Можешь привести пример такой ситуации?
  4. Чем DELETE отличается от TRUNCATE? Какой запрос будет выполнен быстрее?
  5. Знаешь ли ты, что такое SELF JOIN?
  6. В каких случаях необходима денормализация? Как она может помочь в системе рекомендаций?
  7. Как можно ускорить запрос с выбором данных из категорий с самыми дешевыми товарами?
  8. Обязательно ли делать поле внешним ключом? Всегда ли это плохо? Что такое нормальная форма?
  9. Что такое репликация и шардирование? Когда что использовать?
  10. Если соединяем несколько таблиц БД с помощью INNER JOIN, есть ли разница в оптимизации, в каком порядке соединяем таблицы?