Вопросы для собеседования "[Senior] Программист PHP"


Войдите, чтобы использовать вопросы
и провести собеседование.

Что такое абстракция?
Что такое полиморфизм?
Что такое наследование?
Что такое инкапсуляция?
В чем разница между композицией и агрегацией?
Чем отличается интерфейс от абстрактного класса?
* Что такое параметрический полиморфизм?
* Композиция и наследование: когда что использовать?

Принципы проектирования SOLID
Что такое S?
Что такое O?
Что такое L?
Что такое I?
Что такое D?

Принципы GRASP и Закон Деметры (Law of Demeter)
Что такое Information Expert (Информационный эксперт)?
Что такое Creator (Создатель)?
Что такое Controller (Контроллер)?
Что такое Indirection (Посредник)?
Что такое Low Coupling (Слабое зацепление)?
Что такое High Cohesion (Высокая связность)?
Что такое Protected variations (Устойчивость к изменениям)?
Что такое Pure fabrication (Чистая выдумка)?
Что такое Law of Demeter (Закон Деметры)?

Вопросы на базовое знание паттернов проектирования (GoF)
Назовите 3 категории паттернов
Что такое "Абстрактная Фабрика"? Для чего применяется "Абстрактная Фабрика"?
Что такое "Строитель"? Для чего применяется "Строитель"?
Что такое "Прототип"? Для чего применяется "Прототип"?
Что такое "Декоратор"? Для чего применяется "Декоратор"?
Что такое "Мост"? Для чего применяется "Мост"?
Что такое "Фасад"? Для чего применяется "Фасад"?
Что такое "Наблюдатель"? Для чего применяется "Наблюдатель"?
Что такое "Цепочка обязанностей"? Для чего применяется "Цепочка обязанностей"?
Что такое "Посредник"? Для чего применяется "Посредник"?

Вопросы на знание code smells и антипаттернов, т.е. как НЕ нужно писать код
Назовите 5 любых антипаттернов проектирования
Назовите 5 любых code smell (запахов кода)

Какие типы данных есть в PHP?
Какие магические методы существуют в PHP?
Какие магические методы существуют в PHP?
Что такое трейты и для чего они нужны?
Какие магические методы существуют в PHP?
Что такое конструктор и деструктор?
Обработчики ошибок в PHP. Как задать свой собственный обработчик?
Что можно передать в callback-функцию?
В чем отличие static & self?
* Как устроен zval?
* Как устроен массив? (на уровне zval)
Что такое ссылки в php? Какие есть основные операции с использованием ссылок?
Какие в PHP есть предопределенные переменные?
Что такое анонимные функции? Могут ли они использовать переменные из вызывающего кода?
Что такое final?

Как в git откатить коммит?
Как изменить текст коммита?
В чем разница между merge и rebase?
Что такое git хуки и как они используются?
* В чем разница между reset --soft --mixed --hard?
Как перенести коммит из одной ветки в другую?
Для чего нужна команда git stash?

Вопросы по СУБД
Каким требованиям должны соответствовать реляционные СУБД? (Требования ACID)
Каким требованиям должны соответствовать NoSQL СУБД? (Требования BASE)
Расскажите про теорему CAP
Какие есть уровни изоляции транзакций и в чем их особенности?
Для чего нужна денормализация?
Что такое индексы?
Что такое репликация?
Что такое федерация (federation)?
Что такое шардирование?
Какие проблемы нас могут ожидать при шардировании?
Что такое денормализация?

Алгоритмы, структуры данных, различные базовые знания из области компьютеров
Расскажите про структуру HTTP сообщения
Какие методы есть в HTTP?
В чем разница между GET & POST?
Какие коды ответов есть в HTTP? Назвать не менее 10
Что такое бинарное дерево? Рассказать про структуру, основные операции (вставка, удаление, поиск)
Какие структуры данных ты знаешь? Назвать не менее 7
Какие алгоритмы сортировки знаешь? Расскажи про один из них
Что такое RESTful API?
Какие типы консистентности ты знаешь? (Weak, eventual, strong consistency)
Что такое Load Balancer?
Назови хотя бы 3 стратегии инвалидации кэша
Назови любые 3 полезных числа, которые должен знать каждый программист (например, задержка при прохождении сигнала от Мск до Владивостока - 150 мс)