Pull to refresh

Comments 515

Возможно, имеет смысл составить тестовое задание (непосредственно практическое).
В меру сложное, с установленным временным лимитом на исполнение.
В большинстве случаев этого достаточно.
Тестовое задание мы уже даем на испытательном сроке, до того как допустить человека к "живым" проектам...
Да, Вы совершенно правы.
Опоздал на 2 года, но статья в топе гугла поэтому ещё актуальо…:
в корне не согласен с этим: «Мне не нужен в отделе человек который каждые пять минут будет лазить в мануал, дабы узнать как построить цикл „for“ или отсортировать массив, или еще хуже — будет отвлекать окружающих для этой цели» — мануал должен быть всегда под рукой. Если человек знает на память функции работы с массивами, значит не умеет правильно построить SQL запрос. К примеру я знаю ф-ю array_chunk потому что как то жестко схалтурил и написал с её помощю страничную навигацию. Посмотреть ф-ю в мануале 10 сек а понять, например, суть плюсы/минусы работы с базой через хранимки — это проект, не меньше.
Тестовое "заданице", скорее. Типа "составьте запрос" или "спроектируйте структуру классов" или "нарисуйте UML (если умеете) классов для такой-то задачи".
Тестовое задание, на мой взгляд - это худшее что можно придумать для собеседованиия и выбора кандидата.
Важен кругозор и то, как человек мыслит, а не то, с какой скоростью он может решать задачки. Лимит времени на выполнение задания - это вообще глупость. Говорить, что все должно быть в "мозгу" без использования документации - ерунда полная. Я не говорю что кандидат не должен знать примитивных вещей.

Впринципе, если искать тупого кодера, возможно это и вариант. Но даже в этом случае сильно сомневаюсь, если же вы ищите developer'а, то, на мой взгляд, нужен человек способный видеть несколько дальше типов данных и всей этой хрени, которую вы спрашиваете.
Что-то низкий проходной у вас уровень, ребята) Я ни в коем разе не девелопер и уж тем более не програмист, работаю совершенно в другой сфере и девелопмент для меня - скорее хобби, чем профессиональная сфера, но я бы ответил на все вопросы, и еще с довеском. Видимо, говнопрогеров действительно уже слишком много, раз кадровые вопросы решаются подобными собеседованиями))
UFO just landed and posted this here
Это не программисты, а недоучившиеся отморозки какие-то.
Лучше пусть при таком уровне подготовки идут мести асфальт.
UFO just landed and posted this here
Зачем же вы так строго. К нам в компанию берут людей без опыта, на обучение.
Другое дело когда такие "специалисты" претендуют на что-то. Вот в этом случае можно ругаться.
IMHO джуниор, на то он и джуниор. Что бы обучаться.
Естественно всегда все упирается в деньги. Но основы то хоть немного себе представлять человек должен. Пусть джуниор, но все-таки программист, а не мальчик с нулевыми знаниями. Тем более, что я уже писал, что для ответа на 90% таких вот вопросов необходимо до конца прочитать книгу среднего размера, листов на 250-300. Ну максимум неделю уйдет на это. Если нет, то я не понимаю, зачем брать такого человека.
Может быть я сужу по себе и по тому что спрашивали у меня и чего требовали (а это принципы работы бд, er модель и ее проекция на базу, com, разработка клиентского приложения на delphi, кроме тго узнав, что учусь на защите информации потерзали по криптографии). И это в областном банке со стартовой з/п 4500р.
Да, и не собеседование пригласили после того, как написал минипрограммулину на Deplhi для учета клиентов. Причем сначала я ее сделал на bde, принес, попросили переписать на ado+accsess, переписал, принес. Посмотрели и сказали приходи послезавтра на собеседование.
ado+access — это феноменально геаниальное требование... Они бы еще на фокспро попросили передалать.

Что за банк, если не секрет? А то вдруг у них там вся система на аксесе сделана...
А что фокспро так плох?))
А что такое ФоксПро? :)
плагин под ФайерФокс для Профи
Гениально не гениально, а к нигах по дельфи всегда почему-то рассматривают исключительно bde.
Система не на аксесе :) Все только на oracle, просто глупо требовать от студента знание oracle и ораклового клиента (ну и DOA компонент соответственно). Это был просто тест на понимание что такое таблицы, связи и ссылочная целостность + грамотное написание приложения. Ну и хранимые процедуры.
Какой банк говорить не стану, потому что если начну, то остановиться уже не смогу. Расставание было долгим и неприятным.
А на фоксе был тоже один проект, причем работал тоже с ораклом ;)
на собеседовании не попросили еще подтянуться 100 раз, взломать сайт пентагона, выпить стакан водки носом?
Я думаю, что если конторе надо "все и сразу", то значит эта контора не знает чего она хочет от специалиста, а следовательно ну ее к черту такую контору, ибо придешь а тебя так запрягут за копейки что потом и с ума недолго сойти
Не не попросили. Чего хотели знали, хотели человека, которому не требовалось бы полгода на вникание в проект.
А псж пока никто не отменял, если уж совсем так тяжко работать
Я думаю что все вопросы "зубрить" не надо. Достаточно показать осведомленность.
И что вы с такой "зарплатой" там забыли?
Гм... 4500р. - себя не уважать. IMHO.
Так то оно так, только вот шел то я туда не за деньги, а за знаниями. Опять же я был студентом. Через 2 года свалил, имея приличный багаж знаний и без проблем попал на работу туда, куда хотел.
Так то оно так, только вот шел то я туда не за деньги, а за знаниями. Опять же я был студентом. Через 2 года свалил, имея приличный багаж знаний и без проблем попал на работу туда, куда хотел.
PS что-то комменты мои съехали не понятно почему
имхо, учиться надо в opensource или хотя бы (для начала) просто на хороших книгах и каких=то некоммерческих проектах.

Тем более в возрясте учебы программированию идеи небольших стартапов так и прут.
Ох много, вы не представляете. Моё личное впечатление от собеседований я уже один раз высказывал, скажу еще раз: люди идут на деньги, думая что их тут много, а мешки ворочать не надо. Таких очень легко отсеять на подобной базовой проверке. Реально крутых спецов, особенно в глубинке - раз, два, и обчелся. Их искать приходится долго.
И платить соотвественно тоже придется много. Зато будет результат.
По моему «на должность "junior PHP developer"» этого вполне достаточно.
Остальному можно обучить в процессе (если человек обучаем).
Почему то почти все пишут в резюме "высокая обучаемость". Реально же этого нет и в помине. Кто вот из таких вот "высокообучаемых" на досуге читает документацию или Кнута? Я таких людей не встречал...
Бывает, бывает. И даже часто, по крайней мере я время от времени встречал сотрудников, работающих программистами (PHP как основной язык) и в метро, или просто на досуге читающих различные учебники по PHP или реляционным базам данных, или что-нибудь типа PHP Features. Сначала немного удивляешься, но потом понимаешь, что человек просто не хочет терять время и тратит его на собственное образование и повышение уровня знаний.
Это уже немного другой класс людей - те, кто хочет больше знать либо для того, чтобы подороже продать себя, либо для самоутверждения. Я говорил, о людях, которые не могут пройти даже такой примитивный тест и тем не менее претендуют на должность программиста. Судя по моему 1 месячному знакомству с php еще на 3 курсе и чтением далеко не самой лучшей книги о php, такие вот горе соискатели до конца ни одной книги не прочитали.
для того, чтобы подороже продать себя, либо для самоутверждения
а вы не допускаете мысли, что можно читать просто потому, что это интересно? :)
Допускаю, только это уже для совсем клинических, одним их которых, собственно и являюсь...
Зачем же так про любимое занятие? :)
ну я хотя бы приобрёл все книги Кнута :)
Беритесь за Пряник, %username% =)
Я читаю!! возьмите меня!! ну правда, мне когда делать нечего, то я читаю книжки по проектированию. на часть вопросов я без гугла не отвечу, хотя писал несколько цмсок с нуля (пробовал разную архитектуру и инструменты разработки). дело в том, что память дырявая, зато общая осведомленность позволяет быстро находить решения.
нет. я 14-летний придурок-студент, вставивший свои 5 копеек.
Учитесь, приходите. Адекватные люди нам нужны. А если есть чувство юмора - вам же проще будет у нас работать.
хех, даже с вашей болезнью оценили мой сарказм.
лучше поправьте мне карму. хочу написать про использование IDE Aptana. Надо переходить на бесплатный софт, но многие не могут слезть с Dreamweaver. Мне это покоя не дает.
Помог чем смог, только вот меня на этом топике на 5 пунктов порезали :) Пусть дети развлекаются, ума то нет. Сказать ничего не могут, тупо минусовать.
Напишите-напишите. И про перенос по словам напишите, унаследованный из Эклипса, не забудьте, пожалуйста.
А можно поподробнее, про перенос, унаследованный от Эклипса?
http://forums.aptana.com/viewtopic.php?t=3358&postdays=0&postorder=asc&start=0&sid=8f0f3544f4ddc0c880c09b3d09211920
Понятно. Это - серьезная проблема?
Для меня — вполне. HTML-код писать в аптане я не смог — очень неудобно. Допускаю, что кому-то всё равно. Вопрос поиска подходящей IDE для меня остаётся открытым.
То есть, если я вас правильно понимаю, ваш HTML-код категорически не влазит в экран по ширине (иначе враппинг не нужен)? Это не типично.
Ну да, особенно для больших кусков текста. Вас послушать, так враппинг вообще не нужен. У вас не мак случайно?
Честно говоря, да, я думаю, что враппинг не нужен. Нет, у меня не Мак, у меня Виста. Просто обычно HTML-код разделен на небольшие функциональные куски, собирающиеся вместе каким-либо темплейтным движком. Писать куски HTML больше экрана по высоте (лучше - меньше) мне кажется непрактичным - тяжело поддерживать, плохой реюз.
Есть такая практика: когда верстается макет, он верстается не сразу в шаблоны, а в html-файлы, которые потом на шаблоны режутся.
Реюз тут ни при чём.
Видимо, ваша практика в корне отличается от нашей. Я абсолютно согласен с вами, что при начальной верстке в виде создания HTML-документа в несколько килобайт, враппинг безусловно нужен. Мне кажется, такой верстки стоит избегать любыми путями, но это уже предмет отдельной беседы. Вы убедили меня в том, что существуют процессы, при которых без враппинга не обойтись. Могу посоветовать проголосовать за соответствующий issue в трекере Аптаны, на ваш голос обратят внимание.
За базовый CSS и W3C респект глубокий! Почему-то большинство народа думает «Я буду программировать, а не верстать, и мне класть на всю эту фигню со стандартами и браузерами. Моё дело — сервер.». И в итоге творят такое...
Ненадо смешивать горячее с твердым. Пхп программист должен именно программировать серверные скрипты, а не верстать клиентский html.
При нормальной организации работы весь дизайн(который и отображается по разному в разных браузерах) находиться в шаблонах которые правит верстальщик и это уже его забота как код будет выглядеть в разных браузерах
Надо уметь пользоваться тем, что предоставляет дизайнер, без базовых знаний CSS это практически невозможно...
Лично моё дело в наших проектах заканчивается на XSL. То есть PHP/XML/XSL — это я, но вот что должно получаться в итоге трансформации — задача сугубо не моя. И дизайнер у нас не предоставляет HTML/CSS, он предоставляет картинки.
часто бывает быстро что-то мелкое поправить в шаблоне и очень накладно отсылать это верстальщику. мне проще самому это сделать, т.к. я знаком с html и css.
UFO just landed and posted this here
UFO just landed and posted this here
Мне как-то раз достался этот вопрос на собеседовании. Только спрашивающего угораздило добавить слова "максимально подробно". Через 15 минут где-то мы добрались до того, что запрос наконец-то пришёл на сервер. По дороге прошлись через работу Ethernet'а и ARP'а, ADSL и ATM, каскадного DNS'а и NAT'а (уже не помню в каком порядке)... Я спросил "продолжать нужно?" - мне сказали "нет?" (а там ещё много чего интересного происходит: акселератор типа lighthttpd или nginx, CGI/FastCGI/ISAPI/Apache API, затем JDBC/ODBC/etc, SQL, дальше всё это уходит в файловую систему... До сих пор не знаю - чего на самом деле хотят услышать, когда задают этот вопрос...

А что касается уровней модели OSI, то всё что нужно про неё знать написано во втором абзаце Википедии: "В настоящее время основным используемым семейством протоколов является TCP/IP, разработка которого не была связана с моделью ВОС. За все время существования модели ВОС она не была реализована, и, по-видимому, не будет реализована никогда."

И мне, опять-таки, неясно - зачем задавать этот вопрос: вы же не задаёте вопросы о системах исчисления в Древнем Вавилоне? С этой самой моделью OSI - та же история: из неё выросло некоторое количество реально используемых вещей (как из вавилонской системы выросли минуты и секунды), но сама по себе она представляет возможный интерес разве что для историков...
UFO just landed and posted this here
Так без понтов же нельзя, вы что
khim, по твоим постам видно, что чел ты неплохо шарящий. но черезчур уж нудный.

ну неужели ты действительно думаешь, что в рамках собеседования на web-developer'а нужен такой ответ? тут ведь вполне достаточно обозначить лишь области смежные, а знает кандидат как устроены low-level протоколы мне вообще фиолетово. не та область. искал бы админа — спросил бы.

то же самое касается поста ниже про количество бит в байте. подразумевается конкретная архитектура с которой и знакомят в конкретном учебном заведении (вроде школа?). на том уровне, что дается в школе — начальном — им про существование и устройство десятка других архитектур знать не то чтобы не нужно — вредно.

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

я не хочу сказать, что глубокие знания — лишнее. просто постоянное желание этим "блеснуть", в том числе и не в тему, несколько раздражает.
"... не была реализована, и, по-видимому, не будет реализована никогда"
Слишком категорично. Если очень часто можно встретить полную реализацию: Fast Ethernet -> Ethernet -> IP -> TCP -> RPC -> XML-RPC -> HTTP
Причем никто не стремился соответствовать OSI.
Такой схемы не видел никогда. Видел Fast Ethernet -> Ethernet -> IP -> TCP -> HTTP -> XML-RPC. А сессий при это нет и в помине. При этом уже TCP обеспечивает сессии, а HTTP может использоваться на уровне приложений. Идиотизм модели не в том, что в неё нельзя уложить реальные примеры, а в том что такое вложение толком ничего не даёт. Посмотрите на ваш пример и на модель OSI и вы поймете что тут, по большому счёту, только количество уровней и совпадает.
> акселератор типа lighthttpd или nginx
С каких это пор лайти и энджиникс - акселераторы?
С таких, что если закидать собеседника таким морем информации и задавить своими знаниями, показав, какой ты крутой, то можно и ерунды немало подмешать в получившийся кисель.
Таким образом Вы только дадите собеседующему повод капнуть глубже, чтобы понять, оговорились ли Вы, или просто не понимаете, где хлеб, а где пиво.
Ну вот khim, похоже, это до сих пор удавалось ;) А вы, конечно, правы.
Неа. Сколько типов в PHP я не помню. Но у меня есть оправдание - я последний раз с этим убожищем вплотную общался три года назад.
А с каких пор это что-то другое? Nginx изначально писался как акселератор. Пример конфигурации сайта, который передаёт все запросы бэкенду, кроме картинок и запросов, начинающихся с "/download/". - собственно первый (и последний) приведённый на сайте полный пример. Lighttpd тоже часто применяется с той же целью.
1) nginx [engine x] is a HTTP server
2) Security, speed, compliance, and flexibility — all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver

