5 вопросов с собеседования на позицию Junior backend-разработчика на PHP
5 вопросов с ответами решениями, которые можно встретить на собеседовании на должность Junior PHP backend разработчика
16К открытий17К показов
Тимофей Житков
старший преподаватель в <a href="https://inordic.ru/">Nordic IT School</a> и Senior Full Stack Developer в агентстве недвижимости
К нам на курс по web-разработке приходят люди с разной подготовкой и абсолютно разного возраста. В связи с тем, что спрос на IT специалистов стремительно растет, очень многие захотели сменить специальность и попробовать себя в этой перспективной отрасли.
Естественно, все студенты задаются вопросом трудоустройства. Мы дорожим каждым учеником и своей репутацией, поэтому всячески содействуем их будущему. В частности, помогаем в составлении резюме и готовим к собеседованиям, а наши преподаватели (ведущие специалисты таких компаний как Сбербанк, Яндекс, Додо Пицца и т.д.) готовы давать рекомендации перспективным студентам.
Мы, в Noric IT School, готовим специалистов, которые уже к середине курса могут решать практические задачки, которые дают в качестве тестовых в различных IT компаниях.
И вот несколько самых популярных заданий, с которыми сталкиваются начинающие backend-разработчики на php, с примерами их решения.
Напишите функцию Фибоначчи
Числа Фибоначчи – это ряд чисел, в котором каждое следующее число равно сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13…
Конечно, нужно понимать формулу для того, чтобы заложить ее в код:
Fn = Fn-1 + Fn-2 , n – порядковый номер элемента
Задача на подсчет количества
В данном примере функция получает количество «программистов», на выдаче — правильное склонение слова «программист».
ТЗ: Написать функцию, которая будет параметром принимать целое число (программистов), а на выходе давать это же число + слово “программист” в склонении, соответствующем заданному числу.
Пример: 2 программистА
11 программистОВ
1 программист[ ]
Решение:
Если вы не знакомы с подобного рода задачами – то первое, что нужно сделать — это руками сформировать все возможные варианты, затем понять закономерность, которую потом можно заложить в код.
0 – программистов (про ноль не забываем – он в программировании очень важен)
1 – программист
2 – программиста
3 – программиста
4 – программиста
5 – программистов
6 – программистов
7 – программистов
8 – программистов
9 – программистов
10 – программистов
11 – программистов
12 – программистов
13 – программистов
14 – программистов
15 – программистов
16 – программистов
17 – программистов
18 – программистов
19 – программистов
20 – программистов
21 – программист
22 – программиста
Все, перебрали варианты.
В данном случае, чтобы понять закономерность, нужно смотреть остаток от деления на 10, а в каких-то случаях на 100. В зависимости от остатка, определить верное склонение и вывести его.
Обновление По просьбе автора код данного примера обновлён 7 марта 2021 г.
Расскажите про наследование в PHP
Здесь есть один тонкий момент, на котором бывает «валятся» даже сами специалисты, которые проводят интервью.
Решение:
Наследование — это один из 3-х постулатов ООП (еще полиморфизм и инкапсуляция), который нужен для того, чтобы сильно сократить количество кода и сделать его более удобным для управления. Суть наследования проста: если у вас есть несколько классов (например: User, Message и Comment), с большим количеством идентичных методов (читай копипастных), то можно взять все повторяющиеся методы и вынести их в какой-нибудь новый класс, например, Unit и, с помощью слова extends, подключить все эти методы из Unit в User, Message и Comment.
Какой профит? Польза в том, что, теперь, вы пишете методы не три раза, а всего один (код сильно сократился). И теперь, если в каком-то методе вдруг что-то нужно поменять, то меняете это в одном месте, а изменения применяются везде.
Тонкий момент: в PHP нет множественного наследования, то есть нельзя в одном классе наследовать методы от двух и более классов.
НО для интерфейсов (не графических) — множественное наследование есть.
Вопрос на засыпку: А как быть, если нету множественного наследования, но очень хочется?
Ответ: для решения этого вопроса используются Трейты и интерфейсы.
Расскажите чем static отличается от self
Это классический вопрос на позднее статическое связывание, который задают как джунам (реже), так и синьорам.
Решение:
Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.
Пример:
Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.
Расскажите, что такое $_GET и $_POST и в чем их разница
Вопрос классический и основополагающий, если кандидат не отвечает на него, значит скорее всего это «мимо».
Решение:
$_GET
— это, великодушно созданный для нас языком, суперглобальный ассоциативный массив, в котором находятся расфасованные GET параметры – то есть те, что передались в адресной строке или URL после знака ?
$_POST
— такой же ассоциативный массив но уже собранный из POST параметров — то есть тех, что передаются в теле запроса.
Вопрос на засыпку: (почему-то многие не отвечают) «а как еще можно получить POST параметры в PHP«?
Ответ: $_POST
это форматированное и подготовленное для удобной работы тело запроса, но есть вариант получить тело запроса «как есть» с помощью:
Можно встретить такое, например при создании telegram-бота.
16К открытий17К показов