Однако в тестовых заданиях есть и положительные стороны, при реализации возможно увидеть свои недочеты, либо просто интересные моменты, на которые ты раньше не обращал внимание или вовсе не использовал. Лично я за свои 3 года активного веб-программирования проходил более 20 собеседований и накопилось не мало тестовых задач, сегодня и в будущем буду их складывать в данный материал. Внутри вы найдете задания, а также мои ответы на них. Задания могут быть очень старыми и сейчас бы я сделал совсем по другому, но пусть будет как было, дабы став в будущем великим гуру, можно было посмотреть на свои ответы. Также возможно они пригодятся кому-то еще.
Данный материал будет постоянно дополняться...
- 2017 год
- 2016 год
- Шпаргалка по SOLID
- Мои парсеры для разных сайтов
- Тестовое задание - разработка проекта для сжатия урлов (NixSolution)
- 2015 год
- 2014 год
- 2013 год
2017
Хорошие примеры вопросов с ответами от компании toptal
2016
Шпаргалка по SOLID
- Принцип единственной ответственности (Single responsibility)
«На каждый объект должна быть возложена одна единственная обязанность»
Для этого проверяем, сколько у нас есть причин для изменения класса — если больше одной, то следует разбить данный класс. - Принцип открытости/закрытости (Open-closed)
«Программные сущности должны быть открыты для расширения, но закрыты для модификации»
Для этого представляем наш класс как «чёрный ящик» и смотрим, можем ли в таком случае изменить его поведение. - Принцип подстановки Барбары Лисков (Liskov substitution)
«Объекты в программе могут быть заменены их наследниками без изменения свойств программы»
Для этого проверяем, не усилили ли мы предусловия и не ослабили ли постусловия. Если это произошло — то принцип не соблюдается - Принцип разделения интерфейса (Interface segregation)
«Много специализированных интерфейсов лучше, чем один универсальный»
Проверяем, насколько много интерфейс содержит методов и насколько разные функции накладываются на эти методы, и если необходимо — разбиваем интерфейсы. - Принцип инверсии зависимостей (Dependency Invertion)
«Зависимости должны строится относительно абстракций, а не деталей»
Проверяем, зависят ли классы от каких-то других классов(непосредственно инстанцируют объекты других классов и т.д) и если эта зависимость имеет место, заменяем на зависимость от абстракции.
Мои парсеры
На новой работе первоначально пришлось делать много парсеров, которые бы могли парсить категории и товары, складывая это все добро в XML файл. Итоговый файл формата YML (Yandex Market Language)
Тестовое задание - разработка проекта для сжатия урлов (NixSolution)
В январе 2016 года проходил собеседование в Харьковскую компанию - NixSolution. Сделал для них тестовое задание, на yii2 фреймворке, прошел собеседование, а фитбек так и не получил, вот такие они топовые компании :) В итоге работаю в другой компании и пфу-пфу пока не жалею.
● PHP 5.6+
● ООП
● PSR2 (http://www.phpfig.org/psr/psr2/) и PSR4 (http://www.phpfig.org/psr/psr4/)
● Apache 2.4 / Nginx
● PDO для работы с MySQL Будет хорошим плюсом, если будет использовано:
● https://getcomposer.org/ для автолоада классов и подключения сторонних библиотек, используемых для решения задачи (написанных вами в том числе)
● http://getbootstrap.com/ для стилизации HTML страниц Решение прислать ввиде ссылки на код проекта на https://github.com/ В репозитории обязан быть файл README.md, содержащий инструкцию как установить проект и просмотреть функциональность.
Покрыть код unitтестами (https://phpunit.de). Юнит тесты добавить в проект с помощью composer https://getcomposer.org/
Как бонус: Пользователь, создающий ссылку также получает ссылку на статистику переходов. В статистике должна отображаться география переходов, данные из юзер агентов переходящих (можно использовать google charts).
2015
Очередной стартап прислал вакансию на должность php программиста. Первоначально была озвучена неплохая зарплата, поэтому и взялся за выполнение тестового задания. После выполнения тестовых задач, понял что ребята немного странные и денег у них особо нет, на этом сразу и распрощались, но демо и пример кода можно посмотреть по ссылкам внизу.
Демо функции и парсера / Скачать примера кода
2014
Как-то пришла вакансия от достаточно известного украинского банка. Решил пройти собеседование и посмотреть что они предложат. Как всегда необходимо выполнить тестовое задание. Могу сказать, что работают там отличные ребята, задания у них интересные и по времени не занимают много времени, но вот зарплата, к сожалению не сильно высокая, поэтому мы с ними распрощались. Задача была сделать веб-страницу с редактором для ручного набора. Код решения вы можете посмотреть на странице -> пример мини FAQ с вопросом и ответом.
2013
Одно из самых стандартных тестовых задач в 2013 году и даже сейчас - это гостевая книга. Код решения вы можете посмотреть на странице -> пример гостевой книги