Обзор требований к Junior разработчику на PHP
Альберт Степанцев
Написать эту тему меня сподвиг вопрос одного из студентов: "Какой минимум знаний нужно иметь, чтобы успешно пройти собеседование на позицию младшего разработчика?" Поскольку я провожу достаточно много собеседований, я решил обобщить те требования, которые обычно предъявляются к соискателям на эту позицию. Сразу оговорюсь:
- это Москва
- в офис, никакой удалёнки
- не сайты, а серьезная разработка, потому что сайтами я уже очень давно не занимаюсь
Итак, требования к знаниям и не только: азы PHP:
- отчетливо понимать этапы выполнения программы "Парсер - Компилятор - Рантайм", понимать, что PHP - компилируемый язык
- уметь объяснить слова "динамическая нестрогая типизация"
- знать, что такое переменная, константа (глобальная и в классе)
- иметь представление об областях видимости, глобальности и локальности имён
- знать, какие типы есть в языке, помнить о неочевидностях при приведении и сравнении разных типов (типа "1" == "01")
- иметь представление о приоритете операций
- понимать, что в PHP всё является выражением
- булев тип и операции над ним, разница между &&, & и and например
- знать несколько самых нужных строковых функций
- уверенно работать с массивами, знать самые востребованные функции, не пугаться большой вложенности
- уметь получить данные из $_POST, загрузить файл (или несколько сразу) через $_FILES
- уверенно владеть файловыми операциями, понимать концепцию "всё есть файл" и иметь представление о правах на файлы
- знать все циклы и управляющие конструкции языка кроме goto
- понимать, зачем нужны пространства имён
- уметь написать автозагрузку для своего проекта, знать о существовании стандартов на автозагрузку
объектная модель PHP:
- наследование и модификаторы доступа
- разница между статикой и динамикой, смысл в статических свойствах и методах, хотя бы на примере ORM
- позднее и раннее статическое связывание
- интерфейсы и трейты, как обход отсутствия множественного наследования
- абстрактные классы с реализацией методов
- класс, как тип, instanceof, класс-хинтинг, опять же тут интерфейсы
- магические методы на примере конструктора, __get, __set, __call
- исключения - понимание темы и хорошие примеры использования
Паттерны проектирования:
- MVC
- ORM
- ActiveRecord
- Depedency Injection
Прочее:
- PHPStorm уже фактически обязательно
- знакомство хотя бы с одним современным фреймворком
- умение пользоваться composer
- аккаунт на гитхабе, что подразумевает хотя бы начальное владение git в обязательном порядке
- в плюс будет linkedin или еще какая-то профессиональная сеть
- скайп для оперативной связи
Опрятный внешний вид. 
Отсутствие приверженности к какой-либо секте, учению, движению, партии "Единая Россия" и ее молодежным объединениям.
Приличное содержание страниц в социальных сетях. Стоп-факторами могут стать: музыка в стиле шансон на страничке, обсуждение телевизионных передач и сериалов, видео и фото сомнительного содержания, много алкоголя, опять же ярко выраженные политические интересы.
Вот, пожалуй, и всё.
5 чел.