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
Форумы портала PHP.SU :: Версия для печати :: собеседование на junior php
Форумы портала PHP.SU » Разное » Прочее » собеседование на junior php

Страниц (3): [1] 2 3 »
 

1. exlant - 04 Июня, 2015 - 02:46:40 - перейти к сообщению
В 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.е один из вопросов, сколько я знаю методов инициализации массивов, я написал
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array();
  3. $array = [];
  4. $array[] = null;
  5.  

он мне дописал еще
$array = new Array();

и еще один, как инициализировать класс с помощью переменной, в которой находиться название класса. я написал:
PHP:
скопировать код в буфер обмена
  1.  
  2. $name = 'someClass';
  3. $obj = new $name;
  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. сори за столько много букв, просто накипело, две недели потратил на все это, и никакого результата.....
2. Ch_chov - 04 Июня, 2015 - 06:37:45 - перейти к сообщению
Цитата:
$array = new Array();
Это из javascript.

Кстати вот еще один способ:
3. Dastor - 04 Июня, 2015 - 09:20:42 - перейти к сообщению
Да не переживай ты так. Первые собеседования всегда сложные) Потом будет легче.
По поводу джуниора - у него практический опыт может быть и не большим, но теоретические знания должны быть на достаточно высоком уровне.
Также должен быть высокий уровень обучаемости.

Цитата:
ну неужели junior должен знать разницу между php 5.4 и php 5.6

Это один из самых частых вопрос на собеседованиях. Раньше спрашивали чем отличается php 4 от php 5, myqsl 4 от mysql 5 и т.д. Улыбка

Цитата:
Или же знать и во всю использовать транзакции? Или же знать разницу между первичным и уникальным ключами?

Основы баз данных надо знать

Продолжай искать работу. Все обязательно получится)

Добавлю еще, что на собеседование какими бы ты знаниями не обладал, важно оставить благоприятное впечатление о себе.
4. DeepVarvar - 04 Июня, 2015 - 09:56:46 - перейти к сообщению
Ch_chov пишет:
Это из javascript.
Ну почему, если предположить что это пользовательский класс имплементирующий аррай-акцесс/итератор, тогда вполне себе можно.
Но я не понимаю зачем ))
5. dcc0 - 04 Июня, 2015 - 10:18:53 - перейти к сообщению
require и include вроде отличаются уровнем предупреждений.
6. Мелкий - 04 Июня, 2015 - 11:20:38 - перейти к сообщению
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 программисту!

Даже техлид в одной компании может быть всего лишь джуном в другой. И это будет серьёзным профессиональным ростом, как правило.
7. DeepVarvar - 04 Июня, 2015 - 11:48:18 - перейти к сообщению
Мелкий пишет:
Невозможно. Это parse error
Только если имя класса (без учета регистра) будет Array
8. MiksIr - 04 Июня, 2015 - 13:01:48 - перейти к сообщению
Мелкий пишет:
С суждением согласен. Инкапсуляцию объяснить должен даже джун.

90% "мидлов" не могут ответить на этот вопрос - зачем писать private. 80% не могут дать нормальное определени инкапсуляции. Это какая-то системная проблема ;))
Мелкий пишет:
Переменная в PHP тоже структура, zval. Вопрос терминологии. Этот вопрос провалю и я.

Массив - это не переменная ;)
(Добавление)
exlant пишет:
Что должен знать и уметь junior?

Юниор очень расплывчатое понятие, конечно. Но все же это больше к опыту работы, а не к базовым знаниям.

Базовые знания про ООП должны быть, хотя бы в теории. Знание языка - должно быть хорошее. Т.е. что такое неймспейсы, трейты, генераторы - стоит знать. Конечно, запоминать что в какой версии появилось - бред, но спрашивают, увы. Интерфейсы, абстрактные классы, основные паттерны хотя бы по книжке четверки.

Конечно, и без этого можно найти работу. Но проблема в том, что этому скорее всего на работе и не научат. В лучшем случае заучите что-то правильное без понимания сути. Так что читать, читать все подряд.
9. DeepVarvar - 04 Июня, 2015 - 13:18:00 - перейти к сообщению
MiksIr, вообще ТС так написал:
exlant пишет:
переменная это ячейка для хранения данных, объект и массив являются типами переменной. И тут мне говорят, что объект и массив это не переменные, а структуры!

