СоХабр закрыт.

С 13 мая 2019 года он не сканирует новые посты.
С 20 мая 2019 года не перенесённые в черновики посты теперь редиректят на Хабр.

| сохранено

H Вопросы и тестовые задания на позицию Junior PHP Developer в черновиках Recovery Mode

PHP
image
Привет всем!
В последнее время побывал на многих собеседованиях, позиционируюсь я как Junior PHP Developer. До этого я нереально боялся всех собеседований, боялся завалить их, пытался готовиться к ним, гуглил примерно такого рода статьи, которую пишу сейчас (и находил не прямо так много информации). Здесь я хотел бы оставить список всех возможных вопросов, которые Вам могут задать на собеседовании с техническим специалистом, которые задавали мне в различных компаниях, а так же тестовые задания которые мне приходилось выполнять, чтобы добраться до технических собеседований. Помимо PHP сюда вставлю парочку вопросов по MySQL, конечно же. Поехали!

И так, в тех компаниях куда я позиционировался, самые частовстречающие вопросы:
  • Суперглобальные массивы PHP? Какие знаете? Зачем нужны, опишите их
  • Опишите язык PHP. Интерпретируемый? А как это? Чем отличается от компилируемого?
  • Что такое POST и GET? Отличия? Что знаешь помимо POST и GET?
  • Что означает двойное двоеточие в PHP — "::" ?
  • Что такое абстрактный класс? Отличия абстрактного класса от интерфейса?
  • Поддерживает ли PHP множественное наследование? Как его можно имитировать?
  • Расскажите о трейтах
  • Может ли быть класс абстрактным не имея абстрактных методов? (Имеется ввиду, не будет ли ошибки, если поставить классу abstract но не объявить ни одного абстрактного метода)
  • Что такое статический метод?
  • Расскажи про магические методы в PHP, какие знаешь
  • Чем отличается запись типа:
    $obj = $obj2;
    от
    $obj = clone $obj2
  • Что такое протокол? Протоколом какого уровня является HTTP? Возможно, чтобы одно устройство было и клиентом и сервером?
  • Расскажите об отличиях между == и ===
  • Какая типизация в PHP?
  • Знаешь что-то о замыканиях?
  • На каких трех принципах базируется ООП? Расскажи о них, а также приведи примеры
  • Я ввожу адрес любой адрес сайта, расскажи, что происходит внутри? Как мы попадаем на сайт?
  • Какой файл откроется по стандарту на сайте, index.html или index.php, и от чего это зависит?
  • Ок, допустим я хочу, чтобы мой скрипт работал долго. Где я могу поменять эти параметры?
    (Я отвечал, что в самом PHP прописать ini_set('max_execution_time', 0); а также в конфигурационном файле php.ini, на что спрашивают дальше — а еще? на уровне сервера как-то можно?)
  • Вот у тебя есть допустим два твоих сайта. Как можно сделать так, чтобы пользователи зарегистрированные на одном твоём сайте, могли попадать на другой твой сайт с этим же логином и паролем?
  • Почему выбрали именно PHP?
  • Как отключить вывод ошибок в PHP? Какие бывают ошибки?
  • Расскажи об отличиях между PHP 5.3, 5.4 и 5.5
  • Сколько типов данных PHP? Перечисли все типы данных
  • Отличия между require() и include()
  • Какие знаете встроенные функции по работе с массивами? А со строками?
  • Как получить первый элемент массива?
  • Расскажи о сессиях и куках. Где хранятся сессии? А можно их хранить в БД?
  • Вопрос с заковыркой: Как создать экземпляр абстрактного класса?
  • Как удалить объект/переменную вручную?
  • Как удалить файл с сервера?
  • Какие движки MySQL знаете? Отличия?
  • На какие параметры нужно ставить INDEX в таблице MySQL?
  • Можно ли повесить индекс UNIQUE на два поля?
  • Какие знаете индексы БД? Опишите каждый из них
  • Вот вам массив (дают ноутбук), отсортируйте без встроенных PHP функций вручную его
  • Какой командой в GIT можно загрузить Ваш код?
  • Если позиционируетесь на должность как разработчик на фреймворке, попросят сравнить Ваш фреймворк с другими популярными. Допустим, почему выбрали Laravel, а не Yii2?


Ну вроде большинство всего такого я рассказал из вопросов, вас понятное дело могут погонять по особенностям вашего выбранного фреймворка, а теперь перейдем к тестовым:

  • Стартовая страница сайта должна представлять собой список всех публикаций пользователя во фрейме с полосой прокрутки. Публикации должны быть представлены не полным текстом, а заголовок и 300 символов с начала поста. В конце публикации должна быть ссылка на страницу с полным текстом Read more
  • На странице просмотра публикации необходимо отобразить блок поста, название и полный текст. Под ним находится блок комментариев. Комментарии добавляются с помощью ajax.
  • Валидацию полей необходимо провести и со стороны сервера и со стороны браузера.
  • Страница добавления/редактирования поста. При добавлении и редактировании использовать WYSIWYG редактор
  • На главной странице записи должны быть отсортированы в порядке LIFO
  • При выполнении задания использовать PHP 5.3+ и jQuery 1.7+


Тестовое задание второй компании:
Создайте на *название вашего фреймворка* доску объявлений.
Должен присутствовать функционал регистрации и авторизации пользователей. После того как пользователь зарегистрировался и авторизовался он может заполнить информацию о себе и загрузить свое фото, добавить объявления с фото. К профилю пользователя можно добавлять текстовые комментарии и ставить оценку (рейтинг от 1 до 5). На главной странице сайта отображаются 20 последних добавленных объявлений и присутствует пагинация.
Готовый функционал нужно выложить на Git и прислать нам.


Тестовое задание третьей компании:
Задание:

1. Создать справочник журналов, с возможностью CRUD. У каждого журнала должны быть:

1.1 Название. (Обязательное поле)
1.2 Короткое описание. (Необязательное поле)
1.3 Картинка. (jpg или png, не больше 2 Мб, должна сохраняться в отдельную папку и иметь уникальное имя файла)
1.4 Авторы (Обязательное поле, может быть несколько авторов у одного журнала, должна быть возможность выбирать из списка авторов, который создается отдельно).
1.5 Дата выпуска журнала.

2. Список авторов создается отдельно. Также должна быть возможность добавления, удаления и редактирования. У каждого автора должны быть:
2.1 Фамилия (Обязательное поле, не короче 3 символов)
2.2 Имя (Обязательное, не пустое)
2.3 Отчество (Необязательное)

3. На выходе получаем:
3.1 Просмотр отдельно страниц журналов и авторов.
3.2 На странице авторов:
3.2.1 Должна быть возможность увидеть список всех журналов определенного автора.
3.2.2 Сделать сортировку авторов по фамилии
3.3.3 Сделать сотрировку таблицы по дате выпуска журнала.
3.4 Работа с каждой отдельной страницей должна происходить без её перезагрузки с использованием jQuery (или Angularjs).
3.5 Сделать пагинацию по журналам и авторам
4. Рекомендуемое время выполнения задания — 4 часа.


Всем удачных подготовок и прохождения собеседований!
–1
473

комментарии (2)

–1
ayamaha ,  
Спасибо большое! Подскажите пожалуйста, сколько времени давалось на тестовые задания?
–1
Twitt ,   * (был изменён)
на последнее давали пару суток, но рекомендованное было 4 часа, с первым в не серьезной фирме все было, там дали 6 дней) на втором задании 4 дня