Re[3]: Как лучше построить собеседование?
От: sysenter  
Дата: 31.08.12 05:29
Оценка:
Здравствуйте, enji, Вы писали:

E>А за что тут платить?


Чтобы была понятна мысль. Когда нанимаете грузчиков вы им тоже предлагаете передвинуть какой нибудь камень бесплатно или хирурга допустим тоже просите сначала вырезать апендикс кошке бесплатно с целью показать, что они могут выполнить работу? Или например когда ищете такси тоже просите водителя пару кругов проехать бесплатно, чтобы вы оценили, как он водит? А за что тут платить кошка бездомная, камень ничейный, а водителям вообще нравиться водить и пару кругов бесплатно ему только в радость проехать.
Re[2]: Как лучше построить собеседование?
От: enji  
Дата: 31.08.12 05:30
Оценка: :)
Здравствуйте, SkyDance, Вы писали:

E>>Несколько простых вопросов на знание языка (~15-20 мин):

E>>- напишите функцию реверса строки
E>>- чему равен размер struct {int a; char c;}
E>>- зачем нужен volatile

SD>Вы сами можете ответить на эти вопросы? Особенно на последний. Нет, я не про теорию, а про практику. Вы действительно хотите углубиться в обсуждение архитектур CPU, в понимание барьеров? Как мне кажется, лучше все-таки заменить этот вопрос на что-нибудь о sequence points, c какими-нибудь if (++count == 100).

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

E>>- зачем нужен виртуальный деструктор? Как обойтись без него в случае, когда надо удалить объект, не зная его точного типа?

SD>
ну простой тупой вопрос. С другой стороны — вполне себе на понимание работы С++ с памятью...

E>>- Есть устройство, у которого могут быть разные каналы передачи данных (посл порт, tcp, twi, ...) и разные протоколы (отличаются форматом пакетов). Как бы вы спроектировали программу для него?

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

E>>Дать "домашнее задание" по теме работы (~2-4 часа). К примеру: "Вот описание протокола управления устройством. Напишите программу, которая принимает стандартный ввод, выделяет из него команды и


SD>Чтобы кто-то начал этим заниматься, вы должны предложить _ОЧЕНЬ_ хорошие условия — как минимум, существенно выше рынка зарплату. Терять день-два времени на тестовые задания — одно из бессмысленных времяпровождений. Про 2-4 часа и "наличие тестов" вы меня прямо позабавили.

hg init, hg commit = 5 минут
Тесты = текстовый файл, который подается на вход; эталонный текстовый файл, с которым сравнивается выход + батник, который это автоматизирует. С моим невеликим знанием бат-аники все это займет минут 15.
Описание подмножества протокола — ~5 страниц. Час на чтение и продумывание. Реализация тупая — просто стейт-машина из 5 по моему состояний. Еще час на реализацию. Отладка, красивости, тесты — еще час.
Если нет компилера — придется потратить минут 20 на скачивание и установку.

Зато на выходе получится код, который можно сравнить с кодом другого кандидата...
Re[4]: Как лучше построить собеседование?
От: enji  
Дата: 31.08.12 05:31
Оценка:
Здравствуйте, SkyDance, Вы писали:

__>>оно на один вечер — не думаю, что тут оплата имеет смысл


SD>Это лукавство.

SD>За один вечер production code с тестами не пишется.

Про тесты ответил выше. Про продакшен-код — тут сильно упрощен ввод\вывод. Кроме того сама задача маленькая. Вполне пишется, имхо...
Re[4]: Нет такого языка "С/С++"
От: enji  
Дата: 31.08.12 06:42
Оценка:
Здравствуйте, sysenter, Вы писали:


S>Найдите например статью Александреску про volatile и использование его в качестве примитива синхронизации.


volatile — то не только синхронизация, но еще и регистры ввода-вывода скажем...
Статью просмотрел. Не вижу противоречий с моим пониманием этого ключевого слова. Или что ты имел в виду?

S>Это вы серьёзно? В первые минут 15 просмотра проекта всё сразу станет ясно...