Так считают их создатели.
Кстати, не знаю, как в России, а у нас это называется "überqualifiziert", по-русски: это если у тебя два высших образования и аспирантура, то тебя, скорей всего, не возьмут на должность Junior PHP Programmierer.
UFO just landed and posted this here
просто в России я о таком и не слышал, в России для меня было нормально, что человек в 23 года имеет два высших образования и пишет диссертацию, а в Германии у моего шефа и большинства коллег нет и одного высшего, а у студентов получить диплом до 30 лет считается очень даже хорошо :)
напоминает сцену из фильма "Красота по-американски", где главный герой, послав к чертям мажорную контору, устраивается в закусочную :) У нас же наоборот - почему-то распространён дурацкий стереотип, что ВО должно быть даже у секретарши... :)))) Дурацкий стереотип, кстати, ну да ладно...
когда мажор устраивается в закусочную, это называется дауншифтинг, если я ничего не путаю.
помоему лучше всё что необходимо проверять на практике... теория это дело третьестепенное
теория позволяет отсекать заведомо несведущих
Объясню это на примере матана - я теорию никогда хорошо не знал, только как применять её. В итоге я матан сдавал на 4 всегда - с практикой у меня было всё просто отлично, а вопрос по теории я даже не рассказывал. Я могу применить знакомую техонологую, но могу что-то забыть. Но если перед глазами мануал - всё освежается и работа идёт дальше.
Не говорю что совсем этот опросник плох - он напомнил мне просто эти тесты из интернета, но вот вопрос "почему php" должен быть на собеседовании. А если программист адекватен - тому чего не знает он обучится. Само собой будет работать за меньшие деньги. Если постоянно набирать профессионалов - долго искать придётся. И такой тест сдаст далекооо не каждый...

Извините... выговориться надо было... температура 39 даёт о себе знать
>Если постоянно набирать профессионалов - долго искать придётся. И такой тест сдаст далекооо не каждый...

Для этого такой тест и нужен :-)
Без хорошего знания теории вы не сможете выйти за рамки тех практических примеров, которые вы умеете. Это обычно отличает любителя от профессионала
UFO just landed and posted this here
UFO just landed and posted this here
> - Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?

Тот, кто знает, что там происходит, может об этом месяц рассказывать :)
Ну тут ведь нужно бегло пробежаться по технологиям и всё. Я так думаю. Уточнять можно "по запросу" Но там если бегло пройтись по всем технологиям (включая USB, PCI/PCI Express, DRAM, SATA, Flash и/или HDD и прочее) рассказ на несколько часов получится!
Это как фракталы. Берём самый крупный масштаб — рассказывать пять минут, о отправке запроса и получении результата. Берём масштаб поменьше — десять минут описываем протокол HTTP и специфику GET-запроса. Ещё мельче — полчаса рассказываем об особенностях различных веб-сервером. И так далее. Вплоть до движения электронов в центральном процессоре и специфики электронной и дырочной проводимостей.
думаю, мудрить не надо. Можно ограничиться тем, что браузер посылает серверу GET запрос с указанием протокола и его версии. А дальше ждет ответа от сервера. не думаю, что php программисут нужно знать про всякие "...через работу Ethernet'а и ARP'а, ADSL и ATM, каскадного DNS'а и NAT'а ".
Я не надолжность PHP-программиста собеседовался и вопрос был сразу задан в форме "как можно подробнее".
Дело в том что эти "Ethernet'а и ARP'а, ADSL..." - неправильный ответ, ведь в задании не сказано что это броузер на ПК, может быть это смартфон, к примеру. Такой ответ показывает что человек не умеет выделять главное, поэтому хороший проектировщик из него не выйдет.
ну, сперва обрабатывается событие onKeyDown, наверное, или onChange :)
Это от браузера зависит. Если это Lynx какой-нибудь то там никаких onKeyDown и onChange не случается...
хотел сперва специально для вас дописать про современные приложения с событийной моделью :)
Вот именно, отличный способ отсеять зануд. Программист должен быть краток, как и его код.
вспомнил старую притчу... старик набирал учеников, всем задал по вопросу, кто-то ответил сразу, кто-то нет, а один из учеников вышел, узнал ответы, вернулся и ответил.. именно его взял старик. Не надо знать всех вещей, так как это невозможно, но надо знать где на них есть ответы и (главное!) уметь их правильно использывать. (:

а собеседование хорошее, спасибо! (:
Я не согласен с вами. Берут на работу не для того, чтобы по каждому чиху лазить в инет и смотреть как решить ту или иную задачу. На работу берут, чтобы человек мог продуктивно работать. А так получается из 8 рабочих часов такой вот "программист" будет тратить 6 на поиск и переваривание информации
А вы не встречались с таким поведением, когда "профессионалы" отказываются учить новое? Аргументируя это тем что они уже все знают о в своей области. А мир web ой как быстро развивается и в таком случае человек который через каждые 10 мин лазит в интернет может быть полезнее таких вот закоренелых "профессионалов".
Встречался. Когда в банке работал.
Не хочет учить новые технологии - автоматом выпадает из категории профессионалов. А человек, не имеющий базовой подготовки никак не сможет понять новых технологий, тем паче почему они лучше или хуже существующих.
Если человек не может написать просто outer join, он никогда не поймет, как работает оптимизатор, что такое статистика и профилирование.
UFO just landed and posted this here
UFO just landed and posted this here
В корне неверное. Посмотрите, как устроены microsoft и другие крупные компании.
Есть evangelist, который знает новые технологии и имеет мозг. Говорит о глобальных вещах.
Есть консультант. В принципе тоже самое, только мозгов/знаний/опыта меньше. Говорит о конкретных вещах.
Есть team leader, хорошо знает узкую предметную облать и всих подчиненных. Говорит что именно и кому делать.
Есть разработчик, которому уже выкатывают ТЗ и сроки. PS Разработчик и программист имхо синонимы, программист и кодер - тут уже разница есть.
Про евангелиста вы не правы. Он что-то в принципе знает о новых технологиях, на уровне примеров из MSDN'а. Мозга может и не иметь (хотя обычно имеет). Главное, что он имеет язык!
У консультанта же мозгов, знаний и опыта в разы больше, чем у евангелиста (если тот не бывший консультант, что бывает).
мы просто с разными людьми встречались.
Мы вроде про web-технологии говорим, да? Так вот там подход Microsoft "сливает", а рулят Google и (в меньшей степени) Yahoo! (в России - Яндекс), где такой жёсткой иерархии нет.
в привязке к вебу действительно так. Только вот MS - №1, Oracle - #2.
Я наверное сейчас открою Вам глаза, но MS #1 совсем не из-за какой-то супер пупер иерархии, а еще эти люди разработали и заставляют всех пользоваться вистой
Никто никого не заставляет, Линуха скачать можно, ставьте и радуйтесь, никто же не запрещает.
Вы ноутбуки давно покупали? Они ставят Vista даже на сраные эконом модели с 512МБ ОЗУ и селеронами. Почему я должен заплатить за Vista, а потом скачивать Линуха? Мои знакомые уже на три ноутбука докупили XP, кто вернет им деньги за предустановленную на этих ноутбуках висту?
Ну с ноутбуками вообще вопрос не по адресу. Не хотите платить за предустановленную ОС - покупайте ноут с FreeDos или Linux. Выбор есть у вас. А обвинять MS в том, что производители ноутов стали ставить Vista, имхо глупо. У меня самого на Acer 5310 стояла Vista. Сейчас XP, процессор нормально не тянул.
А глаза мне открыть у вас не получится, потому что это не игра моего больного воображения, а объективный факт. Попробуйте доказать обратное, если есть желание.
и где он очень быстро развился скажем за последние 2 года? никаких скачков и прорывов технологий уже давно не было и особо не предвидится
Смотря что считать "скачками" и "прорывами". GData и Facebook API когда появились? Это то, что сходу в голову бросилось - есть и другие примеры.
Вы знаете чем профессионал от чайника отличается? Профессионалу не у кого спросить о возникшей проблеме. Вот и думайте кто лазит в инет каждые 10 минут.
Знаю, тока вот если бы небыло таких "чайников" мы бы до сих пор в каменном веке сидели, зато бы у нас были бы профессионалы по убиванию мамонтов и заточке камней.
Ага, чайник во сне увидел автомат калашникова.
утрируя - человек не знающий где искать информацию - профессионал - ему ж спросить не у кого...))
зыЖ если человеку не у кого спросить о проблеме возникшей - то это не профессионал, а сам Господь Бог.)
потому что как минимум есть люди которые/придумали и создали язык программирования высокого уровня, на котором пишет наш "профессионал", который (язык) в свою очередь создан на другом языке программирования - более низкого уровня - и так далее. Потому если не у кого спросить - то это не профессионал, а просто самоуверенный и самонадеянный умник.
Ничего страшного. Если человек идет и ищет, значит представляет себе "сценарий" решения задачи и просто подбирает методы реализации.
Если ищет и использует всегда только готовые решения (не поискать которые, на мой взгляд, часто бывает глупо) то это клиника (к счастью — очевидная) и отсеивается достаточно быстро.
Вы в каком мире живете люди? Все решает деньги, как для вас, так и для ваших работодателей.
если есть хорошая онлайн-документация по образцу php.net - то проблемы нет никакой. Главное, как совершенно верно было указано, понимать идеологию и теорию - то же ООП и принципы работы сетевых протоколов. А поиск синтаксиса подзабытой функции вот по такой хорошо структурированной документации больше 10 минут не займёт. Лучше теорию хорошо знать, чем каждый чих каждого конкретного фреймворка или движка...
полностью согласен. мой брат всегда говорит: "я умею делать деньги, и я не умею делать ничего остального. зато я знаю людей, которые умеют всё остальное делать"
Самый правильный и продуктивный подход. Каждый занимается своим делов, в котором он профессионал.
он набирал учеников, а не работников
Из моего опыта собеселований:
Я не прохожу собеседования, где мне на лету выдают теоритические вопросы.
А почему? Потому, что почти всегда на собеседование, я иду с работы.
Я устал и мысли как кисель.
Хорошо когда тебе дают маленькую анкетку, а потом тестовое задание.
Ну и какой в этом смысл? Тестовых заданий на всех не напасёшся - и потом важно не только что человек порождает, а то как он это делает, может ли описать ход своих мыслей, понимать подсказки, etc.

Самый гениальный программист, с которым невозможно норально работать в комманде обычно не нужен - нужен такой, с которым можно работать...
Довольно неплохие для начала тесты на http://www.certifications.ru/ (Retratech). Т.е. даже если человек их до этого и проходил с помощью гугла, то если не давать такой возможности, а заставлять все вспоминать - то получится более-менее адекватный результат.
Кроме того, даже разрешая использовать поисковики, можно просто смотреть, что именно ищут - тоже дает кое-какую информацию.
В общем, из всех БЕСПЛАТНЫХ онлайн сертифицирующих ресурсов - это лучший, который я видел.
У меня строго оборатное мнение, но проходил я там сертификацию по «HTML-программированию» (вдумайтесь только, программированию! И эти люди, как говорится...) Так вот, вопросы сумбурные, касаются давно уже устаревших с точки зрения стандартов технологий (ну то есть если бы вас спросили о разнице между PHP 3 и 4 - ну понтов-то?), код, который является правильным ответом, в основном либо не пройдет валидацию, либо просто бессмысленен с точки зрения современных практик. Много вопросов «наизнанку», когда спрашивают, что тебе не поможет для решения той или иной проблемы. Это самое «не» в тексте вопроса не выделяют, не такие гуманные. Общее мнение - тест составил какой-то «ВУЗовский» препод по информатике, диктующий свои лекции по книжке 1995 года издания. Полная дурь, отличников по его итогам у нас на фирме завернули бы.
Во-первых, не стоит судить обо всем ресурсе только по тесту на знания HTML. Могу только сказать СВОИ впечатления от тех тестов, которые я сдавал там.
1. PHP - более-менее вменяемый тест. Особенно, если не давать себе волю отвечать на вопросы типа "в какой строке ошибка" методом копирования и запуска скрипта.
2. SQL - тоже неплохой тест, как мне показалось, в нем было несколько ошибок. Но опять же, для самопроверки и проверки того, как кандидат умеет думать подходит.
3. HTML - начал проходить, продолжать не стал, т.к. элементарно на многие вопросы не знал ответы, ибо на практике не приходилось встречаться с подобным. Каждый раз лазить в гугл - неохота.
4. JavaScript - сложный тест. Мне понравился.

Повторю еще раз свое мнение - этот тест кандидатам лучше проходить под наблюдением собеседующего. При этом желательно чтобы кандидат давал пояснения своему выбору, тогда на решение о приеме будет влиять не только итог теста, но и ход размышлений человека, что не так уж и маловажно.
оффтоп: кстати, поскорее бы на хабре отключили возможность анонимных некомментируемых +/- :)
Пока они всё еще есть, позвольте анонимно минуснуть )
Пожалуй, даже главное не в анонимности, а в аргументированности.
Тест, в котором спрашивают разницу в обработке CSS браузерами Opera 5, FF1 и IE5, нельзя назвать адекватным в 2008-м году. По РНР в принципе вменяемо. Хотя вообще говоря и тамошние тесты, и тамошние сертификаты — полная ерунда.
мы вроде как обсуждаем прием на работу PHP-разработчика?
Кроме того, любой онлайн-сертификат - ерунда, в том числе и знаменитый brainbench. Ерунда они хотя бы по той простой причине, что нет гарантии, что их сдавал именно предъявитель сертификата и если даже сдавал именно он, то чем он при этом пользовался.
Опять же, речь не идет о том, что любого человека, который пришел и размахивает каким-либо сертификатом, стоит сразу принимать на работу. Речь идет о том, что наблюдая за сдачей теста кандидатом, можно увидеть довольно много.
Вспомнил 7 типов в php.
Полез смотреть на последний. Удивился.
Так и не понял разницы между undefined и типом NULL.
Разница между null и undefined вполне определенная. Только в JS. Где вы undefined в PHP нашли?
Вероятно, имеется в виду разница между $x; и $x = NULL;.
Причем тут undefined?
boolean, integer, float, string, object, array, resource, NULL
Очень грамотное собеседование. Как раз-таки, очень простые вопросы ставят кандидата в ступор. Все мы забываем о мелочах.

ЗЫ. Огромное Антону спасибо. Приму на заметку. Как раз, скоро в нашей конторе будет проходить отбор кандидата на должность php-девелопера. г. Оренбург. Следите за новостями. ;-)
PHP-программисты должны знать уровни ОСИ. Это основа основ интернетворкинга!

Если ты не знаешь сетей - то и незачем создавать движки для сайтов.
Если ты не знаешь устройства автомобиля - то и незачем садиться за руль.

Я бы добавил к этому опроснику ещё, как минимум, сокеты. А то что ж это за несправедливость? ОСИ спрашиваем, а IPC - нет? :-D
А если ты, чувак, не знаешь жизни, то и незачем вылезать из-за компьютера.
Иногда надо и вылезать. Собеседования проводить. :-D
Уровни ОСИ - это мертворождённый выкидыш комитета по стандартизации. Зачем они нужны кому-либо кроме историков, неясно в принципе. Но все остальные вопросы - вполне так себе разумны...
Например: "Что такое реляционная база данных?". Вот лично мне кажется, что одного этого вопроса хватит.
UFO just landed and posted this here
Хороший вопрос. Ответ: реляционная база данных - это такой сферический конь в вакууме. Существует в больном воображении математиков с 1969 года, когда она была предложена Коддом. За прошедшие почти 40 лет эта дурацкая затея искалечила жизнь миллионам программистов, которые вынуждены работать с таблицами, хранящимися на диске (это, в сущености, всё что реально существует в природе) используя API рассчитанный для несуществующего в природе объекта что приводит к куче головной боли и огромной потере времени. Полезна в исследовательской работе: если вы можете описать результат используя теорию множеств и вас не интересует время работы программы - то реляционную алгебру можно с успехом использовать. К сожалению на практике реляционные базы пытаются сдуру использовать в тех областях где время работы всё-таки важно отчего проистекает неизмеримое количество бед...
Мне интересно, какого ответа от соискателей ожидает топикстартер, и как ответил бы сам. Не лезть в дебри тут совсем не получается (вот Вы - залезли в них, причём просто по верхам, не углубляясь).