Я конечно не уверен что он на собеседовании именно так и сказал.
Хотя терминология в его ответе некорректна, тем не менее -- осознание разницы у него присутствует.
10. MiksIr - 04 Июня, 2015 - 13:30:53 - перейти к сообщению
- что такое яблоко?
- это то, что можно положить в ящик.

О типе переменной можно говорить лишь глядя на конкретную переменную. До этого момента - это типы данных. Которые чем-то отличаются. Иначе получится

- а что такое строка?
- это тип переменной.

- а интеджер?
- тоже тип переменной.

Я всегда вспоминаю случай, когда в институте под зачет написал девочке программу и подробно объяснил, что каждый оператор делает. Вроде все поняла. Потом приходит с зачета - отправили думать, и спрашивает "а что это" и указывает на точку с запятой (это паскаль был, но не суть).

Т.е. человек может знать слова, но иметь более глобальные проблемы.
11. exlant - 04 Июня, 2015 - 13:33:39 - перейти к сообщению
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, можно дать обычный объект с обычным методом.
Просто обычно удобно замыканием или статическим методом.

Не будет! проверил на php 5.6 ошибка, да и мануале пример со статическим методом http://php.net/manual/ru/functio...oad-register.php
Цитата:

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 и для чего используются! Но вопрос не был задан таким образом, меня попросили объяснить почему я использовал здесь это а здесь это, на что искренне и честно ответил, что не помню, а комментариев там не было, а мне на основе всего этого заявили, что я не понимаю ооп...
Мелкий пишет:
Заблуждение. Бывает.

А зачем тогда спрашивать, раз сам этим не пользуешься...
Мелкий пишет:
Даже техлид в одной компании может быть всего лишь джуном в другой. И это будет серьёзным профессиональным ростом, как правило.

Согласен, но в своем резюме я явно указывал, что я только начинаю, и у меня нет практического опыта! Зачем тратить свое и чужое время?

Народ, если не сложно, дайте оценку(можно в двух словах) моего проекта(написан на голом php), вот ссылка на гитхаб https://github[dot]com/exlant/ticTacToe
12. MiksIr - 04 Июня, 2015 - 13:34:39 - перейти к сообщению
http://php.net/manual/ru/langref.php
Сначала идут типы. Потом - переменные. Ибо переменные - это хранилища для типа. Ибо тип переменной - это всего лишь тот тип, что хранится в перемнной... а что это за тип такой, что он представляет из себя - тип "массив". Вот в этом вопрос в общем =)
(Добавление)
exlant пишет:
Не будет! проверил на php 5.6 ошибка, да и мануале пример со статическим методом http://php.net/manual/ru/functio...oad-register.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)'
13. Panoptik - 04 Июня, 2015 - 13:40:20 - перейти к сообщению
неудачные компании вам попадались, продолжайте ходить на собеседования. 2 недели это не показатель. хотя и можно найти работу. на бесплатные стажировки не соглашайтесь. уже через 2-4 недели при активной работе вы вполне будете решать задачи компании, путь это будут рутинные и неинтересные но они есть и их нужно кому-то решать. и это решение должно быть оплачено

ну и все правильно делаете, после каждого собеседования проходите по тому что спрашивали, и более того перед собеседованием надо бы ознакомиться со всем перечнем requirements и как минимум в общих чертах знать что это за абревиатура и зачем она нужна

ну а на счет сравнения версий языка, это вообще вопрос ниочем. потому что джун не будет использовать то что появилось в 5.5 и 5.6, по крайней мере активно, ну и чтобы знать разницу между версиями, нужно просто через это пройти. если скажем вы начнете работать сразу с 5.6 то откровенно говоря вам будет наплевать в каком релизе 5.3, 5.4 или 5.5 появилась та или инная возможность
14. dcc0 - 04 Июня, 2015 - 13:41:53 - перейти к сообщению
exlant, если ты в Москве и если ты знаешь Java Script, могу дать ссылочку и контакт, ЗП небольшая, но контора надежная.
15. exlant - 04 Июня, 2015 - 13:55:42 - перейти к сообщению
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 и да, спасибо! Теперь буду знать, что и так можно делать!
И к стати замыкание там описано в комментариях, а не в самой документации...

 

Powered by ExBB FM 1.0 RC1