Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: собеседование на junior php
Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015
Помог: 14 раз(а)
В 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.е один из вопросов, сколько я знаю методов инициализации массивов, я написал
на что мне было сказано, что нужно именно $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. сори за столько много букв, просто накипело, две недели потратил на все это, и никакого результата.....
Покинул форум
Сообщений всего: 66
Дата рег-ции: Окт. 2014
Помог: 3 раз(а)
Да не переживай ты так. Первые собеседования всегда сложные) Потом будет легче.
По поводу джуниора - у него практический опыт может быть и не большим, но теоретические знания должны быть на достаточно высоком уровне.
Также должен быть высокий уровень обучаемости.
Цитата:
ну неужели junior должен знать разницу между php 5.4 и php 5.6
Это один из самых частых вопрос на собеседованиях. Раньше спрашивали чем отличается php 4 от php 5, myqsl 4 от mysql 5 и т.д.
Цитата:
Или же знать и во всю использовать транзакции? Или же знать разницу между первичным и уникальным ключами?
Основы баз данных надо знать
Продолжай искать работу. Все обязательно получится)
Добавлю еще, что на собеседование какими бы ты знаниями не обладал, важно оставить благоприятное впечатление о себе.
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
require и include вроде отличаются уровнем предупреждений.
----- Март 2021. Бросил программирование
Мелкий
Отправлено: 04 Июня, 2015 - 11:20:38
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
exlant пишет:
по-другому функция автозагрузки(spl_autoload_register) не будет работать
Будет, она жрёт любой валидный callback, можно дать обычный объект с обычным методом.
Просто обычно удобно замыканием или статическим методом.
exlant пишет:
мне заявили, что я вообще не разбираюсь в том, что пишу и абсолютно не знаю принципов ооп
С суждением согласен. Инкапсуляцию объяснить должен даже джун.
exlant пишет:
И тут мне говорят, что объект и массив это не переменные, а структуры!
Переменная в PHP тоже структура, zval. Вопрос терминологии. Этот вопрос провалю и я.
exlant пишет:
было сказано главное отличие это то что require возвращает return, а include нет, и именно поэтому require намного ресурсоемче чем include
Заблуждение. Бывает.
exlant пишет:
разве junior должен знать отличии между версиями php?
Именно должен - не обязательно. Но это показатель для комплексной оценки.
DeepVarvar пишет:
Ну почему, если предположить что это пользовательский класс имплементирующий аррай-акцесс/итератор, тогда вполне себе можно.
Невозможно. Это parse error
exlant пишет:
на что мне было сказано, что нужно именно $obj = new $name(), а $obj = new $name; не отработает... Я начал было спорить, что оно и так и так работает, но мне было сказано что я не прав!
Вы правы.
exlant пишет:
на одних собеседованиях целенаправленно пытаются завалить, притом спрашивают вещи, которые и сами не знают...
Есть такое дело. Просто пробовать другие компании.
exlant пишет:
на других, какие то завышенные требования к junior программисту!
Даже техлид в одной компании может быть всего лишь джуном в другой. И это будет серьёзным профессиональным ростом, как правило.
----- PostgreSQL DBA
DeepVarvar
Отправлено: 04 Июня, 2015 - 11:48:18
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Мелкий пишет:
Невозможно. Это parse error
Только если имя класса (без учета регистра) будет Array
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Мелкий пишет:
С суждением согласен. Инкапсуляцию объяснить должен даже джун.
90% "мидлов" не могут ответить на этот вопрос - зачем писать private. 80% не могут дать нормальное определени инкапсуляции. Это какая-то системная проблема ;))
Мелкий пишет:
Переменная в PHP тоже структура, zval. Вопрос терминологии. Этот вопрос провалю и я.
Массив - это не переменная ;) (Добавление)
exlant пишет:
Что должен знать и уметь junior?
Юниор очень расплывчатое понятие, конечно. Но все же это больше к опыту работы, а не к базовым знаниям.
Базовые знания про ООП должны быть, хотя бы в теории. Знание языка - должно быть хорошее. Т.е. что такое неймспейсы, трейты, генераторы - стоит знать. Конечно, запоминать что в какой версии появилось - бред, но спрашивают, увы. Интерфейсы, абстрактные классы, основные паттерны хотя бы по книжке четверки.
Конечно, и без этого можно найти работу. Но проблема в том, что этому скорее всего на работе и не научат. В лучшем случае заучите что-то правильное без понимания сути. Так что читать, читать все подряд.
----- self-banned
DeepVarvar
Отправлено: 04 Июня, 2015 - 13:18:00
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
MiksIr, вообще ТС так написал:
exlant пишет:
переменная это ячейка для хранения данных, объект и массив являются типами переменной. И тут мне говорят, что объект и массив это не переменные, а структуры!
Я конечно не уверен что он на собеседовании именно так и сказал.
Хотя терминология в его ответе некорректна, тем не менее -- осознание разницы у него присутствует.
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
- что такое яблоко?
- это то, что можно положить в ящик.
О типе переменной можно говорить лишь глядя на конкретную переменную. До этого момента - это типы данных. Которые чем-то отличаются. Иначе получится
- а что такое строка?
- это тип переменной.
- а интеджер?
- тоже тип переменной.
Я всегда вспоминаю случай, когда в институте под зачет написал девочке программу и подробно объяснил, что каждый оператор делает. Вроде все поняла. Потом приходит с зачета - отправили думать, и спрашивает "а что это" и указывает на точку с запятой (это паскаль был, но не суть).
Т.е. человек может знать слова, но иметь более глобальные проблемы.
----- self-banned
exlant
Отправлено: 04 Июня, 2015 - 13:33:39
Посетитель
Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015
Помог: 14 раз(а)
Ch_chov пишет:
Это из javascript.
Ну да, хотя в том же js, я предпочитаю использовать var array = []; меньше букв)
Dastor пишет:
Да не переживай ты так. Первые собеседования всегда сложные) Потом будет легче.
та да)) просто вчера пришел домой уставший, злой, и разочарованный... вот поспал, и попустило))))
Dastor пишет:
По поводу джуниора - у него практический опыт может быть и не большим, но теоретические знания должны быть на достаточно высоком уровне.
Также должен быть высокий уровень обучаемости.
ну не на уровне цитирования любой редко используемой фигни из мануала, ну это имхо, согласен на счет обучаемости, я даже считаю это должно быть самым главным и жирным +, а не знание теории того, что ты не используешь, опять же имхо, практика и теория должны идти рядом взявшись за руки! Я действую таким вот способом, попадается что то новое, то я читаю с начало теорию, пробую на практике, потом перечитую теорию, а потом уже могу более-менее нормально это использовать. А зубрить одну теорию не вижу никакого смысла!
Dastor пишет:
Основы баз данных надо знать
согласен, но это не то к чему бы стоило придираться, если бы мне понадобилось отличие между первичным и уникальным ключем, я бы посмотрел в нете 1 мин. на поиск, около 10 мин. что бы разобраться... другое дело запросы к базе, то что постоянно используется...
Dastor пишет:
Добавлю еще, что на собеседование какими бы ты знаниями не обладал, важно оставить благоприятное впечатление о себе.
Ну в моем понимании, я должен составлять благоприятное впечатление... Одет строго, туфли, брюки, рубашка(тениска), от меня не воняет сигаретами, в разговоре чувствую себя спокойно и уверенно, не мямлю, не шипилявлю, не заговариваюсь, не стесняюсь, иногда вставляю безвинную шутку, обращаюсь с уважение на Вы, даже если вижу, что общаюсь примерно со своим одногодкой, и он начинает переходить на ты. Если знаю вопрос, четко отвечаю, если нет говорю что не сталкивался еще с этим. В общем на мое мнение я должен производить впечатления уверенного, общительного, аккуратного и ответственного человека! Хотя на первом собеседовании чувствовал себе немного скованно...
DeepVarvar пишет:
Ну почему, если предположить что это пользовательский класс имплементирующий аррай-акцесс/итератор, тогда вполне себе можно.
Но я не понимаю зачем ))
да в том то и дело, что вопрос был про стандартные способы инициализации массива...
и вот к стати, Ch_chov, написал способ который я не знал - $array = (array) null; Но проводящий собеседование походу тоже этого не знал, раз написал $array = new Array();..
dcc0 пишет:
require и include вроде отличаются уровнем предупреждений.
Именно в этом и есть их основное различие, а в не в возврате или не возврате return...
То есть мне задали вопрос на который и сами не знали ответ, а раз не знали значит этим и не пользуются... Так зачем задавать тогда?
Мелкий пишет:
exlant пишет:
по-другому функция автозагрузки(spl_autoload_register) не будет работать
Будет, она жрёт любой валидный callback, можно дать обычный объект с обычным методом.
Просто обычно удобно замыканием или статическим методом.
Fatal error: Uncaught exception 'LogicException' with message 'Passed array specifies a non static method but no object (non-static method spl_autoload::autoload() should not be called statically)'
Мелкий пишет:
С суждением согласен. Инкапсуляцию объяснить должен даже джун.
Да я согласен с этим, я бы и смог объяснить и инкапсуляцию, и наследование, и абстракцию, и полиморфизм, и что такое static, private, public, protected и для чего используются! Но вопрос не был задан таким образом, меня попросили объяснить почему я использовал здесь это а здесь это, на что искренне и честно ответил, что не помню, а комментариев там не было, а мне на основе всего этого заявили, что я не понимаю ооп...
Мелкий пишет:
Заблуждение. Бывает.
А зачем тогда спрашивать, раз сам этим не пользуешься...
Мелкий пишет:
Даже техлид в одной компании может быть всего лишь джуном в другой. И это будет серьёзным профессиональным ростом, как правило.
Согласен, но в своем резюме я явно указывал, что я только начинаю, и у меня нет практического опыта! Зачем тратить свое и чужое время?
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
http://php.net/manual/ru/langref.php
Сначала идут типы. Потом - переменные. Ибо переменные - это хранилища для типа. Ибо тип переменной - это всего лишь тот тип, что хранится в перемнной... а что это за тип такой, что он представляет из себя - тип "массив". Вот в этом вопрос в общем =) (Добавление)
Вот видите, сразу важные ошибки.
1. Вы не до конца просмотрели пример документации, там есть вариант с замыканием.
2. Вы не знаете, что такое callable, что можно передавать в этот аргумент, что объект и класс - это разные вещи, и объект должен быть создан
3. Плохо читаете сообщения об ошибках Fatal error: Uncaught exception 'LogicException' with message 'Passed array specifies a non static method but no object (non-static method spl_autoload::autoload() should not be called statically)'
----- self-banned
Panoptik
Отправлено: 04 Июня, 2015 - 13:40:20
Постоянный участник
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
неудачные компании вам попадались, продолжайте ходить на собеседования. 2 недели это не показатель. хотя и можно найти работу. на бесплатные стажировки не соглашайтесь. уже через 2-4 недели при активной работе вы вполне будете решать задачи компании, путь это будут рутинные и неинтересные но они есть и их нужно кому-то решать. и это решение должно быть оплачено
ну и все правильно делаете, после каждого собеседования проходите по тому что спрашивали, и более того перед собеседованием надо бы ознакомиться со всем перечнем requirements и как минимум в общих чертах знать что это за абревиатура и зачем она нужна
ну а на счет сравнения версий языка, это вообще вопрос ниочем. потому что джун не будет использовать то что появилось в 5.5 и 5.6, по крайней мере активно, ну и чтобы знать разницу между версиями, нужно просто через это пройти. если скажем вы начнете работать сразу с 5.6 то откровенно говоря вам будет наплевать в каком релизе 5.3, 5.4 или 5.5 появилась та или инная возможность
----- Just do it
dcc0
Отправлено: 04 Июня, 2015 - 13:41:53
Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
exlant, если ты в Москве и если ты знаешь Java Script, могу дать ссылочку и контакт, ЗП небольшая, но контора надежная.
----- Март 2021. Бросил программирование
exlant
Отправлено: 04 Июня, 2015 - 13:55:42
Посетитель
Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015
Помог: 14 раз(а)
dcc0 нет я не в Москве) Panoptik согласен с вами, работать бесплатно не пойду, лучше дома посижу, и сам поучусь.
MiksIr пишет:
Вот видите, сразу важные ошибки.
1. Вы не до конца просмотрели пример документации, там есть вариант с замыканием.
2. Вы не знаете, что такое callable, что можно передавать в этот аргумент, что объект и класс - это разные вещи, и объект должен быть создан
3. Плохо читаете сообщения об ошибках Fatal error: Uncaught exception 'LogicException' with message 'Passed array specifies a non static method but no object (non-static method spl_autoload::autoload() should not be called statically)'
1. До конца я посмотрел!
2. Знаю я разницу... и в свою защиту скажу что не задумывался, как устроена эта функция внутри, вызывал ее просто передав название класса и метода в аргументе, как и было написано в примере! И если передать не static, таким образом, работать не будет! И да я не создавал объект перед этим, наивно предполагая, что функция сама его создаст... MiksIr и да, спасибо! Теперь буду знать, что и так можно делать!
И к стати замыкание там описано в комментариях, а не в самой документации...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.