Я лично не знаю односложного (в формате собеседования) ответа на этот вопрос. Я бы не прошёл.
Я и не требую от людей терминов, меня бы вполне удовлетворил ответ следующего плана:
"Ну это, ну тама есть таблицы и связи"
Для меня в подобных вопросах всегда проблема - понять куда копать и насколько глубоко. Как-то меня просили проверить тест по информатике для школ на предмет корректности. Проверка закончилась на первом тесте: там был вопрос "сколько бит в байте" и варианты ответов.
Варианты такие (если не ошибаюсь):
- 6 бит
- 7 бит
- 8 бит
- 9 бит
Я сказал что тут есть три правильных ответа (шестибитовые байты использовались на CDC 6000, девятибитовые - на PDP-10, хотя в принципе там могли использоваться и 7-битовые байты, но на практике вроде бы никто так не делал), мы это ёще немного пообсуждали и проблему проверки теста как-то решили без меня...
Ну в школе с такими вещами вроде не заморачиваются. А так, конечно 2*2 != 4 в троичной или четверично системе счисления :)
а еще в школе на ноль делить нельзя.
Ужас, вы конекст учитывайте хоть, когда вас о чем нибудь спрашивают
А еще нельзя извлекать корень из -1
Да, нельзя. Не путайте тот факт, что i^2=-1 и извлечение корня из -1.
Я и не путаю, просто первое объяснение что такое мнимая единица, которое я получил было именно таким. Это только потом начали объяснять что это не совсем так...
на ноль не только в школе делить нельзя.
А про байты... Во времена моего школьного возраста ещё вовсю использовались машины с длиной слова не кратной восьми. Правда их байтами не называли.
На ноль вообще делить нельзя. Хоть в школе, хоть в аспирантуре.
А что будет тому кто поделит? Накажут?
"Делить нельзя" это арифметика, в математике можно
Ошибка будет. А там уже смотря по ситуации. Может и так накажут, что вообще делить разучишься. Не путайте теорию пределов и обыкновенное арифметическое деление.
так а какая же все таки будет ошибка?
Мне казалось, что будет бесконечность. Если конечно же в числителе тоже ноля не стоит.
Бесконечность не число. А условное обозначение. Она будет под знаком предела. Но никак не в выражении, скажем, 5/0.
Как и школьная задача про бассейн с 2 трубами :)
ещё у них параллельные прямые не пересекаются
А 7-битовые байты до сих пор используются. В SMS например :)
UFO just landed and posted this here
"дурацкая идея"... Мда. Вы хотя бы прочитали, что уважаемый Кодд писал, прежде чем так отзываться.
UFO just landed and posted this here
Болею я вот и шуток не понимаю...
А где ссылка на википедию по поводу того, что такое сарказм? :)
UFO just landed and posted this here
Если сарказм или шутка, имхо стоило смалик оставить. Я не раз встречался именно с такими "программистами", которые не знают кто такой Кнут, что такое НФ и тем не менее считают и считаются хорошими программистами. Да сортировка у них только пузырьком и почтовый адрес в БД строкой полностью хранится. Знаете ли, поимел много экстремального секса, получив вот такой вот проект.
А лучше просто говорить "лопата".

ЗЫ: это сарказм, 8)
ой, а можно узнать чем вам e-mail в одном поле не угодил?
Адрес в смысле физический, индекс, город, улица и т.п.
PS сразу видно - сказывается специфика работы :)
почтовый, а не электронный
возможно, наш уважаемый коллега имеет дело с офлайновыми лицами, имеющими офлайновые адреса. смайлик. это, ксати, сарказм.
А что, если не улыбнуться после шутки, она не будет смешной?
Доля смысла в словах khim-а есть, я тоже зачастую непонимаю нафига мне эта БД. В том смысле, что её реляционность мне вообще не упёрлась.

Например разбейте обьект с произвольным набором полей различных типов _красиво_ на таблицы. А потом попробуйте с этим стадом таблиц поработать. Ни джоины ни фига остальное просто не работает.

Ещё интересный момент - различные костыли типа поисковых движков, которые к базе как таковой не имеют никакого отношения, хотя (по сути) выполняют её задачи (поиск необходимых rows).

Я конечно не ахти какой архитектор, но мне тоже зачастую кажется, что каким-то образом надо это мироустройство менять.
Собственно мой проект
INDEX PARTITION 316
TABLE PARTITION 111
SEQUENCE 9
PROCEDURE 435
LOB 4
PACKAGE BODY 30
PACKAGE 30
TRIGGER 118
FUNCTION 318
TABLE 258
INDEX 594
VIEW 359
SYNONYM 56
TYPE 6
и это только 1 из 5 схем. Все отлично работает. Конечно это не web проект.
А на счет поисковых движков это вы верно сказали, только на всяких gfs вряд ли можно построить более-меннее бизнес логику, имхо.
Ну и? Какие объёмы данных и сколько QPS вот это чудо может выдержать? Какое железо потребно? Реляционная база может быть полезна когда вам нужно описать сложную модель и вас интересует корректность но практически не интересует эффективность. Железо на современном PC может обработать десятки тысяч запросов в секунду, реляционная база - дай бог пару сотен. Это - плата за удобство. Вы либо соглашаетесь с ней, либо нет. Но на практике зачастую сначала люди создают всё "по науке" в сложной реляционной базе, а потом начинают "вставать на уши", когда выясняется что у них железо нагрузку не тянет. В то время как на самом-то деле нужны в реляционной базе у них и в помине не было.
Таможня РФ довольна. Железо хорошее, но ведь и web сервера не на celeron'e работают. А нужда есть, железо всегда можно купить и помощнее. А для того, чтобы не вставало все на уши нужны грамотные админы и хорошие разработчики, которые не просто знают, что существует outer join, но и знают все тонкости своей субд. Вы уж извините, но если что-то встает на уши у вас. это только показатель вашей некомпетентности в вопросах настройки сервера или написания запросов.
А нужда есть, железо всегда можно купить и помощнее
Никакое железо вам не поможет обработать 10'000 QPS если вы данные сдуру засунете в нетривиальную базу.

Если что-то встает на уши у вас. это только показатель вашей некомпетентности в вопросах настройки сервера или написания запросов.
Если бы. Увы, но это показатель недееспособности реляционной модели. Если вы не знаете примерно - через какие стадии проходит ваш запрос и как устроена примерно ваша СУБД - вы никогда не добьётесь хорошей скорости. Добиться структуры которая хорошо бы работала независимо от используемой СУБД - это что-то из области фантастики. Фактически единственный способ добиться разумной скорости - это спроектировать вашу базу на уровне более низком, чем реляционная модель (на уровне реализации вашей СУБД) и потом перевести на язык реляционной алгебры (с чем тоже иногда возникают проблемы). Спрашивается: нафига нам такая абстракция, которая ничего на самом деле не абстрагирует?
Вы смешиваете понятия ER модели и физической реализации. Эффективная физическая модель всегда должна строиться на основе особенностей. пример попытки реализации БД для всех СУБД я наблюдал уже.
А как побороть то, что ломается обновление materialized view, если между репликой и мастером сетка минут на 5-20 пропадает? И как объяснить, что после перевоза реплик-серверов на новую площадку ( неск. часов простоя) те же самые вьюхи прекрасно поднимаются сами, без пересоздания?

И почему время от времени ломаются очереди (queues), и хотя в dequeue процедуре стоит dbms_aq.FIRST_MESSAGE, а в табличке явно есть записи, процедура не возвращает ни одной строчки?
Идея не была дурацкой. Друакцой была идея описывать подобным образом устройство мира. Как математическое описание - годится, вот только либо всё работает меееедленно-меееедленно либо нужно понимать как реально внутри там в Oracle всё это дело хранится и как ваши запросы оптимизируются и обрабатываются. Но если мы спускаемся на этот уровень, то нафига нам все вышележащие уровни абстракции?
А вы думаете зачем нужны разработчики БД? Именно для того, чтобы знать, что где как и по сколько.
Да, но если вы откажетесь от фундаментальной (и безумной) идеи о том, что мир можно (и нужно) описывать в рамках реляционной алгебры, то вы немедленно переносите СУБД с уровня фундаментального средства на уровень примерно Flex'а и Bison'а. Да - полезные игрушки. В определённых (и довольно редких) ситуациях. Не более того.
Я вообще не пойму, с чего вы взяли, что я предлагаю все описать весь мир а терминах реляционной алгебры?
А для высокопроизводительных приложений свой инструментарий, уж извините, должны знать на 100%
UFO just landed and posted this here
Хорошего разработчика, конечно, так не найти, но для быдлокодера, который только и должен выдавать тонны требуемого PHP кода, вполне.
По поводу задачи на сообразительность (про то, как поменять местами А и В). Там какого типа переменные? ПХП вообще не знаю, просто задачка заинтересовала. :)
integer, задачка не привязана к языку программирования...
Привязана. Решения для языка Python, к примеру:

(a, b) = (b, a)
Тут всё равно промежуточная переменная :)
На php так же можно: list(a, b) = each(Array(b, a))
Тут всё равно промежуточная переменная :)

Где? Как называется? Давайте я ещё так то же выражение запишу (я предпочитаю выражение со скобками - читается проще - но это тоже корректный python-код):

a, b = b, a

Вы всё ещё видите тут промежуточную переменную? Тут можно глубоко и наглухо уйти в вопросы семнтики.
Справа запаковка кортежа, слева распаковка. Создается промежуточный кортеж, по крайней мере теоретически, хотя, возможно, такие действия оптимизированы.
Гррр... Ну сравните с "классическим" ответом:

a = a + b
b = a - b
a = a - b

Согласно вашей логике тут создаются три временные переменные (по одной в каждой строчке). Так почему это решение лучше того, где создаются две временные переменные?

Да, есть решение совсем без временных переменных:
a ^= b
b ^= a
a ^= b

Но требовать его от соискателя - это уже перебор IMHO... Не все даже про существование оператора ^= знают, тем более не знают как его с пользой применить...
Ну, вот требовать это от соискателя или нет, каждый сам решает :)
в первом варианте за переполнением не следят
а если следить, то лучше уж дополнительную переменную использовать
Целые числа в компьютере образуют кольцо, там что за переполнением следить и не нужно. Но это уже факт для продвинутых программистов...
не расскажете что ^= делает? )
По-моему, решение этой задачи вообще не стоит требовать. Задача дурацкая, из разряда про лампочки и крышки люков — она никак не характеризует соискателя.
Почему бы не дать человеку подумать над интересной задачей? :-)
Она неинтересная — в смысле, либо в башке щелкнет, либо нет. Или, что еще более вероятно, он просто ответ знает.
Так ведь от человека и требуют, чтобы он ответ знал :)
Дано:

$a = 3;
$b = 10;

Задача: необходимо поменять местами значения переменных без введения дополнительных переменных.

Решение:

$a = 10;
$b = 3;

С уважением,
Капитан О.! ;)
Задав такую задачу, можно попробовать понять учился ли человек на программиста. Она из области фольклора, и, скорее всего, человек в профильном ВУЗе с ней бы столкнулся.
Я в профильном вузе не учился, но ответ на эту задачу знаю. Даже оба (и с +, и с ^=). Я даже знаю как на асме значение 2х регистров одной командой процессора поменять. Вот только ИМХО PHP-прогеру эти знания без надобности.
Зато про XOR то уж должны знать.
В школе не догадался то классического способа с суммой и вычитанием, и решил через xor. =)
each лишний, то что это переменные не обозначено, строка не закрыта
list($a, $b) = array($b, $a);

тут промежуточная переменная используется не явно
Да, спасибо.
По идее, промежуточная "переменная" всегда будет. Даже в вышепреведенном
a ^= b.
промежуточная, но не новая - под нее не будет выделяться дополнительная память
Переменная - именованная ячейка памяти. Выделение памяти - не есть переменная.
не придирайтесь к понятиям - смысл перестановки без использования промежуточной переменной именно в том, чтобы не использовать лишнюю память
Это не возможно в принципе. Вызов любой функции есть запись адреса в стек. Неиспользование памяти возможно только в ассемблере при использовании регистров.
Самое смешное, что оттуда у задачки уши и торчат. Практически нигде больше эта задача практического смысла не имеет. А вот когда у тебя четыре регистра и обращение к памяти занимает умопомрачительное количество тактов, тогда и начинаешь над этим задумываться. В текущем опросе эта задачка смотриться чужеродно.
но "привязана" к типу.
Со строками будут проблемы.
Элементарная логика:
a = 3;
b = 10;
a = b-a;
b = b-a;
a = b+a;
В результате а = 10, b = 3
ээ... Если 3 и 10 посчитать по вашему решению, то будет 14 и 7..
После первого присваивания: a == 7, b == 10.
После второго присваивания: a == 7, b == 3.
После третьего присваивания: a == 10, b == 3.

В чём проблема?
Хм.. Сижу и пытюсь понять как я 14 и 7 получил O.o
Извиняюсь, не выспался.. :)
можно и string, пример на js:
a = "раз";
b = "два";
a = a + b;
b = a.replace(b,"");
a = a.replace(b,"");
UFO just landed and posted this here
UFO just landed and posted this here
Прошу прощения поторопился, но вот так работает:

a = "раз";
b = "ни разу";
   document.write(a + ", " + b + "<br/>");
a = a + b;
b = a.substr(0,a.length - b.length);
a = a.substr(b.length,a.length - b.length);
   document.writeln(a + ", " + b);
Плюс за наблюдательность )))
UFO just landed and posted this here
JS я использовал для наглядности, а объекты-обёртки даже при банальном сложении создаются, но задача выполнена.
За плюсик пожалуйста )
- Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на "пять")
7 штук, модель оказалось слишком сложной и в реальности (тцп/ип [кстати, ответ на следующий вопрос!]) используется 4 уровня.
В реальности этих уровней может быть сумасшедшее количество. Если использовать разные технологии типа PPPOE, GRE и прочее. 7 уровней модели OSI никогда не использовались и не используются людьми, которые реально разрабатывают сети: для одних целей это слишком грубая модель, для других - слишком подробная (знаете сколько на самом деле уровней только в 802.11? а OSI всё это запихивает в один второй уровень). Модель OSI используется только в академических институтах чтобы придать всему процессу больше наукобразия, но на практике от неё больше вреда, чем пользы - так что чем скорее вы об этом уродце забудете - тем лучше...
Да я её и не сильно помню :) Знаю, что она на практике ни разу не применялась. Вреда, думаю, от неё нет — общее теоретическое представление на её основе можно получить. А на практике и так умные люди все делают, им OSI ни куда не упирается :)
вполне разумный ответ, я признаться их и не помню, но для меня главное понимание человеком основ, и я буду уверен что мне не прийдется заново строить фундамент его знаний (кстати по протоколам и по модели OSI и стеку TCP/IP в моем универе гоняют целый семестр на большинстве специальнсотей)
Ok. Если вы такой умный - может объясните что и на каких уровнях у вас происходит если вы подключились к провайдеру через PPPOE, но тут выяснилось что Intenet вам отрубили за неуплату и вы зашли на Хабрахабр через NSTX ? Там как раз семь уровней получается :-)

