Найти тему
Nordic IT School

Пять задач с собеседований. PHP - junior

Оглавление

К нам на курс по 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. В зависимости от остатка, определить верное склонение и вывести его.

-2

Расскажите про наследование в PHP

Здесь есть один тонкий момент, на котором бывает «валятся» даже сами специалисты, которые проводят интервью.

Решение:

Наследование — это один из 3-х постулатов ООП (еще полиморфизм и инкапсуляция), который нужен для того, чтобы сильно сократить количество кода и сделать его более удобным для управления. Суть наследования проста: если у вас есть несколько классов (например: User, Message и Comment), с большим количеством идентичных методов (читай копипастных), то можно взять все повторяющиеся методы и вынести их в какой-нибудь новый класс, например, Unit и, с помощью слова extends, подключить все эти методы из Unit в User, Message и Comment.

-3

Какой профит? Польза в том, что, теперь, вы пишете методы не три раза, а всего один (код сильно сократился). И теперь, если в каком-то методе вдруг что-то нужно поменять, то меняете это в одном месте, а изменения применяются везде.

Тонкий момент: в PHP нет множественного наследования, в отличие от того же Java, то есть нельзя в одном классе наследовать методы от двух и более классов.

НО для интерфейсов (не графических) — множественное наследование есть.

Вопрос на засыпку: А как быть, если нету множественного наследования, но очень хочется?

Ответ: для решения этого вопроса используются Трейты и интерфейсы.

Расскажите чем static отличается от self

Это классический вопрос на позднее статическое связывание, который задают как джунам (реже), так и синьорам.

Решение:

Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.

Пример:

-4

Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.

Расскажите, что такое $_GET и $_POST и в чем их разница

Вопрос классический и основополагающий, если кандидат не отвечает на него, значит скорее всего это «мимо».

Решение:

$_GET — это, великодушно созданный для нас языком, суперглобальный ассоциативный массив, в котором находятся расфасованные GET параметры — то есть те, что передались в адресной строке или URL после знака ?

$_POST — такой же ассоциативный массив но уже собранный из POST параметров — то есть тех, что передаются в теле запроса.

Вопрос на засыпку: (почему-то многие не отвечают) «а как еще можно получить POST параметры в PHP«?

Ответ:  $_POST это форматированное и подготовленное для удобной работы тело запроса, но есть вариант получить тело запроса «как есть»  с помощью:

-5

Можно встретить такое, например при создании telegram-бота.