К нам на курс по web-разработке приходят люди с разной подготовкой и абсолютно разного возраста. В связи с тем, что спрос на IT специалистов стремительно растет, очень многие захотели сменить специальность и попробовать себя в этой перспективной отрасли.
Естественно, все студенты задаются вопросом трудоустройства. Мы дорожим каждым учеником и своей репутацией, поэтому всячески содействуем их будущему. В частности, помогаем в составлении резюме и готовим к собеседованиям, а наши преподаватели (ведущие специалисты таких компаний как Сбербанк, Яндекс, Додо Пицца и т.д.) готовы давать рекомендации перспективным студентам.
Мы, в Noric IT School, готовим специалистов, которые уже к середине курса могут решать практические задачки, которые дают в качестве тестовых в различных IT компаниях.
И вот несколько самых популярных заданий, с которыми сталкиваются начинающие backend-разработчики на php, с примерами их решения.
Напишите функцию Фибоначчи
Числа Фибоначчи – это ряд чисел, в котором каждое следующее число равно сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13…
Конечно, нужно понимать формулу для того, чтобы заложить ее в код:
Fn = Fn-1 + Fn-2 , n — порядковый номер элемента
А освоить PHP и узнать подробнее о дальнейшей работе можно у нас в Nordic IT School.
Задача на подсчет количества
В данном примере функция получает количество «программистов», на выдаче — правильное склонение слова «программист».
ТЗ: Написать функцию, которая будет параметром принимать целое число (программистов), а на выходе давать это же число + слово “программист” в склонении, соответствующем заданному числу.
Пример: 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. В зависимости от остатка, определить верное склонение и вывести его.
Расскажите про наследование в PHP
Здесь есть один тонкий момент, на котором бывает «валятся» даже сами специалисты, которые проводят интервью.
Решение:
Наследование — это один из 3-х постулатов ООП (еще полиморфизм и инкапсуляция), который нужен для того, чтобы сильно сократить количество кода и сделать его более удобным для управления. Суть наследования проста: если у вас есть несколько классов (например: User, Message и Comment), с большим количеством идентичных методов (читай копипастных), то можно взять все повторяющиеся методы и вынести их в какой-нибудь новый класс, например, Unit и, с помощью слова extends, подключить все эти методы из Unit в User, Message и Comment.
Какой профит? Польза в том, что, теперь, вы пишете методы не три раза, а всего один (код сильно сократился). И теперь, если в каком-то методе вдруг что-то нужно поменять, то меняете это в одном месте, а изменения применяются везде.
Тонкий момент: в PHP нет множественного наследования, в отличие от того же Java, то есть нельзя в одном классе наследовать методы от двух и более классов.
НО для интерфейсов (не графических) — множественное наследование есть.
Вопрос на засыпку: А как быть, если нету множественного наследования, но очень хочется?
Ответ: для решения этого вопроса используются Трейты и интерфейсы.
Расскажите чем static отличается от self
Это классический вопрос на позднее статическое связывание, который задают как джунам (реже), так и синьорам.
Решение:
Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.
Пример:
Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.
Расскажите, что такое $_GET и $_POST и в чем их разница
Вопрос классический и основополагающий, если кандидат не отвечает на него, значит скорее всего это «мимо».
Решение:
$_GET — это, великодушно созданный для нас языком, суперглобальный ассоциативный массив, в котором находятся расфасованные GET параметры — то есть те, что передались в адресной строке или URL после знака ?
$_POST — такой же ассоциативный массив но уже собранный из POST параметров — то есть тех, что передаются в теле запроса.
Вопрос на засыпку: (почему-то многие не отвечают) «а как еще можно получить POST параметры в PHP«?
Ответ: $_POST это форматированное и подготовленное для удобной работы тело запроса, но есть вариант получить тело запроса «как есть» с помощью:
Можно встретить такое, например при создании telegram-бота.