Ну неприменима эта модель к реальной жизни, неприменима!
Просто чтобы вы могли представить - что там происходит. TCP пакет (верхний уровень) заворачивается в IP пакет (второй сверху уровень), который заворачивается в UDP пакет (третий уровень), который заворачивается в IP пакет (четвёртый), дальше это всё дело закручивается в PPP-пакет (уже пятый), тот - в Ethernet пакет (шестой) и, наконец, всё это хозяйство засовывается в провод с использованием, к примеру, 8B10B NRZ (седьмой уровень). Это если у вас Ethernet проводной. А если он беспроводной - там ещё уровни появляются (навскидку не помню точно сколько и это зависит от стандарта). А если вы ещё поверх этого подняли туннель для IPv6...

Ну и где здесь модель OSI и как она вам поможет?
Совсем забыл спросить: ну как, берете? :)
Было бы интересно почитать подобную статью по .net собеседованию.
Может кто нить напишет?
Скачайте certification guide и не парьтесь. А лучше и экзамен сдайте. Вопросов не возникнет ни у вас ни у вашего работодателя.
насчет типов я бы посторил ) у меня даж стринг свой )
___
а так только с оси я не знаком, да и нахрен )
я куда не поступал меня в основном почему то всякой туфтой стпрашивали )
очень смешные тесты. я аж сам им говорил, что это депрекатед уже, а вот тут кто так пишет, тому надо руки оборвать.
UFO just landed and posted this here
UFO just landed and posted this here
Не поверите, последнее время больше 7 вопросов задавать не приходиться...
UFO just landed and posted this here
хотя бы то, что у него пока не было причин это узнать
UFO just landed and posted this here
боюсь что для junior специалистов наличие портфолио - скорее исключение из правил. а многие еще стесняются показывать работы сделанные просто так (кстати зря)
ну всё же странно, если программист на PHP за несколько лет работы не удосужился узнать, что такое php.ini

как и идея хирурга, который не очень в курсе где сердце и мотивирует это тем, что "ну вы мне пальцем покажете если чо"
"Назови по памяти функции для работы с массивами, строками" — все назвать? :)
Все не надо, хотя бы пять... для junior'а этого вполне хватит...
По моему Вы всё таки слишком много времени уделяете теории. Это важно, я не спорю, но практика в данном случае покажет всё таки больше.
Практика будет на испытательном сроке ;)
Про функции на память порадовало, конечно.

Вот смотрите — я использую Pascal/Delphi более 13 лет точно. Написано туева хуча всего, в том числе достаточно глобального. И спроси меня сейчас некто — "а перечислите мне на память методы класса..., функции для работы с..." — пошлю в пешее эротическое. Потому как не помню, что не мешает мне их успешно применять по памяти. Такая ситуация называется "неявное знание" — когда человек не может словесно сформулировать инструкцию для того, что он делает. Плюс никто в здравом уме не будет держать в "оперативной памяти мозга" список функций для работы чего-то с чем-то, за исключением периода времени, когда он учится или готовится к подобному собеседованию ;-)

p.s. как хорошо, что я никогда в жизни не ходил на собеседования...
очень сильно поддерживаю, сам такой
Попробовал припомнить методы класса String в джаве... Навскидку - пять штук.
здесь ищут не практиков, а теоретиков. чтобы можно было поговрить о модели ОСИ за чашечкой чая, пока нормальные кодеры просто садятся и пишут (используя гугл и документацию)
для PHP их можно только заучить наизусть, или воспользоваться поиском на php.net — с их-то нотацией :)
то у них функции пишутся слитно, глагол впереди: addslashes() или setlocale(),
то вдруг глагол в конце: wordwrap()
потом вдруг через подчёркивание, глагол снова впереди: convert_cyr_string(),
то вдруг глагол оказывается снова в конце: number_format() или html_entity_decode()
UFO just landed and posted this here
Мне кажеться после всяких тестов, нужно просто посмотреть на код !
он все покажет .
я более 4х тел постояно распутываю чужой код ) , и реально много можно сказать, подойдет ли человек на работу или нет.

А так спрашивать по функциям в пхп имхо дурость, так как все можно в справке посмотреть, просто мне кажеться у програмистов срок примерно 3 года или он в теме будет или нет(качательно всех языков не обязательно пыхпыпха) .
По-моему, тест сложный. Я бы не прошел, если бы передо мной был бы только лист белой бумаги в клеточку и шариковая ручка. Я привык решать реальные задачи, которые сам себе и ставлю, анализируя ТЗ или ту или иную идею. Наизусть помнить столько всего просто нет возможности...
Когда вы ездите на машине, вам тоже нет возможности помнить наизусть, какая педаль находится с какой стороны, за что какая кнопка отвечает, как называется та хреновина под правой рукой, и в какой момент ее надо дергать туда-сюда? И каждый раз при повороте на перекрестке, вы ставите себе задачу, анализируете, смотрите мануал и тогда уже совершаете необходимые действия? Так ездить конечно возможно, но извините, вы крайне неэффективный разработчик.

Тест в топике настолько наипростейший, что я бы не стал даже на основании его полного и бойкого прохождения по всем пунктам как либо положительно судить о разработчике. Все равно что у кандидата в пилоты формулы-1 спрашивать сколько колес и передач у автомобиля.
Каждый раз на повороте на перекрестке я тщательно анализирую ситуацию на дороге и принимаю решение. Что, кстати, и Вам советую.
Да, очень удачный метод полемизирования - вырвать одну фразу из общего контекста и ответить лишь на нее, опуская общий смысл.
> Тест в топике настолько наипростейший, что я бы не стал даже на основании его полного и бойкого прохождения по всем пунктам как либо положительно судить о разработчике.

Некоторые вопросы пожалуй действительно слишком просты. Но если чел сходу называет все 8 типов данных это однозначно опытный девелопер. Естественно, с тем условием что он НЕ ЗНАЕТ какие именно вопросы будут на собеседовании.
Можно нескромный вопрос. а стаж программирования какой? И какая должность?
Вообщим, если прочитать все эти комменты, то можно устроиться на работу PHP developerом =)
Имхо, все вопросы из университетской программы асушников на уровне 2ого курса. Не знаю, что за дуралеи не могут ответить на Ваши элементарные вопросы =\
Вообще-то не во всех университетах PHP в программу входит.
полно дуралеев, шлющих пачками резюме, с "опытом работы на PHP". спросишь что такое ссылки (&) - это те по которым в интернете переходить можно?
UFO just landed and posted this here
что то тут совсем комментарии посъезжали...я имел ввиду $a = &$b, а не побитовое И
UFO just landed and posted this here
личное имхо
всегда поражался вопросов типа:
1."Почему PHP": зачем его задавать если человек пришел на конкретный язык!!! этот вопрос логичен и уместен когда чувак пришел просто програмить и заявляет, что он будет делать все на php, а вам интересно почему именно на нем,
2. "на память вспомить функции": тоже как по мне просто тупой вопрос.. зачем мне их помнить, если у меня под рукой мануал есть.. кнешно т.к. я шас именно работаю за php я их помню, потому что каждый божий день их юзаю, а если я пол года не программил?? да я забуду их и не покраснею... главное знать где искать! Впринципе понятен смысл этого вопрос - чтоб просто узнать работает ли человек с php или просто слушал о нем, так это можно просто так влоб спросить "когда ты сидел за этим языком последний раз? "
второй пункт смешной у вас :)
Получается пришел чувак на вакансию программиста, а код уже пол года не писал, перед собеседованием не готовился. Пришел так и сказал: "Я мегакрут, только не помню нихрена. Готовиться было влом, но вообще то я профессионал. Возьмите меня!"
а что, на работу только профи берут?? понятное дело, если чувак идет на тим-лидера, то я думаю, что ему свои вопросы задают (и не будут у него просить назвать пару строковых функций), а есть и просто когда берут на работу человека, а не "машину для производства"... даже если он и пол года не программил, то зачем ему тратить свое время на повторение это, если его не возьмут на работу, лицо там просто не понравится и все... а вспомнить все фукнции и как что делаеться в конекретном языке, я думаю что ему недели хватит... а логическое мышление и т.д. что нужно будет ему - он и так или знает, или не знает.. вот что нужно узнавать у человека...
опять же, это мое личное имхо...

я считаю, что все такие собеседования, на которых не спрашивают в общем с чем ты знаком, а хотят конкретики вплодь до написания кода - это все взято с больших компаний, на которых ты - как офисный планткон или машина для работы, а не как человек... мне как-то на таком же собеседовании потом сказали "а накатай-ка код, мы для примера хотим посмотреть.."... блин, мне нужно 24 часа на этот код потратить за который мне никто не собирается пока платить!!! и даже после того как все написано и работает они рассказывают, что у меня php-ный код открывается не " ", а " ". Ну пипец просто, нашли к чему доебаться (извините, по другому и не скажешь)...

когда я пришел на работу на которой уже работаю не первый год спросили "Имя, где я учился, и вообще просто посидели и пообщались чтоб узнать что я за человек"... а потом уже на ИСПЫТАТЕЛЬНОМ СРОКЕ смотрели что я умею, что пока нет и как я умею учится...
вотъ
Просто вам повезло. Однако большинство больших компаний рассматривают разработчиков именно как рабочий инструмент. Поймите, ген. директора не интересуют душевные переживания рядового программиста и красота кода. Главное чтобы заказчик был доволен.
Бедные большие компании. Они и не подозревают о собственном глубоком структурном кризисе. Особенно те, в которых сохраняется такой "морской" подход к сотрудникам.
Бедные программисты больших компаний, живущие в дорогих домах и разъезжающих на дорогих автомобилях, они даже не представляют в какой плохой фирме они работают. Но когда они это осознают, оня обязательно уволятся и будут работать за еду.
Программисты в больших компаниях за еду не работают, но и на Бентри не катаются. И многие в конечном итоге сбегают туда, где от них хотят чего-то кроме тупого выполнения инструкций.
На бентли конечно не, Mercedes ML, Subaru Impreza. Ну это смотря какие компании. Что-то я слышал, чтобы кто-то жаловался. У нас вот например машин дешевле 15000$ нет.
Тут интересно другое - сколько нужно работать у вас программисту чтобы заработать на Subaru Impreza, ну или хотя бы $15000?
Смотря какой у него уровень и как работать станет. В принципе как везде. Опять же проект раньше сдал - денег больше получил. При нормальном уровне и желании можно и за год купить. Без старания и мозгов можно никогда не заработать. Хотя з/п у нас далеко не самые высокие.
Вы даже не представляете, что снится Балмеру, Гейсту и Ларри Пейджу. Они прям в холодном поту просываются.
вот это и расстраивает... зато в той компании, в которой вот так я буду работать (тфу-тфу-тфу) как офисный планктон, тогда как пробьет 6 часов, я встану и уйду домой.. и хрен я больше сделаю, чем успею за оффициальное время... а вот на той компании, которая ко мне как к человеку относится - я и бесплатно переработаю и на ночь останусь, если действительно надо будет )))
А оно вам надо? У западником вообще крайне негативное отношение к такому вот сидению после работы. Если ты сидишь => не успел сделать работу, за которую тебе платят, вовремя. Значит тебя можно либо уволить либо понизить зарплату. Имхо очень разумный подход, который заставляет человека хоть как-то самоорганизовываться. Особенно учитывая нашу широкую русскую душу и советский менталитет.
"широкую русскую душу и советский менталитет." :))) что верно-то верно...
но у меня часто бывает что мне днем вот не хочется работать и все.. ну не идет... + хочется(надо) выйти днем с другом встретиться ... зато вечером посижу и сделаю то что не сделал днем... может лучше стоит смотреть на конечный результат ?? )))
Стоит. Но не во всех компаниях есть возможность удаленно работать и оставаться по вечерам. И обычно так именно в крупных компаниях. Вот и все, что я хотел сказать
Странно - я не один год проработал в западных компаниях и нигде вот такого вот негативного отношения не замечал. Слышал - да, но на себе - не замечал.
Опять же повезло. Особенно это у немцев это развито.
Почему повезло? Я просто не хотел (и не искал) работу "винтика". Не обязательно у немцев - у IBM тоже такой подход практикуется, а это не немецкая компания ни разу...
Винтики из MS и Oracle что то не сильно жалуются на жизнь. Всегда обеспечены бесплатным лицензионным ПО, хорошей заработной платой и т.п.
А маленькие конторы можно найти и на западе. Я же говорил о работе в действительно крупных компаниях.
По-моему требование к программисту приходить в 9 и уходить в 6 - извращенный садизм. В западных компаниях была такая тенденция раньше, сейчас тенденция обратная.
Творчество, творческий подход, вдохновение... Это все не по расписанию при ходит...
Можете не поверить, но начальникам глубоко положить на ваше творчество, вдохновение и подход. Они деньги вам платят за результат, а не за творческие метания. Пора бы уже вырасти из детских штанишек.
Мои штанишки уже далеко не детские, а вот тем, кто думает, что миллион обезьян за печатными машинками напишет войну и мир стоит за свои штанишки обеспокоиться, они вполне могут сесть в лужу с таким подходом.

Многие современные большие и не очень компании практикуют более человечный подход к людям и это приносит свои плоды. Надеюсь время хорошенько накостыляет оставшимся закостенелым божкам со снобизмом взирающих вокруг и считающим, что за деньги могут получить все и сейчас.
Дискуссия закрыта. Говорить не о чем.
Пример навскидку - в фирме Intel у программистов довольно свободный график afaik. Главное - выполнить заданный объём. Когда ты его делаешь - никого по большому счету не волнует. Вполне нормальная ситуация, когда программисты только к 10-11 подтягиваются, а уходят в 8-9 вечера. Так что не надо про западников.
ненавижу собеседования. глупые вопросы, я устраиваюсь программистом а не журналистом.
так что если надо проверить мои знания то дайте тестовое задание, а не просите меня рассказать, да еще и с выражением про программирование..
часто так и в школах, институтах бывает, люди которые умеют хорошо объяснять получают хорошие оценки, а те кто действительно соображают низкие, тока за то что не умеют достаточно хорошо объяснить.
Нет ясности в голове - нет ясности и в ответах. Я постоянно консультирую нашу девочку по подбору персонала, что такое xml, ООП, С#, Java, Oracle и т.п. И она почемуто меня понимает, несмотря на то, что учится на 4 курсе химического института.
Действительно знающий человек может объяснить на пальцах так, чтобы понял даже сантехник. но это только мое мнение, сложившееся годами.
ну вот и возьмите эту девушку на роль php программиста.
Обиделись? Зря.
Контора - золотой партнер Oracle. Нет у нас php, да и не так вы поняли, что я хотел сказать. Если человек не может объяснить что-то => он это не до конца понимает. Только и всего.
UFO just landed and posted this here
Неумение четко выражать свои мысли хотя бы словесно порождает сомнение в способности четко выражать свои мысли в коде. А плохой код даром никому не нужен. Как и его автор.
возможно и порождает сомнение, но 1ое не обязательно означает 2ое. таким же темпом можно сказать что если человек плохо выглядит, значит он плохой программист.
Когда я еще работал, был у нас в отделе парень. Аутист. Не здоров от рождения. Он за неделю делал работу всего отдела. И платить ему не надо было много. Начальник так и делал.
Имхо не пример. У него просто проблемы с взаимодействие с окружающим миром, поэтому и не было связности в разговоре. А начальник, вы уж извините мой французский, гондон.
UFO just landed and posted this here
Проблема в том, что никто толком не знает как работает интерпретатор PHP :) Не потому что это знание недоступно, просто никого это не парит, как оно там работает :)

