Введение
Начну издалека. Наверное, у каждого опытного разработчика живущему в провинциальном городке возникают мысли о переезде в другой город, где IT сфера наиболее развита. Так же получилось и у меня… У меня выбор встал между Санкт-Петербургом и Москвой, после первой поездки в Питер первый вариант отпал сам собой — город просто не понравился. Но в плане выбора города — тут все индивидуально, кому что нравится больше. Я выбрал столицу для возможного переезда в течение года.
После того, как я определился с городом я начал поиск интересных для себя предложений. По опыту скажу, что искать стоит в первую очередь на HH, а так же на МоемКруге, не стоит и забывать о pruffi. По опыту общения с компаниями в процессе я понял, что без очных собеседований не обойтись, хотя некоторые идут на Skype собеседования с последующим очным.
На очные собеседования я выделил 3 полных дня — этого более чем достаточно. В один день реально проходить 3 собеседования, но не более того, т.к. обычно собеседование занимает порядка 1.5-2 часов.
В итоге, для одной компании делал тестовое задание (1-2 дня), примерно с 2-3 проходил Skype собеседования. Договориться о Skype собеседовании очень важно, с моей точки зрения, на ней можно сразу понять подходим ли мы друг другу и сэкономить кучу времени.
Примерно через неделю-две у меня было порядка 8 приглашений на очные собеседования, которые устраивали меня и предложения были очень интересными.
О подготовке
В процессе Skype собеседований можно примерно проанализировать пробелы в знаниях и компенсировать их до очного собеседования, пока есть время.
Первым делом рекомендую освежить в памяти паттерны проектирования и ООП — без глубокого знания этой темы ехать на собеседования бесполезно. По подготовке рекомендую две книги:
-
Приемы объектно-ориентированного проектирования. Паттерны проектирования, Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. (в быту — банда четырех)
-
PHP. Объекты, шаблоны и методики программирования, Мэтт Зандстра
Я разобрал около 15-20 паттернов, но в реальности спрашивают про основные. Вот те, о которых меня точно спрашивали:
-
Порождающие: Singleton, Factory method, Abstract Factory, Builder
-
Структурные: Composite, Decorator, Facade, Adapter
-
Поведенческие: Strategy
причем нужно уметь сравнивать, понимать чем отличаются друг от друга, представлять как реализовывать. Код реализации держать в голове нет никакой необходимости.
В зависимости от вакансии, на которую претендуешь, спрашивают вопросы по *nix командам, как сделать те или иные вещи (спрашивали, примерно в 2х собеседованиях). В некоторых компаниях, ведущие PHP-программисты выполняют роль и администратора и архитектора приложения и проектировщика БД и фронтэнд, у одной компании точно такое было :)
Основные вопросы, которые спрашивают можно найти на хабре:
тут и
тут — обязательно посмотрите, если есть пробелы — обязательно разберите.
Практически на каждом собеседовании есть вопросы по сравнению и преобразованию типов в PHP, к примеру, нужно понимать и объяснить что будет в результате подобных сравнений:
-
'1top' == 1
-
'0tw0111' == a (где «a» неопределенная константа)
и т.п…
Так же почти всегда встречаются вопросы на знание свежих версий PHP, что в них нового и т.п. Очень часто есть задача с клонированием объектов, как это в PHP 4 и PHP 5.
Замечу, что задач на логику не было нигде, но мне кажется, такие компании все таки существуют :)
Что касается БД. Если претендуете на проект с MySQL, то вас обязательно спросят о типах таблиц и их различиях, а так же, что такое индексы, как они устроены и какие бывают. Вас обязательно попросят написать SQL-запрос, где, почти наверняка, будут JOIN, HAVING, GROUP BY.
Сейчас у большинства серьезных вакансий встречается пункт HighLoad. Тут вас почти наверняка спросят про методы, какими вы будете пользоваться для оптимизации проекта под высокие нагрузки. Один раз спрашивали про акселераторы их особенности и как они работают.
Критерии, по которым я «оценивал» предложения:
-
Профессионализм команды.
-
Интерес к будущему проекту, над которым нужно будет работать.
-
Соц. плюшки, к примеру, наличие ДМС.
-
Заинтересованность в кадре работодателем.
-
Рабочее место.
По итогам собеседований, как оказалось, я прошел по всем вакансиям, куда ходил. Оставалось только выбрать наиболее подходящий вариант, что я и сделал не долго думая :)
источник и ссылки по теме:
http://habrahabr.ru/post/67963/
http://habrahabr.ru/post/126250/
http://job-interview.ru/questions/php/
http://ekimoff.ru/292/