В php я себя чувствую довольно уверенно, конечно не все знаю, не все умею, не со всем сталкивался... Вот решил попробовать устроиться на работу на вакансию php junior, прошел несколько собеседований(4). И у меня возник вопрос, а что собственно должен знать junior php developer? Насколько я понимаю junior php это тот, который после института, без или с не значительным опытом работы... Я видел код, и вопросы студентов выпускников на этом форуме, да и на других, с уверенностью могу сказать, что мои знания и понимание php выше их! Конечно студенты разные бывают....
Вот немного про собеседования:
1-ое собеседование: я показывал свой класс автозагрузки классов, работодатель увидел static метод, спросил чего я использовал именно static, на что я ответил по-другому функция автозагрузки(spl_autoload_register) не будет работать, пошли дальше! Открыл ему следующий файл, там был класс с кучей свойств и методов, c разными модификаторами private, protected, public, меня спросили почему я использовал здесь private, там protected, тут public, на что я ответил, что не помню и объяснил почему,(это был старый код без комментариев) почему использовал именно такой модификатор, и мне заявили, что я вообще не разбираюсь в том, что пишу и абсолютно не знаю принципов ооп, и что я вообще зря полез в такие дебри, и что мне нужно начинать с самых основ, с понятия что такое переменная, что такое объект, что такое массив. Ну я ответил, что вроде как знаю это все, переменная это ячейка для хранения данных, объект и массив являются типами переменной. И тут мне говорят, что объект и массив это не переменные, а структуры! Ну я не спорил. Домой пришел посмотрел в нете, и там пишут что таки объект и массив это типы переменной, даже на этом сайте так написано, значит я был прав!
Еще спросили различии между require и include, сказал что не знаю в основном использую require, на что мне было сказано главное отличие это то что require возвращает return, а include нет, и именно поэтому require намного ресурсоемче чем include. Пришел домой посмотрел в нете, а return возвращает и require, и include, а отличие у них совершенно в другом...
Еще спрашивали отличие между php 5.4 и 5.6, вспомнил только про mysql_* deprecated, но разве junior должен знать отличии между версиями php?
В общем сошлись на том, что дали мне тестовое задание, простенькое, написать форму, и при клике сделать js валидацию, и потом отправить пришедшие данные на почту, и записать в базу! Сделал отправил им, ответа не было... неужели так сложно было ответить хоть что то....
2.е собеседование прошло нормально, ответил на большинство вопросов, сделал небольшое тестовое задание, сказали позвонят. Спустя время на почту пришло письмо, о том что готовы меня взять на стажировку и обучение, удаленно и бесплатно(на 1-2 месяца)
3.е перед собеседованием дали ТЗ написать, написал, выслал, пригласили на собеседование! На собеседовании дали писать долгие нудные тесты, на определение типа характера и смекалки, потом сказали, что тест вообще не важен, и задали пару вопросов про php, один на временные функции - не ответил, другой про транзакции, сказал, что знаю что это такое, но никогда еще не сталкивался. Тоже на почту пришло письмо, что я не подхожу их компании.
4.е один из вопросов, сколько я знаю методов инициализации массивов, я написал
1. exlant - 04 Июня, 2015 - 02:46:40 - перейти к сообщению
он мне дописал еще
$array = new Array();
и еще один, как инициализировать класс с помощью переменной, в которой находиться название класса. я написал:
на что мне было сказано, что нужно именно $obj = new $name(), а $obj = new $name; не отработает... Я начал было спорить, что оно и так и так работает, но мне было сказано что я не прав!
Потом начал проверять мои знания алгебры и геометрии, и сказал что программист должен думать алгоритмами, а не языковыми конструкциями! В общем мне было отказано в работе, и предложен бесплатный испытательный срок...
Я приехал домой, и конечно все проверил: $obj = new $name; прекрасно работает! А на его дописанный способ инициализации массива в php - $array = new Array(); IDE сразу ругнулась, ошибкой синтаксиса....
в общем сложилось впечатление, что на одних собеседованиях целенаправленно пытаются завалить, притом спрашивают вещи, которые и сами не знают...
на других, какие то завышенные требования к junior программисту! ну неужели junior должен знать разницу между php 5.4 и php 5.6? Или же знать и во всю использовать транзакции? Или же знать разницу между первичным и уникальным ключами?
Что должен знать и уметь junior?
Посоветуете что делать? А то я в замешательстве... Искать дальше работу, то есть активно ходить на все собеседования? Идти стажироваться бесплатно? Дальше самому заниматься, наращивать скилы?
p.s сейчас делаю тз, реализовал пока только регистрацию, и аутентификацию на mongoDB(условие тз), вот ссылка на гитхабе https://github[dot]com/exlant/ticTacToe , если кому не сложно, просмотрите и дайте оценку коду, может я действительно не готов еще идти на junior php программиста.
p.s.p.s. сори за столько много букв, просто накипело, две недели потратил на все это, и никакого результата.....