А в идеале могло бы выглядеть так:

push ax
push bx
pop bx
pop ax
Проблема в том, что никто толком не знает как работает интерпретатор PHP :) Не потому что это знание недоступно, просто никого это не парит, как оно там работает :)

А в идеале могло бы выглядеть так:

push ax
push bx
pop bx
pop ax
Стек юзаете, это тоже память. К тому же гораздо дольше чем все сделать в регистрах классическим способом.
Ну привет. Работа со стеком - самая быстрая операция по работе с памятью. А через регистры классическим способом (add/sub) Вы флаги поменяете, т.е. обмен через регистры надо будет в pushf / popf завернуть.
А про неизменность влагов условия не было. ;) Так что никакие пуши/попы не нужны.
два раза подряд неправильный код

а всё из-за неправильно выбранного инструмента...
Я думаю, что для полноты картины было бы интересно видеть название компании или, хотя бы, посмотреть на проекты, которые сделали люди, получившие положительный ответ после прохождения данного интервью.
Да, с программистами на php есть напряженка, но вопросы как-то уж слишком легкие, для меня куда важнее посмотреть на код человека и на его общую грамматность.
грамотность превыше всего! ;-)
Буду ставить смайлы тогда. Или слова в кавычки брать.
UFO just landed and posted this here
Бедные господа работодатели. Нельзя быть такими жадными. На настоящего разработчика у вас все-равно никогда не хватит денег. Не мучайте молодежь. Берите молодые ростки и прививайте корпоративную культуру - они будут лояльны и благодарны, и сделают много хорошего для вас. Настоящий разработчик от вас рано или поздно все-равно уйдет.

Бедные господа программисты. До каких пор вы будете терпеть эти издевательства? Поднимите голову от клавиатуры, посмотрите вокруг - в мире столько возможностей! До каких пор можно работать за зарплату?

Я знал одного великолепного прогера - просто маниак! Сидел по 24 часа (в прямом смысле - ел таблетки, чтобы не спать), кодил молниеносно. Но единственное, чего он не мог понять, так это откуда в Интернете деньги... Жалко его.
1) Работодатель берет молодого, молодой возмужал и ушел. Компания в заднице. Компании неприятно.
2) Программист поднял голову, ударился в развлечения. Уволили. Программист в заднице. Программисту неприятно.

Все должно быть в меру. Опять таки в небольших конторах трудно получить большой опыт. В крупных трудно работать. Просто каждый решает сам кем быть и где работать.
Сразу виден в вас представитель компании, иначе Вы бы в п.2 такого не написали:)

Ваша ошибка в том, что считаете программистов недееспособными. По Вашему программист способен только на то, чтобы выполняя команды начальства заставлять интерпретатор выполнять команды языка программирования?

Почему программист возмужал и ушел, а не остался? Это ошибка компании. Не смогла удержать. Компании не приятно осознавать то, что она не привлекательна для возмужавшего программиста. Компании проще об этом не думать.

Или же просто в этой компании возмужавшему программисту и делать-то нечего? Может эта компания - просто дешевый ляпило сайтецов для палаточников? Тогда и нечего рассчитывать на профи. Студент - единственный возможный работник этой компании. И надо быть ему благодарным, что вообще прочел объявление о вакансии.
Да, я представитель компании, но это не меняет моего отношения к окружающим меня людям. Я не люблю тупых программистов, которые считают себя мегакрутыми, не представляя из себя ничего. В этом топике, такое ощущение, собралось много 14 летних идиотов, которые нехрена не понимают, но вставляют свои 5 копеек.
Почему возмужал и ушел - причин может быть много. Но главной, я считаю, остается узкая направленность компании и работы. Через год-два надоедает делать однотипные проекты. а другого компания предложить не может.
Извините, кажется обознался - Вы не представить компании :)
Смотря что вы имеете ввиду. Контора большая и хорошая. Я ведущий эксперт.
А не ужели программист должен знать этот пункт " - Опыт работы с различными CMF/CMS?"
Нормализация, денормализация - существует, если мне не изменяет память 5 нормальных форм, сомневаюсь что все используют 5 нормальную форму
Кто то несогласен? Давайте обсудим, а вот так ставить минус имхо тупо.
А это еще тупее.
Ты хоть пукнул бы, милый. Аноним трусливый.
Я думаю, что на практике никто не использует 4ю и 5ю нормальную формы - это больше из области теории. Да и вообще в больших проектах приходится денормализовать БД для повышения быстродействия. Имхо, неплохо сначала проектировать БД в BCNF, потом прикинуть, где могут возникнуть проблемы с производительностью при больших объемах данных и денормализовать базу.
Вы уж выбирайте - вам скорость или база данных. Эти вещи плохо совмещаются.
Неужели ни разу не получилось объединить эти 2 пункта?
Почему же - получалось. Но как правило путём отказа от "высокой науки" и тупого продумывания тракта, через который проходят запросы. Это уже не реляционная алгебра - это тупое использование системы хранения деревьев на диске с не очень удобным синтаксисом обращения к ним...
Ну естественно. Я это и пытаюсь донести. Странно что вы до сих пор этого не поняли. Каждый занимается узким куском работы, которую он делает от и до. А не дебил, который не представляет, что такое ООП и не может слепить базу из 5 таблиц.
вы вот так вот сходу только что оскорбили примерно 5-5,5 миллиардов людей...
Пусть занимаются своим делом, а не понижают общий уровень ийтишников.
Другой вариант выйти из категории идиотов путем прокачки собственных мозгов.
они и занимаются своим делом. и большинство из них не имеет представления не только о том , что такое ООП, а и о многих других вещах. А некоторые из них даже и компьютер в глаза никогда не видели. И кстати говоря, без этих самых, как вы выразились, дебилов, вам бы либо есть было нечего, либо пришлось бы вспоминать, что значит копать огород и выращивать скот.
кроме того - знание ООП - это не встроенное с рождения качество человека. Все когда-то начинали и учились. В вашем случае это, конечно, не так - вы таким и родились. ;)
Посмотрел ваш профиль, мой ровесник. А что тупим то так не п детски, молодой человек? Прочитайте еще раз название топика. При чем тут люди, копающие огород? Говорим то о программистах. Вырвали фразу из контекста и непонятно чего добились.
Да. Вырвал. Из контекста в смысле)
Сознательно и нарочно. С тем чтобы несколько утрировать - чтобы показать, что все нужны. И те кто не знает ООП - тоже нужны. Хотя бы потому, что со временем из них вырастают те, кто знает ООП. :)
Я догадываюсь ес-сно, что вы имели в виду тех кто мало знает, но имеет громадные неоправданные амбиции и приходит устраиваться на работу на достаточно высокую зп и при этом крайне мало знает, но считает себя крутым программистом. Но тем не менее - дебилами назвали всех сразу, кто не дотягивает до определённого уровня.
Только тех, кто считает свой низкий уровень достаточно высоким для того, чтобы "срать" на форумах и просить много денег. Только и всего.
зыж я, конечно, придираюсь к словам, но мне крайне не нравится подход к оценке людей - все дебилы пока не выучили то-то и то-то... :/
Читайте внимательно топик. И мой коммент выше.
я внимательно читал.)
если имеете в виду:
Только тех, кто считает свой низкий уровень достаточно высоким для того, чтобы "срать" на форумах и просить много денег.

То так бы сразу и говорили.)
Из фразы:
А не дебил, который не представляет, что такое ООП и не может слепить базу из 5 таблиц.

этого никак не видно.
если бы я знал вас лично - я бы скорее всего не предположил бы иного варианта, чем тот что вы имели в виду. но я, к сожалению, не имею чести вас знать лично и потому читаю, что написано.
Шпаргалка :)

- Почему PHP?
Хммм. А у вас есть другие вакансии?
--- Кто-то, зачем-то посоветовал
хороший, кстати, ответ. Когда меня спрашивают что поизучать, чтобы найти работу в нашей сфере я именно пхп и советую, хотя терпеть его не могу. :)

- Какую версию PHP использовали? В чем различия между четвертой и пятой версиями?
Пятую. Не знаю - видимо четвёртая ещё хуже пятой и пльзоваться в здравом уме ею противопоказано.

- Какими сторонними библиотеками пользовались?
Никакими.

- Опыт работы с различными CMF/CMS?
Нету.

- Типы данных в PHP?(их всего 8, не верите - читайте мануал)
Восемь? Хренассе. Особенно порадовал тип "Псевдо-типы, используемые в этой документации"

- Назови по памяти функции для работы с массивами, строками
Очень сложный вопрос. Наверняка есть функция (метод?) с названием либо size, либо length, есть пачка функций с префиксом str, напоминающие соответствующие сишные, но там в имена как попало напиханы куда то подчерки, то их отсутствие, то прописные буквы. Без мануала ни за что не вспомню. Особенно порядок аргументов.

- Что такое сериализация?
Это чтобы сохранить объект на диск, в базу ещё куда-то или передать его куда-нибудь, а потом из того, что считали или получили - восстановить взад. :)

- Что такое Apache? А mod_rewrite?
Программа, выполняющая функцию веб-сервера. директива конфига апача.

- Аббревиатура SVN и CVS о чем-нить говорят?
Да.

- Багтрекинг системы? BugZilla? JIRA?
Да. Нет. Нет.

- Что такое реляционная база данных?
1. Там, где таблички :)
2. База данных, в которой манипуляция с данными якобы основана на реляционной алгебре. На самом деле, это там, где таблички :).

- Нормализация, денормализация
Нормализация - увеличиваем номер нормальной формы, денормализация - уменьшаем. :) Первое - для устранения избыточности, второе - для повышения производительности в отдельных случаях.

- И чуть-чуть практики (связь многое-ко-многим в MySQL, каталог товаров произвольной вложенности)
Дополнительная табличка для связи. Простейшее решение - поле со ссылкой на предыдущий уровень.

- Нарисуй-ка простенькую форму для отправки файла
Хм. [form][input type=file /][/form] ? :)

- CSS знаешь? В чем разница между записью #my и .my?
Да. Первое для элемента с айдишником my, второе для элемента с классом my

- Расшифруй вот такую запись в CSS ... (и далее что-то невообразимое, но вполне читабельное, задаю не часто, если только испытуемый заявляет что знает CSS)
Мда. Там можно многое наворотить... Возможно не отвечу, хотя заявлю, что знаю цсс

- Что такое стандарты W3C?
это стандарты, которые разработал или разрабатывает в3ц

- С *nix знаком?
Да.

- Apache и PHP сетапил?
emerge apache php

- Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на "пять")
Знал, но забыл. Примерно 7

- По какому протоколу осуществляется передача данных в сети Интернет?
tcp/ip?

- Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?
На веб-сервер отправляется запрос, веб-сервер, в зависимости от запроса отдаёт ответ, браузер его получает и пытается отобразить на экране. В процессе этого может происходить ещё много разных интересных событий.

- Иностранные языки:
Могу сказать по французски, что не ел 6 дней :)

Берёте? :)

ЗЫ. А где же вопрос - почему крышка канализационного люка круглая? :)
[form][input type=file /][/form] не будет работать. Хе :)
Ну, какой-то там мультипарт чего-то там енкодинг ещё надо куда-то вставлять. :) Не помню куда.
> - И чуть-чуть практики (связь многое-ко-многим в MySQL, каталог товаров произвольной вложенности)
> Дополнительная табличка для связи. Простейшее решение - поле со ссылкой на предыдущий уровень.

в общем случае — незачет. предложешь другой вариант? ;)

> - Нарисуй-ка простенькую форму для отправки файла
> Хм. [form][input type=file /][/form] ? :)

незачет. работать не будет.

> - Что такое реляционная база данных?
> 1. Там, где таблички :)
> 2. База данных, в которой манипуляция с данными якобы основана на реляционной алгебре. На самом деле, это там, где таблички :).

а вот это зачет)) сам примерно так и ответил в свое время :)
Про многоуровневый каталог незачёт? Почему? Это минимальное решение. Недавно прочитал про прикольный вариант с реализацией некой структуры, похожей на дерево. Ну, там два дополнительных поля
попробуйте сделать выборку врешин дерева (или любого поддерева) такой структуры в порядке префиксного обхода.

ну или, например, выбрать цепочку родителей.

а всех вершин, не лежащих в поддереве некоторой вершины?

я вижу применимость такой структуры в случае если необходима информация только об одном уровне выше/ниже текущей вершины.

но все-равно отследить ситуацию с зацикливанием некоторого участка будет достаточно сложно. т.е. контоллеры занимающиеся реструктуризацией существующего дерева (в частности перенос поддерева) вынуждены будут совершать достаточно большое количество выборок с целью проверить допустимость операции.

ps: копайте в сторону вложенных множеств.
UFO just landed and posted this here
> Элементарно (ну почти:) через джойн таблицы самой на себя.

ok. есть такое дело. но в любом случае, надеюсь, вы не будете отрицать, что джойны несколько медленнее прямых выборок?

> Не могу представить себе задачу, где это понадобится. Особенно в контексте каталога.

да в том же интерфейсе редактирования каталога. ну не хочет заказчик видеть все разделы. хочет только те куда можно переместить.

> а перетряска всей таблицы для той же задачи — это хорошо и правильно?

я не утверждал, что вложенные множества — идеальный вариант представления любой древовидной структуры. при большом количестве запросов на insert и update она явно не подходит. тем не менее, для реализации древовидного каталога они наиболее востребованны. здесь частота изменений в каталоге намного реже запросов на выборку в различных вариантах.

> А как насчет произвольной сортировки ветвей при выводе

честно, не вижу здесь проблемы.

> это типичная преждевременная оптимизация

не, это грамотная архитектура :)
UFO just landed and posted this here
not in меняйте на not exists - работает быстрее, потому как не проверяет значение, а только существование.
> нужно выводить ноды то по алфавиту, то по дате добавления, то по популярности

а ну это достаточно сильно усложняет задачу. первое что пришло на ум — держать несколько индексных таблиц (с внешними ключими на основные данные) в которых будет поддерживаться отношение порядка по заданному ключу (внутри ветви).

вообще надо подумать. интересная задача.

такое решается на списках смежности? правда интересно.

> (при сбое портится все дерево, а не одна ветвь). Потому использовать ее в качестве основной и единственной лично я бы не советовал.

ну это, кстати, сильный аргумент. тут я ничего добавить не могу :)
UFO just landed and posted this here
не представляю себе как.

в моем понимании постановка задачи такая:

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

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

либо давайте уточним постановку задачи.
UFO just landed and posted this here
UFO just landed and posted this here
ага :)

и не только позапрошлый: http://habrahabr.ru/blog/php/37631.html#comment712812

и не только мой: http://habrahabr.ru/blog/php/37631.html#comment712600
Каков вопрос - таков ответ. А вопрос непонятный.

Во первых. Для дерева вложенные множества (nested set) может быть оптимальны если в основном таблицы читают. А если много в базу пишут, то вам прийдется каждый раз переписывать всю таблицу. Тогда просто foreign key на родителя подойдет.

Во вторых. Что это там смешаны многие ко многим и деревья? Многие ко многим действительно делаются промежуточной таблицей.

Впрочем, может быть непонятнсть вопроса — это специально.
> в общем случае — незачет. предложешь другой вариант? ;)

