Привет всем!
В последнее время побывал на многих собеседованиях, позиционируюсь я как 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 часа.
Всем удачных подготовок и прохождения собеседований!
Поделиться с друзьями
ayamaha
Спасибо большое! Подскажите пожалуйста, сколько времени давалось на тестовые задания?
Twitt
на последнее давали пару суток, но рекомендованное было 4 часа, с первым в не серьезной фирме все было, там дали 6 дней) на втором задании 4 дня