Возможно и да. Ок, переформулирую требования — проект на гитхабе\гуглокоде\... или домашнее задание.
Re[4]: Как лучше построить собеседование?
От: enji  
Дата: 31.08.12 06:49
Оценка:
Здравствуйте, sysenter, Вы писали:

S>Чтобы была понятна мысль. Когда нанимаете грузчиков вы им тоже предлагаете передвинуть какой нибудь камень бесплатно или хирурга допустим тоже просите сначала вырезать апендикс кошке бесплатно с целью показать, что они могут выполнить работу? Или например когда ищете такси тоже просите водителя пару кругов проехать бесплатно, чтобы вы оценили, как он водит?


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

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

Лично я например не отказался бы от небольшого тестового задания. С другой стороны, чтобы не отсеять заранее ярых противников домашней неоплачиваемой работы — ок, я буду согласен на гитхаб etc.
Re[5]: Как лучше построить собеседование?
От: sysenter  
Дата: 31.08.12 07:01
Оценка:
Здравствуйте, enji, Вы писали:

E>Сравнивать программиста с грузчиком (простая и обычно разовая работа), а также с таксистом (разовая работа) не сильно корректно. Если я служба такси, то да, вероятно я попрошу таксиста сделать пару кругов перед наймом на работу.


Попробуйте попросить, потом расскажите))

E>У хирурга же обычно есть какая-то "оценка". Стаж в больнице, кол-во проведенных операций, выданные государством документы на право делать операции, хз я не разбираюсь в этом...


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

E>Лично я например не отказался бы от небольшого тестового задания.


попробуйте))

E>С другой стороны, чтобы не отсеять заранее ярых противников домашней неоплачиваемой работы — ок, я буду согласен на гитхаб etc.


Не у всех на гитхабе есть проекты в свободном доступе.
Вы сами готовы предоставить свои исходники для просмотра? А то вдруг у вас там жуть и мрак, а программисту потом за ваши 40 тыр. это всё расхлёбывать?
Re[5]: Нет такого языка "С/С++"
От: sysenter  
Дата: 31.08.12 07:09
Оценка:
Здравствуйте, enji, Вы писали:

E>volatile — то не только синхронизация, но еще и регистры ввода-вывода скажем...


Вы мне тут глаза открыли... на то, что я уже лет пять знаю...

E>Статью просмотрел. Не вижу противоречий с моим пониманием этого ключевого слова. Или что ты имел в виду?


Кто-то дальше понимания volatile, как указания не загружать в регистр/кеш не пошёл, а кто-то понимает что только этим volatile не ограничивается...

E>Возможно и да. Ок, переформулирую требования — проект на гитхабе\гуглокоде\... или домашнее задание.


У соискателя тоже может быть требование посмотреть ваш код, готовы предоставить?
Re[6]: Нет такого языка "С/С++"
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.08.12 07:14
Оценка:
Здравствуйте, sysenter, Вы писали:

S>У соискателя тоже может быть требование посмотреть ваш код, готовы предоставить?


По мне так ты несколько пригибаешь. Открытые исходники это одно, совершенно другое это исходники являющиеся собственностью компании. Не будешь же ты час-другой сидеть и их анализировать?
Вобщем-то замена выполнения тестового задания некими открытыми исходниками — штука вполне адекватная, на мой взгляд.
Re[6]: Как лучше построить собеседование?
От: enji  
Дата: 31.08.12 07:16
Оценка:
Здравствуйте, sysenter, Вы писали:

S>Не у всех на гитхабе есть проекты в свободном доступе.


Стоп. Т.е. ты против тестового задания и против гитхаба?
Резюме сложно оценить, не ясно, насколько оно соответствует реальности.
Идти по примеру Хауса и брать 40 человек, а потом их отсеивать — мне никто не даст
Таким образом сравнивать двух человек стоит по имеющемуся коду. Мне проще всего это сделать на подготовленной тестовой задаче. Но в принципе я согласен потерпеть неудобства и оценить код на публичном хостинге.

S>Вы сами готовы предоставить свои исходники для просмотра?