это я про каталог товаров с произвольным уровнем вложенности.
Уже написал коммент когда появился этот :)
>>в общем случае — незачет
Фигасе. Вы придумали новый производительный способ делать связку многое-ко-многим без дополнительной таблички?
Стандарты W3C это не более чем рекомендации для языков семейства SGML. Вообще ответ про стандарты у вас красивый :) Масло с маслом %)
Да, собственно, какой вопрос, такой и ответ :)
После такого ответа интервьюер, возможно, таки спросит что же именно он хотел у меня узнать. :)
TCP и IP - это два разных (хотя и связанных) протокола. Остальное всё - вполне на уровне...
В качетве прикола на поменять значение переменных местами, если человек пишет через минусики и плюсики можно его спрашивать, а могут ли быть проблемы (с переполнением).

Это я к тому додумается ли человек до a^=b^=a^=b %)
Все эти способы с изменением значения без использования третьей переменной хороши до определённого момента. И потом тратишь кучу времени, чтобы понять, почему не работает. А всего то, переменные ссылаются на одно место в памяти.
Это же как я понимаю просто задачка на проверку ахтунгвой тупости. Так-то они, ИМХО, вообще плохи на практике. Правда, в каком-нибудь Python или Ruby все куда проще и нагряднее в этом смысле:
a, b = b, a
О! Проблемы алиасинга - это жуткая вещь в системном программировании, но это всё весьма далеко от PHP...
Кстати, интерено про английский, потому что человек может прекрасно уметь читать и писать документацию, прекрасно говорить и даже читать книжки (не Фолкнера, конечно), но вот с бизнес-английском могут быть проблемы потому что нет опыта.
На какую средне рыночную зарплату может претендовать человек ответивший на все вопросы кроме OSI?
я думаю в Харькове php-junior это где-то 350-500$

Если ответил на все, причем бодро это значит что человек не junior. В идеале, у вопросов должен быть потолок до которого и senior не дотягивает. Если интересно, могу написать как я провожу собеседования на своей работе.
Напишите. Будет полезно и соискателям и тем, кто проводит собеседования.
ИМХО на любую "среднерыночную". для самого низкого уровня этого достаточно, а для высокого - необходимо %) (но там и вопросы вероятно будут покруче)
а уровни OSI по большому счету веб-программисту не нужны.
Часто пишут, как нанимают php-разработчиков, и как мало среди желающих собственно разработчиков.

У меня есть вопрос как к автору поста, так и к другим хабравчанам-нанимателям.

Назовите несколько книг, не более десяти, сплошное и вдумчивое самостоятельное изучение которых приведет целеустремленного молодого разработчика из отсеянных к уровню, который вы бы с удовольствием приняли на работу и сразу программистом.

Предполагается, что молодой разработчик будет эти книги тщательно изучать и постоянно тренироваться сразу на коде по ходу повествования в них. :)

Я полагаю, что полезнее будет не находить изъяны в имеющимся большинстве, но указать путь тем многим, которые действительно хотели бы уверенно выигрывать такие собеседования.

И, пожалуйста, будьте конкретны — 10 книг максимум.
Крис Дейт: Введение в базы данных
Стив Макконелл: Совершенный код
PHP5. Power Programming. Andy Gutmans

Большая часть вопросов отпадет по PHP из этого опросника, хотя в книге более существенные вопросы описываются, чем поверхностные вопросы..
что-то совсем все просто. ;(
сколько человек получает, если пройдет такое собеседование?
На junior (1-1.5К) нормально. Если на все ответил, то можно брать.
Хотя мне польстило, что при 6 месяцах php как хобби я уже чего-то осиливаю... можно в камент примерный уровень з/пл?

- Почему PHP?
На данный момент хороший, перспективный язык.

- Какую версию PHP использовали? В чем различия между четвертой и пятой версиями?
4. В 5-ой, лучше поддержка объектов, но пока осваиваюсь с более древней.

- Какими сторонними библиотеками пользовались?
Никакими.

- Опыт работы с различными CMF/CMS?
Нету. Но что такое Сontent Managment System понятно из названия.

- Типы данных в PHP?(их всего 8, не верите - читайте мануал)
сходу: int, float, bool, &function. Честно, доку по типам не читал. Все равно он не строго типизированный.

- Назови по памяти функции для работы с массивами, строками
php.net. Практики мало, кроме array_fill, array_sum и array_walk не помню. А в последнем — и порядок аргументов.

- Что такое сериализация?
абстракция, означающая возможность сохранять объекты в память/на диск/в базу и восстанавливать их оттуда. В компилируемых языках обычно сохраняют в потоки. Как в php это делается — не знаю. Вроде, в БД обычно.

- Что такое Apache? А mod_rewrite?
Веб-сервер. Что-то типа плагина, позволяющего "переопределять" URL по которому, обращаются к серверу.

- Аббревиатура SVN и CVS о чем-нить говорят?
Да, использовал svn, но не настраивал.
svn up, svn ci -m

- Багтрекинг системы? BugZilla? JIRA?
Слышал )

- Что такое реляционная база данных?
база данных, где эти самые данные связанны некоторыми отношениями.

- Нормализация, денормализация
приведение к более нормальной форме. Существует их штук 5-6. Реально используют 2-ую или 3-юю.
Нормализация уменьшает дублирование информации, но может также и уменьшать скорость работы. Денормализация — это наоборот.

- И чуть-чуть практики (связь многое-ко-многим в MySQL, каталог товаров произвольной вложенности)
Эммм. Не понял. Что такое многое ко многим — знаю, но, видимо, сходу не сделаю.

- Нарисуй-ка простенькую форму для отправки файла
графически или в хтмл? В хмтл, честно, не знаю.

- CSS знаешь? В чем разница между записью #my и .my?
# = id, . = class

- Расшифруй вот такую запись в CSS ... (и далее что-то невообразимое, но вполне читабельное, задаю не часто, если только испытуемый заявляет что знает CSS)
Смотреть надо. Не специалист по кросс-бразерности, но в css неплохо ориентируюсь.

- Что такое стандарты W3C?
W3C = world wide web консорциум. Они придумали кучу стандартнов для html/css. Знать полезно, но не достаточно, т.к. производители браузеров все равно частично забивают на эти стандарты )

- С *nix знаком?
Работал год в консоли.

- Apache и PHP сетапил?
нет

- Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на "пять")
физический
канальный
тот, на котором IP
транспортный
И еще 3, но смысла в их разделении обычно нет. Если надо, посмотрю в википедии.

- По какому протоколу осуществляется передача данных в сети Интернет?
на каком из уровней OSI? ;-)
1. протоколов в явном виде нет
2. ethernet
3. ip
4. tcp
5-6. ?
7. http/pop3/smtp/imap/...
Это самые распространенные.

- Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?
ууу, чего там только не происходит. Что, в компьютере, что в сети.
Базовое: dns, http response/request.

- Иностранные языки:
Ebglish, intermediate/upper-intermediate
Ого, и вы за это хотите 1.5К? Москва?
UFO just landed and posted this here
Нет. Я ж сказал, что 1.5К можно давать человеку, который на все ответил. Но сразу. Хотя не считаю, что хорошему программисту, например, обязательно помнить функции работы с массивами.
Впрочем, меня брали на 1.5К на Ruby on rails вообще без опыта.
Да, Москва.
Куда катится этот мир... :)
Могу предложить три, которые сам читал/просматривал.
GoF "Design patterns", McConnell "Code Complete", "Refactoring"
Чтобы если кто решит составить список из 10-ти, не забыл про эти. Начинать читать имя опыт хотя бы год настоящей разработки.
А как же Кнут?
А за книгу четырех и МакКонела респект!
у кнута присутствуюет некоторый избыток "матиматичности" формулировок. откровенно говоря, читать скучно.

да и с ассемблером mix — это тоже явный перебор.

по алгоритмам вместо кнута я бы рекомендовал в первую очередь кормэн - "алгоритмы: построение и анализ".
очень странно. это только у меня иерархия сообщений сломалась? если что, предыдущий пост — это ответ на http://habrahabr.ru/blog/php/37631.html#comment712600
Кормэн - это правильно. Есть два замечания:
1. Не пугайтесь толщины.
2. Не пытайтесь запомнить всё что там написано.
Хороший программист обязан знать небольшое количество базовой информации из каждого раздела, описанного в Кормэне, а вот детали - прочитаете в Кормэне же когда приспичит, наизусть этого знать не нужно. То есть знать про обычную кучу - нужно обязательно, а вот про биномиальные и фибоначевы - ну факта что она существует достаточно. Знаешь сложность работы - совсем гениально, но уж помнить как оно устроено на практике смысла нет.
Кнут - это классика, но он очень тяжело читается и обычно содержит излишнее количество информации.
Кнута я открыл и... через час закрыл.
это кто :)
просто человек который хорошо знает английский, и может спокойно на нем общаться...
UFO just landed and posted this here
регулярка и js - это дело наживное (кроме того js - вообще другой язык, напрямую к делу почти не относящийся)

про OSI - имхо правильный вопрос.

про "что происходит" - действительно, респект и уважуха. я прям представил как человек уточняет какая операционка, какой браузер, какой адрес (как минимум - какого уровня домен) и какой с той стороны сервер... и понеслась. через 20 минут доходим до ресолва днса, через несколько часов - до разбора заголовков http (если там http!)... к пятому дню собеседования можно распарсить собственно тело ответа... (-: жуть, просто триллер какой-то.

а как поменять значения двух переменных местами, не задействуя третью, нас в восьмом классе учиили. странный вопрос.
Вот что может дать вам ответ на вопрос про модель OSI? Если честно я узнал про существование этой модели имея несколько лет работы в *nix, в том числе написания web-приложений. Когда узнал - ничего кроме чувства глубокого отвращения к людям, которые много лет надругаются над покойником испытать не смог. Ну поставьте вы ему наконец памятник, почтите славную память и прекратите мучить! Мозги целее будут!
> Вот что может дать вам ответ на вопрос про модель OSI

зачем в художественной академии преподают историю искусств? (-:
сорри, это я случайно написал с чужого аккаунта.
UFO just landed and posted this here
На данный вопрос я бы рассказал историю о том, как я пристрастился к PHP и вступил в клуб анонимных PHP-тов…

А если серьезно - создал сайт, понадобилась динамика - начал изучать PHP. Потом еще один сайт, потом еще один…
1. "Почему программист?"
2. "Почему веб?"

:)
Понравился вопрос про

(поменяй-ка друг значение переменных A и B местами не используя третью переменную)

a = 1; b = 2

a = a+b (1+2=3)

b = a-b (3-2=1)

a = a-b (3-1=2)

Может быть кому нить да пригодиться :)
Это не будет работать со строками, например. В общем виде задача обмена двух переменных местами без третей переменной не решается. В общем виде - это когда тип обмениваемых переменных может быть любым.
Странно куда подевались вопросы про сохранение данных между запросами, про кеширование, про сессии да хотя бы про различия POST и GET запросов.
Вы собеседуете студентов первого курса?

Имхо статью надо было постить на баше, она веселая.
Да ладно различия, хотя бы вопрос о том, когда нужно использовать POST, а когда GET..
UFO just landed and posted this here
UFO just landed and posted this here
Я к тому, что требования там просто пипец. У нас работает один сотрудник, который на Java пишет уже 10 лет, причем не каких-нить там клиентов с кнопочками, а интеграционные комплексы с использование BizTalk, MQ, Oracle Application Server и BPEL. Вот он сходил, так, ради интереса, говорит сложно очень.
UFO just landed and posted this here
- Почему PHP?

Вообще-то я хотел стать сантехником, но в 4 года меня укусил PHP-программист...
>Довольно часто (постоянно)
Возможно стоит поменять подход?
У меня на собеседованиях многие засыпались на вопросе
"какие браузеры и начиная с какой версии поддерживают PHP"
:)

Некоторые даже пытались версии оперы и IE назвать...
в данном контексте ещё нужно добавить вопрос насчёт интерпретатора, чем отличается от компилятора и т.д..
а правильный ответ "все" или "никакие"?
Правильный ответ: php выполняется на сервере. Браузер получает только сгенерированный PHP кодом HTML.
На вопрос "какие" нельзя ответить "php выполняется на сервере".
Можно ответить "все, потому что PHP выполняется на сервере, и браузеру пофиг как получился тот HTML, что ему подсунули". Или можно ответить "никакие, потому что PHP выполняется на сервере, а не в браузере".
Вот я и спрашиваю, что вы ожидаете услышать на свой вопрос (а не узнать где работает PHP, я слава богу в курсе =).
А в общем случае, я хочу сказать, что зачастую наблюдается типичное недопонимание между спрашивающим и отвечающим. Как, например, про модель OSI - как развернуто надо на него отвечать? Или про протокол передачи данных - да любой протокол передает данные в принципе, даже протокол о задержании.
Я лично стал PHP программером чисто из интереса к области. И думаю, что отчасти именно от этого интереса зависит степень знания области, особенно по части новых технологий.

Но если собеседование действительно на вакансию "junior PHP developer", то достаточно и таких базовых вопросов, как уже говорилось выше. Главное, чтобы они охватывали как можно больше областей для полноценной оценки кандидата.
UFO just landed and posted this here
Вопросы уровня junior PHP developer. Не выше.
собственно, нашли кого-нить и какого уровня, на все вопросы ответили?
если говорить о junior-разработчике..
на самом деле достаточно проверить человека на наличие серого вещества в голове, наличие опыта разработки вообще (ну может веб-разработки), а на чем писать, php там, .net или ror и т.п. без разницы, везде есть особенности - это да, но имя голову с вышеупомянутым серым веществом во всем можно разобраться.
ага. Главное - знать теорию... то, что обычно считается "нудной зубрёжкой алгоритмов и парадигм" - и если это знать, это хоть на чём реализовать можно будет.
сегодня пол дня думал "почему же PHP". 5 лет опыта и я в тупике, но теперь то я знаю, что отвечать

я буду делать медленно круглые глаза и тиихо так спрашивать "а что, есть другие?"
товарищ вроде бы у вас прошел интервью. но работать не пошел.
Та что ж это за лес постов такой... за ним уже давно не видно деревьев))
По ходу, по топику можно брошурку мнений выпускать, как-минимум на пару часов чтения хватит :)
- Какую версию PHP использовали? В чем различия между четвертой и пятой версиями?
4,5. Различия в ООП =)

- Какими сторонними библиотеками пользовались?
парсилку экселя юзал

- Опыт работы с различными CMF/CMS?
Rails ;)

- Типы данных в PHP?(их всего 8, не верите - читайте мануал)
array, string, char, int, object ? Больше не знаю)

- Назови по памяти функции для работы с массивами, строками
split, join, sort, array_walk

- Что такое сериализация?
Ммм сохранение объекта в строку? :)))

- Что такое Apache? А mod_rewrite?
http сервер. Его модуль

- Аббревиатура SVN и CVS о чем-нить говорят?
git рулит

- Багтрекинг системы? BugZilla? JIRA?
Trac!

- Что такое реляционная база данных?
Где фсйо в табличках

- Нормализация, денормализация
Устранение/добавление избыточности?

- Нарисуй-ка простенькую форму для отправки файла
form action="труляля" "штука, которая непомню как пишется)"

- CSS знаешь? В чем разница между записью #my и .my?
id/class

- Расшифруй вот такую запись в CSS ...
ммм. Cascade Style Sheet ?

- Что такое стандарты W3C?
То, как должны обрабатывается теги/стили/тд тп?

- С *nix знаком?
kronos@localhost ~ $ uname -a
Linux localhost 2.6.24-gentoo-r3 #13 SMP Wed Mar 12 02:21:40 MSK 2008 i686 Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz GenuineIntel GNU/Linux

- Apache и PHP сетапил?
emerge apache
USE="apache2" emerge php

- Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на "пять")
Программный стандарт на межсетевое взаимодействие? Open System Inter - чего-то там. 7. Физический канальный сетевой транспортный представительный прикладной. один забыл)

- По какому протоколу осуществляется передача данных в сети Интернет?
?

- Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?
Открывается веб страничка или браузер пишет что такой страницы нет.

Ну чо, тест пройден? )
только-что писал 30 минут комментарии на все ваши ответы, запостил и получил "Kolbaskin Error KE-004" ппц) Извините, переписывать всё не буду)

Если честно, то вы ответили не оч точно. К примеру:

- 4,5. Различия в ООП =)
ООП был и в 4 версии, только в новой он более продвинутый (лень расписывать всё, статей в интернете по этому поводу очень много). К тому же нужно сразу спрашивать какую версию равнять тк., например, в PHP 5.3 будут неймспейсы и т.д.
- парсилку экселя юзал
Скорее спрашивали о jQuery (хотя оно к ПХП и не относиться), Smarty и т.д.

- Rails ;)
Может я что-то не правильно понял, но в заголовке страницы написано "PHP разработчика" )))

- array, string, char, int, object ? Больше не знаю)
булеан забыли (оч важно), ну и вообще:
boolean, integer, float, string, array, object
+ то, что я узнал, когда читал мануал при прочтении статьи:
resource
NULL
mixed
number
callback

- split, join, sort, array_walk
оч мало назвали)
Я по памяти: asort() (+ все другие функции для сортировки, не буду же я их все перечислять ^_^), array_keys(), array_values(), array_push, array_rand, array_walk, ещё может можно implode()/explode()
+ http://ua2.php.net/manual/ru/ref.array.php =)

- Что такое сериализация?
serialize($string), читайте мануал

- Trac!
Почему именно Trac? Почему не TestTrac PRO, Mantis etc.?

- То, как должны обрабатывается теги/стили/тд тп?
там же стандарты не только CSS и XTML =)

-Программный стандарт на межсетевое взаимодействие? Open System Inter - чего-то там. 7. Физический канальный сетевой транспортный представительный прикладной. один забыл)
тут я бы не ответил)))

- По какому протоколу осуществляется передача данных в сети Интернет?
тспип, нттп
Тут от PHP совсем чуть-чуть, скорее это тест на общий кругозор.
Вот я никаким местом не PHP-программист, но безо всякого труда могу ответить на 90% вопросов (все кроме функций работы с массивами).
Но понятно, что так и нужно людей отбирать на работу, выучить функции работы с массивами и типы данных — дело 5 минут, если ты работал с ними и знаешь, когда тебе нужен массив, а когда — хеш-таблица.
Нормальные вопросы, кроме типов данных - это лишнее, как и любое перечисление. Чего не хватает по PHP - какой-нить пример на юзание сслылок &. Далеко не все понимают как они работают.
- Какую версию PHP использовали? В чем различия между четвертой и пятой версиями?
PHP 5, различия в нормальном ООП в 5-й версии и обработке исключений. Появились итераторы, модификаторы доступа, блоки try/catch/finally итп.

- Какими сторонними библиотеками пользовались?
Для яваскрипта - mootools. А для пхп, в основном мелкими библиотеками для использования конкретной функциональности, например отправки писем с вложениями. Так как в основном работаю с готовыми CMS.

- Опыт работы с различными CMF/CMS?
Drupal(в основном, уж больно там гибкая фукнциональность), Joomla, Modx.

- Типы данных в PHP?(их всего 8, не верите - читайте мануал)
int, float, bool, object, resourse, string ,array(еще есть там какие-то)

- Назови по памяти функции для работы с массивами, строками
Так могу назвать sort(),shuffle(),array_multi_sort(), для строк - они похожи на сишные, например strcmp(), strlen(), strpos().

- Что такое сериализация?
Сохранение состояния объекта.

И далее несколько практических вопросов...

- Что такое Apache? А mod_rewrite?
Веб-сервер, для которого существует большое количество модулей, mod_rewrite - один из них, предоставляет несколько функций, с помощью которых можно определять условия и алгоритм изменения url.

- Аббревиатура SVN и CVS о чем-нить говорят?
Да, системы контроля версий. Работал с svn. Консольные комманды не помню, так как почти сразу поставил себе tortoisesvn.

- Багтрекинг системы? BugZilla? JIRA?
Знаком, ставил как-то багзиллу для пробы.

Не забываем и о БД:

- Что такое реляционная база данных?
База состоящия из таблиц, связанных между собой. Результат выборки представляется тоже таблицей, из которой можно далее делать выборку.

- Нормализация, денормализация
Нормализация - уменьшение количества дублирующих данных(что иногда приводит к уменьшению производительности)денормализация - дублирование данных с целью увеличения производительности.

- И чуть-чуть практики (связь многое-ко-многим в MySQL, каталог товаров произвольной вложенности)
Связь многое-ко-многим, когда элемент из первой таблицы, может быть связан со многими из второй, и одновременно, элемент из второй таблицы может быть связан со многими из первой(обычно применяется дополнительная таблица, в которой содержатся связи м-у индексными столбцами)
Для каталога товаров произвольной вложенности можно сделать 2 таблицы. В одной из них - список товаров + ид, а в другой связи м-у товарами(в виде дерева, где все объекты первого уровня привязаны к какому-то абстрактному объекту нулевого уровня). Таким образом на первой странице выводятся все объекты привязанные к нулевому, далее к тому на который кликнули итп. Для того, чтобы не было случайного зацикливания и тому подобного, можно во второй базе дополнительно хранить уровень связи.

HTML + CSS + W3C (знания HTML на базовом уровне считаю обязательным):
Могу дивами и таблицами верстать(но с кроссбраузерностью небольшие проблемы, в несколько пикселей зазор в разных браузерах получается иногда)

- Нарисуй-ка простенькую форму для отправки файла


- CSS знаешь? В чем разница между записью #my и .my?
Знаю. Не все детали конечно, например не помню, работают некоторые параметры в ие5 или нет. # - id, . - класс

- Расшифруй вот такую запись в CSS ... (и далее что-то невообразимое, но вполне читабельное, задаю не часто, если только испытуемый заявляет что знает CSS)
... - не валидная запись.

- Что такое стандарты W3C?
Стандарты валидного кода.

Linux:

- С *nix знаком?
Какое то время сидел на убунте, редхате, слаке(старой еще, с дискет ставил), опенбсде. Сейчас Арчлинукс стоит(тот, в котором мегаудобный pacman и никаких гуевых утилит для настройки)

- Apache и PHP сетапил?
Да. Смотря на конфиги не пугаюсь.

Сетевые технологии и не только:

- Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на "пять")
Их сем(вроде). Это теоритическое разделение коммуникаций м-у приложениями на уровни(очень теоритическое).

- По какому протоколу осуществляется передача данных в сети Интернет?
tcp/ip(хотя это 2 разных протокола). А выше - зависит от приложения, где-то telnet, http, ftp итп.

- Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?
Перво-наперво браузер проверяет урл на валидность. Потом запрос на днс, получение айпи, запрос на сервер, получение страницы(очень примерно).

Иностранные языки:
Английский(разговорный, технический)

На какую зарплату я могу рассчитывать? ^_^
Ах да, забыл:
Пхп потому что низкий порог входа. Я конечно еще немного программирую на перле, неплохо знаю паскаль, си++ и бэйсик, но работы на пхп гораздо больше, и база готовых решений - тоже.
ООП - ну это смешно, в си++ к стл даже не подойдешь, если не знаешь ООП на таком смешном уровне. Могу добавить, что знаком еще с такими вещами, как синглтоны, функторы, множественное наследование итп.
>> Для каталога товаров произвольной вложенности можно сделать 2 таблицы
можно и одну.
Ужас все-таки. Нафиг всё это знать? Нафиг ООП в вебе, нафиг представление об OSI и нормализации?
Вы еще о трех рукопожатиях спросите, ага-ага.


Кстати, чему будет равна переменная $i после выполнения вот такого кода?

$i = 1;
$i = ++$i + $i++;

Без запуска в скрипте можете сказать?
по ходу дела - 4.
ООП в вебе как бы нужен, чтобы большие проекты делать, но на небольших он не нужен совсем(хотя на яваскрипте всётаки нужен)
Тут я согласен, что 90% пхп программистов работают над простыми сайтами, где большинство этих вещей просто не нужны, а в основном одна копипаста. Но кодер же не будет вечно кодером, нужно будет расти, и тут понадобится и ООП, и функциональное программирование(не путать с процедурным) и нормализация.
по ходу дела - 4
Не всегда

ООП в вебе как бы нужен
Он и для больших не нужен.
Это мнение некоторых весьма квалифицированных представителей РБК, Рамблера и Мэйла. Куда уж больше.
Нужен, не нужен. А вы не задумывались, что ООП — это банально удобно? ;-)
Чем это удобно в вебе, в котором скрипт выполняется пренебрежимо мало, а проект, занимающий 10 тысяч строк уже считается большим?
Управляемость, масштабируемость, гибкость от количества строк и времени выполнения зависят слабо.
Вы про преимущества веба без ООП?
Я согласен :)
По-вашему, говоря про удобство ООП, я могу говорить про какие-то преимущества веба без ООП? Ответа на свой вопрос так и не услышал.
А я Вам привел пример, что ровно те же слова можно сказать и про веб без ООП. Всё прекрасно управляется, масштабируется и так далее.
Угу. Разница в стоимости поддержки. Только и всего. Поддержка не ОО кода - геморрой. Поддержка пхп кода - геморрой. Поддержка не ОО пхп кода - я за такое берусь только от отчаяния и только если там не больше 1000 строк кода :).
Это шутка юмора, да?
Проекты до 20 тысяч строк легко держатся в голове.
Хоть Тутубалина спросите.
Проектов свыше 20 тысяч строк в Рунете не больше сотни.
Вы какие из них имеете ввиду?
20000 строк не ОО пхп кода держать в голове??? Гвозди бы делать из этих людей! Настоящие самураи :).
Не, я на такие трудовые подвиги не способен. Не вижу смысла. 20к не больше сотни? Ну-у, это вы зря. У нас в конторе таких несколько. Правда не рунет (а, и рунет скоро будет) и не пхп.
Пошёл считать строки... Вернулся - цифру не буду называть, а то скажите, что столько не бывает :). Правда это ява, она многословная, зараза, но даже если порядок(!) обрезать, будет существенно больше, чем ваши 20к :)
20000 строк не ОО пхп кода держать в голове?
Не 20 тысяч строк кода, а проект, в котором 20 тысяч строк. Эт немного разные вещи, не?

20к не больше сотни?
Да, представьте себе.
20k в вебе на php или perl — это достаточно большой проект. Либо проект с сильно избыточным кодом. Возможно, из-за использования ООП ;)
Не знаю с чем вы имели дело... С совсем крошечными проектиками? Говорю же, у нас на полтора порядка больше и таких проектов штук 5. При том, что мы мелкая конторка. Хотя, это, конечно, мегапроекты, они живут и размножаются уже много лет.
Вытянул из svn-а пару местных пхп-шных проектов, посчитал строки. Совсем маленький - 7к, побольше - 34к. Кстати, эти вот как раз не ОО. Не знаю теперь что и думать... Они, конечно, достаточно большие проекты, но чтобы в рунете было так мало подобных - не верю.
Не знаю с чем вы имели дело... С совсем крошечными проектиками?
Ага. С совсем крошечными. С такими, которые не дают больше 5–30 миллионов хитов в день. Ну, правда, там, конечно, не только и не столько php, но всё же.

Покажите мне хотя бы 2–3 рунетовских проекта, где, как Вам кажется, больше 20 тысяч строк? Не обязательно Ваш.
Ну буду с вами спорить, это бесполезно. Самураи, держащие 20к-строкчные не ОО пхп-шные проекты в голове и активно использоующие хаки из идущих пордят плюсиков - это для меня что-то запредельное. Я не сомневаюсь, что это можно сделать и что такие люди существуют. Вот только поддерживать проекты после таких гениев бывает крайне напряжно.
На нас как-то падал голладский проект (автоматизация некоего предприятия - не заню что там было к чему, поскольку всё было на непонятном языке). Тоже гениальный в своём роде. Безумного размера jsp-шка. Одна! В ней было всё - и логика, и разметка и сиквель... Из доступных тогда веб-контейнеров её никто не мог загрузить без ошибок, кроме какого-то оракловского явского веб-контейнера. На нём это чудо и работало. И ведь оно кем-то было написано и некоторое время (до нас) поддерживалось. Чтобы как-то с этим разобраться были написаны тулзы, которые хитрым образом резали это файло на вменяемые куски и тулзы, собирающие всё опять в одно файло - на сервере заказчика оно работало только в таком виде. Там были довольно остроумные "изобретения велосипеда", но копаться в этом дерьме было то ещё развлечение.
А, кстати, какое отношение хиты имеют к размерам проектов? :)
Про рунетовские системы ничего не знаю. Могу сказать наверняка, что любое казино окажется до вольно большим. Имел с ними дело. Они реально большие.
какое отношение хиты имеют к размерам проектов?
Исходя из названной цифры хитов несложно догадаться где я примерно работаю и какого плана проекты могу с большой долей точности оценить в объёме кода. Только и всего.
Ага. И ещё из упоминания фамилии Тутубалина? :)
Ну, конечно, поисковики - это самые больше по объёму кода системы во всём рунете. Дадад.
Мимо.
Тем более, открою секрет — поисковики не пишутся на php. ;)
Естественно не всегда, если изловчится, можно из другого потока поменять хоть на 100000) Да и в пхп у меня опыта всего пол года, я тонкостей не знаю. В плюсах я знаю, что там от оптимизации зависит, и проскакивает глюк в таких выражениях, а в пхп не знаю, по этому могу сказать только общий случай.
А насчет ООП. Ну не для всех проектов он нужен, но например браузерные игры удобнее делать на ООП, да и вообще логику, для меня лично, удобнее писать на более высоком уровне. А мнение других людей меня не сильно заботит, потому что у ООП много, как сторонников, так и противников ^_^.
Да, пол года - программирования за деньги на пхп) забыл упомянуть эту подробность.
Естественно не всегда, если изловчится, можно из другого потока
При чем тут потоки. Я говорю о скриптах, в которых кроме указанного кода больше ничего нет (ну разве кроме вывода значения).

вообще логику, для меня лично, удобнее писать на более высоком уровне
О, Вы еще напишите про удобство перехода с одной СУБД на другую с помощью ООП заменой всего одного класса.

мнение других людей меня не сильно заботит
Ну Вам же кто-то сказал, что PHP — это для реальных пацанов, прислушались :)
Не, я php присмотрел, когда он еще на 3-й версии был, мне понравился, решил подождать, пока чем-нибудь нормальным не станет.
Про базы - конечно это уже пережиток, но например логику классов в игре удобнее писать всё-таки на ООП.
О, Вы еще напишите про удобство перехода с одной СУБД на другую с помощью ООП заменой всего одного класса.
С тех пор, как придумали PDO - классы отдыхают.
Вы утверждаете, что с помощью ПДО легко переведете проект, например, с Мускула на Постгресс?
Мне, как человеку не знающему ПХП, крайне интересно: от чего в нем зависит результат этого выражения?
В тех же плюсах, например, разные компиляторы могли по-разному его раскладывать, поэтому была неопределенность. А тут в чем дело?
Отсутствие ООП != копипаст. А копипаста не должно быть нигде и никогда, максимум 2-3 строчки по большой нужде. )
ООП в вебе не нужно, нормализация не нужна, зато такая конструкция "$i = ++$i + $i++;" в вебе очень нужна! Мегаполезная штуковина, куда там тому ООП...
Если Вы не знаете базовых вещей, то зачем Вам знать про нормализацию и ООП?
И кто сказал, что не нужна нормализация? Я лишь сказал, что можно обойтись и без представлений о том, что это такое.
Каким образом оператор ++$i является базовой вещью в вебе? Что он позволяет сделать такого супер-необходимого? Я например никогда им не пользовался, и не только в вебе.
Операторы присваивания — базовая вещь большинства программ. Хоть в вебе, хоть нет. От того, что лично Вы ее не используете, ей, конечно, ни холодно, ни жарко. Но вот если не понимать как как это работает в конкретном языке программирования, можно долго безрезультатно разбираться в чужом коде. Эт Вам не уровни OSI

