Вопросы по soft skills Вопросы по алгоритмам
- Почему ты решил стать бэкенд-разработчиком, чем тебя привлекает профессия?
- Приходилось писать тесты и на чем?
- Знаком с пирамидой тестирования? Какие виды тестирования знаешь?
- Какие есть типы данных в PHP?
- Что такое интерфейсы и абстрактные классы в PHP, зачем они нужны и чем отличаются?
- Что такое инкремент и декремент и в чем разница между префиксной и постфиксной записями?
- Расскажи про динамические переменные.
- Что такое рекурсия? Назовите плюсы и минусы рекурсии?
- В чем разница между
=
,==
,===
? - Какая система типов используется в PHP?
- Что такое магический метод? Какие магические методы вы знаете, где они применяются?
- Что такое трейты?
- Можно ли наследоваться множество раз? Если нет, то какие есть альтернативы для этого решения?
- Какие существуют методы обработки ошибок?
- Какая разница между
self
и$this
? - Что такое генератор?
- Что такое неймспейсы и зачем они нужны?
- Чем отличается
include
отrequire
? - Как сделать, чтобы объект вел себя как массив?
- При замыкании как прокинуть переменную? При использовании в классе, нужно ли прокидывать
$this
? - Что будет с объектом после передачи в метод и его модификации? А если передать массив?
- С какими СУБД работал?
- Фундаментальные различия между MongoDB и Postgres?
- Знаком с ACID? Можешь рассказать, что это такое?
- Какие виды
JOIN
знаешь? Чем они отличаются? - Что такое транзакция?
- Расскажи о ссылочной целостности в БД, что это и для чего нужно?
- Какие ключи есть в MySQL? Как их можно настроить, на какие события?
- В чем различие between where и having?
- Обязательно ли поле с id, которое ссылается на другую таблицу, делать внешним ключом?
- Какие ORM знаешь и какие использовал? Какие плюсы и минусы можешь выделить?
- Если соединяем несколько таблиц БД с помощью
INNER JOIN
, есть ли разница в оптимизации, в каком порядке соединяем таблицы?
- В чем различие TCP и UDP?
- Расскажи про OSI. На каком уровне находится HTTP?
- Что из себя представляет HTTP запрос? Структура? Тело есть у всех HTTP запросов?
- Можешь рассказать, что такое REST? Использовал ли в работе REST?
- В чем разница между
GET
иPOST
? - Какой HTTP метод используется для обновления небольшого кусочка по REST?
-
Как сделать, чтобы другие сервисы могли проверить подлинность токена, но при этом не иметь возможности выпускать токен?
-
Зачем нужен refresh-токен в JWT? Почему недостаточно обычного access-токена?
-
JWT или сессии — что лучше? Чем различаются?
-
Решал ли ты какие-то задачи производительности в БД?
-
Знаком, что такое PG Bouncer?
-
Какие минусы у микросервисной архитектуры? Какие плюсы?
-
Про микросервисы. Расскажи, какие могут быть минусы?
-
Масштабирование: горизонтальное, вертикальное. Можешь рассказать, что это?
-
Как можно оценить, что твое приложение начинает тормозить?
-
Какие знаешь паттерны ООП? Какие использовал?
-
Как обобщить и унифицировать множество команд, чтобы получать одну из команд в зависимости от контекста, какой паттерн для этого можно применить?
-
Работал ли с Docker? Kubernetes?
-
Можешь рассказать про плюсы и минусы расположения БД в контейнере и без? В каких случаях стоит использовать базу в контейнере?
-
Работал ли с Grafana?
-
Достаточно ли валидации в ORM при реализации проверки на уникальность, например, email при регистрации? Раскройте
-
Какие последствия возможны при отправке email прямо в контроллере? Как можно решить эти проблемы?
-
Как бы вы реализовали смену email на сайте, так чтобы соблюсти баланс между сложностью и безопасностью?
-
Можно ли доверять email, который мы получаем по oauth от соц сетей и мержить аккаунты автоматически? Приведите примеры
-
Как ограничить отправку email пользователю, который добавил письмо нашего проекта в спам? И почему это стоит делать (или не стоит)?
-
Предположим что вы реализуете редакцию журнала, где редактора могут в админке править статьи. Как предотвратить ситуацию, когда два редактора могут начать одновременно редактировать одну статью и перетирать изменения друг друга?
-
Каких принципов разработки нужно придерживаться, для обеспечения механизма zero downtime deployment. Как это достигается?
-
Что может произойти, если ваша
cron
задача, которая запускается раз в минуту, стала выполняться больше 1 минуты? Как это можно предотвратить? -
Если вы пишите тесты, то как вы обходите проблему того, что код который вы тестируете, делает внешние вызовы? Доп условие, говорим о том, что на CI внешние вызовы запрещены (почему так правильно?)
-
Предположим что в вашей системе реализована смена емейла. При этом этот емейл хранится еще и во внешней системе, например эквайринге, который шлет пользователю свои письма (но пользователь им напрямую не пользуется). Как бы вы реализовали синхронизацию емейла с внешней системой?
-
Как вы узнаете об ошибках, которые происходят на продакшене? От пользователей или это автоматизировано?
-
Как обеспечивается изоляция тестов друг от друга если они ходят в базу и меняют ее? Если в вашем фреймворке этого нет, то как вы это делаете или сделали бы?
- Знаешь, как работает сборщик мусора в PHP? Если у нас есть переменная, например объект, который ссылается сам на себя, сборщик мусора его обработает?
- При передаче объекта в функцию и модификации этого объекта в функции, что происходит? Расскажите про механизм "Copy on Write".
- Что такое деструкторы, где применяются?
- Приходилось работать с Reflection API? Зачем оно может пригодиться?
- Для чего нужны индексы в БД?
- В каких случаях первичный ключ может быть
null
? - В каком случае первичный ключ может быть составным и может ли он быть составным? Можешь привести пример такой ситуации?
- Чем
DELETE
отличается отTRUNCATE
? Какой запрос будет выполнен быстрее? - Знаешь ли ты, что такое
SELF JOIN
? - В каких случаях необходима денормализация? Как она может помочь в системе рекомендаций?
- Как можно ускорить запрос с выбором данных из категорий с самыми дешевыми товарами?
- Обязательно ли делать поле внешним ключом? Всегда ли это плохо? Что такое нормальная форма?
- Что такое репликация и шардирование? Когда что использовать?
- Если соединяем несколько таблиц БД с помощью
INNER JOIN
, есть ли разница в оптимизации, в каком порядке соединяем таблицы?