Смотря что понимать под предоставить? Прийти на собеседование и посмотреть — нет проблем. Выслать их программисту мылом — нет.

S>А то вдруг у вас там жуть и мрак, а программисту потом за ваши 40 тыр. это всё расхлёбывать?

Есть жуть, есть кромешная жуть, есть нормальные — все как обычно.
Re[6]: Нет такого языка "С/С++"
От: enji  
Дата: 31.08.12 07:18
Оценка:
Здравствуйте, sysenter, Вы писали:

S>Кто-то дальше понимания volatile, как указания не загружать в регистр/кеш не пошёл, а кто-то понимает что только этим volatile не ограничивается...

А если посмотреть какой нить electronix.ru — масса вопросов, ответ на которые — "добавь volatile". Так что любые знания о нем — уже неплохо.
Re[7]: Как лучше построить собеседование?
От: SkyDance Земля  
Дата: 31.08.12 07:19
Оценка:
KP>Все это можно сделать крайне просто, если собрать в кучу CMake, CTest и, допустим, BOOST test. Хотя, даже с учетом этого, делать тестовое задание не для очень уж приглянувшейся компании не стал бы, хотят поглядеть на мой код — всегда есть репозитории на GitHub.

Гм, вот лично у меня эти 2-4 часа как раз и уйдут — скачать/обновить CMake, CTest, BOOST, создать репозиторий, структуру, файлики, сами тестовые паттерны.
Может, конечно, я и тормоз, — говнокодить быстро отвык. Ибо если начну, меня выгонят.
Re[7]: Нет такого языка "С/С++"
От: sysenter  
Дата: 31.08.12 07:22
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


Буду анализировать, хватит 15 минут — получаса.
У меня есть опыт подобного трудоустройства, знал бы что у них там внутри не пошёл бы, а на собеседование всё было ок. Сейчас хочу год досидеть, чтобы "трудовую" не портить. Всегда можно предложить подписать NDA, у меня такой опыт был, между первым и вторым собеседованиями подписал NDA.

KP>Вобщем-то замена выполнения тестового задания некими открытыми исходниками — штука вполне адекватная, на мой взгляд.


Это если есть открытые исходники.
Re[8]: Как лучше построить собеседование?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.08.12 07:23
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Гм, вот лично у меня эти 2-4 часа как раз и уйдут — скачать/обновить CMake, CTest, BOOST, создать репозиторий, структуру, файлики, сами тестовые паттерны.

SD>Может, конечно, я и тормоз, — говнокодить быстро отвык. Ибо если начну, меня выгонят.

Ну... В принципе, у меня все это уже готовое есть, и я себе на всякий случай шпаргалку накидал
Re[3]: Как лучше построить собеседование?
От: SkyDance Земля  
Дата: 31.08.12 07:24
Оценка: +2
E>Ну как бы понимаю. По крайней мере для тех процессоров, под которые пишу. volatile отключает оптимизацию чтения и записи переменной. Нужен в случае, если переменная смаплена на специальную память (ввод-вывод скажем) или если к переменной есть обращения из разных потоков (в таком случае возможно нужны дополнительные усилия по обеспечению атомарности).
E>Но если мне ответят про барьеры и десктопные процы — тоже послушаю с интересом, почему нет

Знаете, я не уверен, что вы готовы проводить собеседования.
Кстати, вопрос — вы вообще про какой компилятор говорите?

E>Описание подмножества протокола — ~5 страниц. Час на чтение и продумывание. Реализация тупая — просто стейт-машина из 5 по моему состояний. Еще час на реализацию. Отладка, красивости, тесты — еще час.

E>Если нет компилера — придется потратить минут 20 на скачивание и установку.
E>Зато на выходе получится код, который можно сравнить с кодом другого кандидата...

Попробуйте просто взять и сделать это с нуля. Сейчас. Самостоятельно. В качестве протокола возьмите, ну, скажем, EPP (есть такой XML-протокол для регистрации доменных имен). Не надо весь, просто залогиньтесь на EPP-сервер. Там как раз RFC на пару страниц, если брать только логин.
Re[8]: Нет такого языка "С/С++"
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.08.12 07:27
Оценка: +2 -1
Здравствуйте, sysenter, Вы писали:

S>Это если есть открытые исходники.


Ну... Не хочу никого обидеть, но я не могу считать разработчика хорошим/стоящим разработчиком, если ему нечего показать в той или иной форме, будь то открытый код, профильные заметки, участие в публичном проекте, собственный проект в AppStore и т.п. Это довольно дико, на мой взгляд.
Re[9]: Как лучше построить собеседование?
От: SkyDance Земля  
Дата: 31.08.12 07:28
Оценка:
KP>Ну... В принципе, у меня все это уже готовое есть, и я себе на всякий случай шпаргалку накидал

Да мне (и тредстартеру, вероятно, тоже) это все просто не надо. И CMake не надо, платформа одна
Re[7]: Как лучше построить собеседование?
От: sysenter  
Дата: 31.08.12 07:29
Оценка:
Здравствуйте, enji, Вы писали:

S>>Не у всех на гитхабе есть проекты в свободном доступе.

E>Стоп. Т.е. ты против тестового задания и против гитхаба?

Мы против бесплатного тестового задания, любой труд должен быть оплачен.
Хочу снова повторить свои слова — не у всех на гитхабе есть проекты в свободном доступе. Т.е. может быть проект в котором человек участвует, но он ему не принадлежит и показать исходники нельзя. Вы же не хотите, чтобы в случае подобной ситуации человек показал например код написанный во время работу у вас? Полагаю нет.

E>Смотря что понимать под предоставить? Прийти на собеседование и посмотреть — нет проблем. Выслать их программисту мылом — нет.


Прийти и посмотреть достаточно.
Re[9]: Нет такого языка "С/С++"
От: sysenter  
Дата: 31.08.12 07:33
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Ну... Не хочу никого обидеть, но я не могу считать разработчика хорошим/стоящим разработчиком, если ему нечего показать в той или иной форме, будь то открытый код, профильные заметки, участие в публичном проекте, собственный проект в AppStore и т.п. Это довольно дико, на мой взгляд.


У кого может не быть времени и/или интереса делать бесплатные открытые проекты) Участие в закрытых коммерческих проектах уже не котируется?
Re[4]: Как лучше построить собеседование?
От: enji  
Дата: 31.08.12 07:35
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Знаете, я не уверен, что вы готовы проводить собеседования.

Возможно, но другие не готовы еще сильнее Поэтому я и поднял эту тему — чего народ посоветует.

SD>Кстати, вопрос — вы вообще про какой компилятор говорите?

iar avr, gcc arm, msvc, mingw

SD>Попробуйте просто взять и сделать это с нуля. Сейчас. Самостоятельно. В качестве протокола возьмите, ну, скажем, EPP (есть такой XML-протокол для регистрации доменных имен). Не надо весь, просто залогиньтесь на EPP-сервер. Там как раз RFC на пару страниц, если брать только логин.

Ну смотри — ты пишешь "залогиньтесь на сервер". Для этого нужна какая-то tcp-либа или знание winapi. Нужно найти сервер для тестирования. Нужно знать XML, иметь либу для его формирования и разбора. Возможно там надо передавать не ascii. Тогда надо иметь либу для перекодировки cp1251->utf8. Если ты с этим не сталкивался — это уже займет несколько часов на установку всех либ и чтение по ним манов.

Я же предлагаю реализовать 5 страниц самодостаточного протокола, который не содержит отсылок на XML или tcp или куда-бы то ни было еще и не требует установки ничего сверх того, что есть в стандартном mingw — чтение из консоли, запись в консоль + собственный код соискателя.

Твоя задача значительно сложнее, не?
Re[10]: Нет такого языка "С/С++"
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.08.12 07:37
Оценка:
Здравствуйте, sysenter, Вы писали:

S>У кого может не быть времени и/или интереса делать бесплатные открытые проекты) Участие в закрытых коммерческих проектах уже не котируется?


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