И, кстати, странно, что Вы имея представление о ссылках (&), не видите их общность с моим вопросом. Ну да ладно, мне с Вами потомков не форкать.
Судя по минусам, публика не понимает вашего сарказма. Плюсанул бы, если б мог. ;-)
пора вводить тэг "ирония mode".
Я думаю пора вводить тэг "ирония mode".
$i = 1;
$i = ++$i + $i++;

Этот кусок кода полезен исключительно для тренировки мозгов и знания тонкостей языка. Если человек в команде позволяет себе писать такие вещи, с которыми потом приходится работать другим (и прочие зубодробительные неочевидные с первого взгляда конструкции) - то это не "наш человек", не командный игрок. 8-) Помните о принципе KISS - Keep It Simple Stupid.

P.S. А ООП можно и НУЖНО применять на вебе. Реально большие проекты веб-приложений ничем, в принципе, от десктопных не отличаются. Presentation layer другой, а серверная логика - она та же самая.
P.P.S. ООП нужно в первую очередь для логического разделения системы (паттерны), удобства организации кода с точки зрения внесеня изменений (опять же паттерны), ну и, конечно, для вытекающего из этого удобства сопровождения системы.
Какие паттерны, какая организация кода?
Десяток SQL запросов теперь иначе как с помощью классов не выполнить и вместе не собрать? Много лично Вы видели проектов, где число строк больше 10-20 тысяч? Зачем в таком небольшом объеме лишние сложности с ООП? Keep It Simple Stupid ;)
Блин. Кто там на Хабре так криво код писал, что комментируешь одно, а комментарии добавляются совсем в другое место?
Количество строк кода никак не влияет на целесообразность использования ООП.
Если ООП в 10-20 тысяч строк у вас вызывает сложности, может стоит перечитать еще раз все, проанализировать, попробовать?
Количество строк кода никак не влияет на целесообразность использования ООП.

Да ладно? Вот, например, надо написать стандартную системку публикации новостей на сайте. Это можно сделать в сто строк кода (да-да, не больше — из расчёта 20 строк кода на функцию. А их всего четыре — добавление, удаление, изменение, вывод).

Вы, правда, считаете, что для этого нужно использовать ООП? Неужели будете ради такого писать целый класс myNews с методами →list(), →add() и так далее? А так же вписывать в текущую иерархию классов итп? Если да, то я сильно удивлен и подозреваю, что Вы не понимаете, зачем вообще люди придумали ООП.

А 100 строк кода или 10-20 тысяч — разницы нет. Для большинства отдельновзятых проектов.
Использовать ООП или нет надо решать до написания кода. Оценить сколько строк кода у меня получится я не могу. Как вы этим оперируете не знаю.

"публикации новостей на сайте."
Ваш пример ничего не доказывает и не объясняет. Не факт что завтра этот сайт не будет расти, не добавятся статьи, галереи, форумы и т.п.
Вообще говоря про ООП я предполагаю что собеседник занимается крупными и сложными системами, давно позабыв о стандартных систем новостей..

"что Вы не понимаете, зачем вообще люди придумали ООП."
Понимаю что не только для написания сложных систем, но и для тех, где есть риск дальнейшнего роста и модификации существующего
Оценить сколько строк кода у меня получится я не могу. Как вы этим оперируете не знаю.
Опыт не пропьешь.

Не факт что завтра этот сайт не будет расти, не добавятся статьи, галереи, форумы и т.п.
Ну и что? И какая связь между объектами Статья и Галерея, чтобы один из этих модулей был наследуем от другого?

Вообще говоря про ООП я предполагаю что собеседник занимается крупными и сложными системами
Ну я занимаюсь. Без ООП. И в Яндексе занимаются.
А в итоге проект МойКруг пишут несколько десятков человек.
Зато там ООП.
Какие паттерны, какая организация кода?
Десяток SQL запросов теперь иначе как с помощью классов не выполнить и вместе не собрать? Много лично Вы видели проектов, где число строк больше 10-20 тысяч? Зачем в таком небольшом объеме лишние сложности с ООП? Keep It Simple Stupid ;)
Мне кажется, это провокация. 8-) Я не совсем понимаю, за что вы агитируете - за процедурный стиль программирования на вебе? Каждый скрипт для каждой отдельной страницы - изолирован, ничего не знает о других страницах? Или нет?

Лично я участвовал во многих проектах, в которых количество строк больше 10-20 тысяч, представьте себе. Причем как на платформе ASP.NET, так и на PHP. И могу сказать, что для проектов любого масштаба ООП не повредит. Более того, в ASP.NET по другому и не получится, там код каждой страницы - это класс, наследуемый от базового класса, т.е. сама платформа принуждает к использованию ООП. Здесь можно только воскликнуть вашими словами: "Какие паттерны, какая организация кода?" Действительно, и зачем это все придумывают?

Вот выдержка с сайта CakePHP, например: "Using commonly known design patterns like MVC and ORM within the convention over configuration paradigm, CakePHP reduces development costs and helps developers write less code." Вы понимаете (к выбору именно CakePHP в качестве примера не цепляйтесь только)? "Reduces development costs and helps developers write less code". Если для вас эта фраза ничего не говорит, то тут действительно доказывать что-то бессмысленно.
это провокация
может быть

Каждый скрипт для каждой отдельной страницы - изолирован, ничего не знает о других страницах
И так может быть

Вот выдержка с сайта CakePHP
И что, это истина в последней инстанции? Или всего лишь еще одно мнение?

Reduces development costs and helps developers write less code
Я тоже самое могу сказать о коде тех проектов, которыми занимаюсь.
Без использования ООП.

Вопрос не в том, какая парадигма лучше.
Любой веб-проект можно написать и с ООП, и без оного.
И разница между объемами кода в этих случаях может отличаться как в одну, так и в другую сторону.

Вопрос в том зачем это обязательно нужно на собеседовании и нужно ли этот подход принудительно насаждать. «Мы проповедуем объекто-ориентированный стиль программирования и прочие лузеры нам не нужны»? Ну так кто еще лузер — человек с таким подходом или человек, понимающий где ООП нужно, а где без него можно и нужно вполне обойтись.

Кстати, вот вам ссылочка на интересную дискуссию:
http://gornal.livejournal.com/55794.html
Есть возражения против ИЗЛИШНЕГО и НЕОПРАВДАННОГО применения ООП.
Байт, возраст ваш не уточните? Просто любопытно. ;-)
А Вы хотите всё свести к отсутствию опыта? :)
А вы всегда отвечаете вопросом на вопрос?
А почему Вы спрашиваете? :)
Я чуть младше Вас.
UFO just landed and posted this here
Паттерны и юнит-тестирование в наше время уже вышли из моды? :-)

И еще я надеюсь что у вас последним вопросом возникает: "есть ли ко мне какие-либо вопросы?", потому что я лично для себя понял, что в конце надо задавать вопросы опрашиваемому. Выглядит это примерно так:
- Вот вы меня распрашивали о [бла-бла-бла]. Скажите, проект, в котором я буду учавствовать (при успешном собеседовании) использует эти технологии (в необходимых местах), соответствует ли код хотя бы минимальным соглашениям (PEAR, Zend?), работа с БД на каком уровне (если что-то типа EZPDO - скорее всего лучше туда пойти, там будет весело, интересно и не уныло), ведется ли работа через svn, и так далее.

Таким образом, чем сложнее собеседование, тем больше потом придется "отдуваться" собеседнику, так как часто есть огромные проекты, дописывающиеся еще с php3 и не внушающие никакого желания участия в них.

p.s.: вопрос к автору. Как вы ведете разработу крупных проектов через svn если у них огромная база (+ если она разбита на несколько серверов и синхронизируется время от времени)? Сейчас для меня этот вопрос действительно актуален. Вот подумал, у кого бы спросить как не у вас :-)
Я не очень понимаю, в чём практический смысл большей части этих вопросов. Я использую PHP уже порядка пяти лет (PHP не единственный язык) и до сих пор затрудняюсь назвать по памяти больше трёх типов данных, или же вспомнить хотя бы десять функций работы с массивами по названиям. Я помню их не по названиям, а по назначению - и если нужно вспомнить сигнатуру вызова - лезу в документацию.

Собеседование это не тест на знания. Собеседование должно быть тестом на умение. Когда я искал программиста-напарника, первичным было тестовое задание, а не тест на бумаге. Само задание было достаточно простым, но с несколькими заковыками. В результате меня интересовало:
- Скорость выполнения задания (точнее, выполнено ли в срок).
- Результирующее количество ошибок.
- Качество кода.
- Использованные библиотеки (mysql_query против Doctrine::getTable() :) - то есть, умение не изобретать велосипед.
- Как спроектировано (plain php против отделения кода от шаблона).

По результатам теста, я сразу понимал, знает ли человек о существовании array_reverse или делает инвертирование руками, ну и так далее.

Навыки всегда отражают знания, поэтому, теоретические вопросы, тем более, такие сложные - в данном случае, бесполезны. Если хотите знать, насколько глубоко человек понимает сетевые протоколы - ну попросите вручную составить HTTP-запрос telnet'ом.

Бумажный тест у меня отсеивал тех людей, кто точно не справится и был нужен чтоб примерно понять кругозор: что человек знает, кроме PHP. И, если уж делать бумажный тест, вопросы нужно ставить, опять же, проверяющие навык.

Скажем, вопрос про версии PHP (вместо "в чём отличие версий"):
- Что выдаст этот фрагмент кода: "..." в PHP4 и в PHP5? Будет ли результат выполнения одинаковым?

Сразу станет ясно, знает ли человек в чём отличие версий и использовал ли он разные версии на практике. Если написать в этом фрагменте, скажем, var $public.

Вопрос про ООП:
- Что такое шаблоны проектирования? Какие шаблоны проектирования Вы применяете и зачем?

Что такое инкапсуляция - ответит любой, это словесная формула. Гораздо важнее, зачем она нужна. Однако, и это не так важно, как цель использования ООП. Поэтому, если человек даст ответ на вопрос "применяю шаблон Observable в JavaScript чтоб понизить связность визуальных компонентов на моей странице") - это сразу покажет, что в ООП он использует не только синтаксис, но и идею.

Кроме того, я бы добавил вопрос про TDD (Unit Testing):
- Что такое TDD и какими средствами можно реализовать его в PHP?

И добавил бы вопросы про XSLT, Smarty (и другие шаблонные движки) и JavaScript. Я понимаю, что ищется PHP-разработчик, а JavaScript - другая опера, но тем не менее, в реальности обычно оба программиста выступают в одном лице.

Что касается вопроса про OSI - это вопрос к системному администратору, а не к программисту на PHP.
Вопросы напомнили экзамен в школе. Имхо, новичек без проблем напишет ответы на эти вопросы, ибо заточен под них институтом....опытным программерам будет более проблематично ответить на них.

Вопрос про тип данных могу сравнить с вопросом: "Напишите 1000 разных русских слов" - уверен, что словарный запас у вас больше, чем 1000 слов, но написать их будет проблематично.
В принципе нормальные вопросы, абсолютно ничего сверхъестественного. Довольно издевательски звучат первые вопросы про парадигмы ООП в собеседовании на должность PHP разработчика. Разве что для оценки общей эрудиции. Очень смущает строка - "Назови по памяти функции для работы с массивами, строками", а так же комментарий автора вопроса о том что ему не нужен человек, лазящий в мануалы. Я за себя скажу - в PHP настолько нелогичные принципы именования функций, столько дублирования а так же отсутствие четких правил передачи параметров - что без мануала не обойдёшься. Порой выпадаешь в ступор пытаясь вспомнить у этой конкретной функции сначлаа передаётся исходная строка, потом ссылка на результирующую или наоборот или вообще результирующая строка передается через заголовок функции (return-ом). И чем гадать проще зайти в локальное зеркало php.net/documentation, благо это займет несколько секунд.
Мне кажется, вопросы не раскрывают нескольких важных моментов
- личности разработчика
- его перспективу обучения.

Насчет первого - это, конечно, выясняется шестым чувством при личном контакте. Но все-таки, вопросы вроде "над каками проектами вы работали?" и тут же "какова была ваша роль в этих проектах?" было бы неплохо слышать. Опыт программирования на других языках - тоже стоит спросить, особенно для того, чтобы понять, человек программирует "с использованием языка, или на языке", и насколько глубоко понимает, что для решения разных задач нужны разные инструменты.

Второе - это вопрсоы вроде "сколько книг вы прочитали за последний месяц?", "какие наиболее известные сайты с передовой информацией о развитии web-технологий вы можете назвать?", "какие из них читаете?", "что вам говорят такие имена, как Кнут, Макконнелл, Брукс, Страуструп, Торвальд"?

Задачки - идея имхо неправильная. Хотя многие считают что это полезно. Наверное...
Спасибо за комментарий, в действительности - вопрос о том, знаком ли человек с другими языками программирования мы задаем (я просто как-то опустил его при написании статьи), насчет проектов над какими работали для Junior'a звучит как - "Ты что-нить писал кроме лабораторных и примеров из книг (мануалов)?"...
P.S. 500-ый комментарий...
UFO just landed and posted this here
Вот держите, разясните к чему относиться данный стиль, и как можно сократить запись:
div#main .music ul li a:hover {
border-width: 1px; !important
border-style: solid; !important
padding: 0;
padding-top: 1.5em;
margin: 0;
margin-left: 10px;
background-image: url(images/tail.gif);
background-repeat: no-repeat;
background-position: 0px bottom;
}
UFO just landed and posted this here
- Что такое сериализация?
- Багтрекинг системы? BugZilla? JIRA?
- Нормализация, денормализация
- Знаешь что такое уровни модели OSI? Назови хотя бы их количество.

На первый еще можно было бы ответить абстрактно, на остальные бы не ответил :\ Хотя, может, для моих 16 лет это и норма :) Ну, 8 типов я конечно же, тоже не помню :) Из головы велетел NULL :)
А нас учили этому =)

После того как вчера делал контрольную для девочки из другого универа — бейсик и диаграммы тупейших алгоритмов, я кажется понимаю, что все знания, что в меня положили за 4 года — нифига не лишние, а очень даже )))
простое какое-то собеседование
сколько вы платите за уверенные ответы на каждый из вопросов?
большинство — лажа.
главное — желание + свободное время + мотивация.

берите юниора с блеском в глазах и он за пару месяцев станет мега прогером и ещё многих перерастет в своей конторе
Придумал способ запомнить типы данных php — слово infobars.
I nteger
N ull
F loat
O bject
B oolean
A rray
R esource
S tring
Мне почему-то больше нравятся задачки на знание особенностей языка, т.к. даже если ответ не корректный, то после вопроса "почему ты так решил" становится ясно:
будет ли он каждые пять минут лазить в мануал, дабы узнать как построить цикл «for» или отсортировать массив, или еще хуже — будет отвлекать окружающих для этой цели

Articles