теме мы пришили к выводу, что задача обращения списка слишком сложна и нетривиальна, чтобы давать её на собеседованиях. Предлагаю составить список хороших, годных задач, которые можно давать сеньёр-девелоперам без опасений, что стресс усталость или отсутсвие опыта решения подобных задач в течение полугода помешают им их решить.
Пожалуй сам и начну.
Задача 1. Уровень Mid Developer Java/C#
Напишите программу, выводящую на экран Ваше имя.
Оценивается умение кандидата работать с system out, знание паттернов, умение писать своё имя без грамматических ошибок.
теме мы пришили к выводу, что задача обращения списка слишком сложна и нетривиальна, чтобы давать её на собеседованиях. Предлагаю составить список хороших, годных задач, которые можно давать сеньёр-девелоперам без опасений, что стресс усталость или отсутсвие опыта решения подобных задач в течение полугода помешают им их решить.
ПМ>Пожалуй сам и начну.
ПМ>Задача 1. Уровень Mid Developer Java/C#
ПМ>Напишите программу, выводящую на экран Ваше имя.
ПМ>Оценивается умение кандидата работать с system out, знание паттернов, умение писать своё имя без грамматических ошибок.
Можно ли использовать Visual Studio и Google или нужно написать на бумажке? По памяти, на бумажке, я бы не написал (мой уровень — Senior Developer C#).
Собеседование — это не экзамен в советском институте. Собеседование — это встреча серъезных людей, занятых делом.
Можно собеседование потратить с пользой, поговорив об опыте гостя и характере стоящих задач в компании, а можно потратить время впустую.
Давать задачки, это самый бестолковый способ потратить ценное и очень ограниченное время.
Нужно поговорить об опыте человека, что он умеет, чем он занимался, чем он хочет заниматься, в каком направлении хочет развиваться. Представить компанию, описать задачи, менталитет коллектива. Каждая из сторон должна сообщить о себе комплексную и разнородную информацию, чтобы сложилось впечатление, на основании которого обе стороны будут принимать решение.
Конкретные задачи сможет решить либо человек, который к ним готовился, либо человек, по случайному стечению обстоятельств занимавшийся ровно этим на прошлой неделе. Позволю себе предположить, что готовиться к решению задачек будут люди, которым позарез нужна работа, а люди, прекрасно себя чувствующие на рынке труда, не будут заниматься ненужным и неоплачиваемым делом. Поэтому такой подход сработает в обратную сторону, отфильтруя наиболее полезных людей.
Мне случалось тоже бывать на таких собеседованиях. Дали задачку, решил, обсудили ее, дальше люди делают предложение. А как мне его принимать? Потратили два часа на задачу, ничего не рассказали о себе, не познакомили с коллективом, не сверили часы на тему cultural fit. Пришлось сказать "нет". А как соглашаться работать с людьми, о которых я ничего не знаю (кроме того, что не умеют грамотно проводить собеседования)?
Здравствуйте, Flying Dutchman, Вы писали:
FD>Можно ли использовать Visual Studio и Google или нужно написать на бумажке? По памяти, на бумажке, я бы не написал (мой уровень — Senior Developer C#).
Да, конечно. Думаю наиболее сообразительные кандидаты должны догадаться найти своё имя на страничке в социальной сети.
-----
" Програмисту дали задание реализовать функцию которая возвращает текущее время с точностью до секунды. В результате он показал заголовочный файл с таким объявлением
currentTime.h
int getCurrentTime();
Вопрос , какие вы видите проблемы и как бы вы смогли улучшить этот код?
"
-----
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Задачи для собеседования.
ПМ>Оценивается умение кандидата работать с system out, знание паттернов, умение писать своё имя без грамматических ошибок.
Кстати, вопрос не лишен смысла. Я сам частенько забываю, как правильно пишется мое имя в голландском паспорте.
Здравствуйте, minorlogic, Вы писали:
M>С++
M>----- M>" Програмисту дали задание реализовать функцию которая возвращает текущее время с точностью до секунды. В результате он показал заголовочный файл с таким объявлением
M>currentTime.h
M>int getCurrentTime();
M>Вопрос , какие вы видите проблемы и как бы вы смогли улучшить этот код? M>" M>-----
проблема одна — в задании ничего не говорится о том что должна возвращать функция.
/// Gets current time
/** Return value is offset from time when function was called (in any measurement system).
Precision: (0, 1] seconds
*/inline int getCurrentTime() { return 0; }
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, Flying Dutchman, Вы писали:
FD>>Можно ли использовать Visual Studio и Google или нужно написать на бумажке? По памяти, на бумажке, я бы не написал (мой уровень — Senior Developer C#).
ПМ>Да, конечно. Думаю наиболее сообразительные кандидаты должны догадаться найти своё имя на страничке в социальной сети.
Да, специально для этого у меня на стартовой странице браузера есть ссылки на мой профайл в LinkedIn и RSDN.
есть "look inside", так что можно получить представление о вопросах, которые на этих самых собеседованиях (в гугл, ms, fb) задают людям. не все вопросы легкие. и местами автор книги честно признается, что ответ предполгается получить, давая собеседуемому подсказки и корректируя траекторию полета его мысли.
ПМ>В этой
теме мы пришили к выводу, что задача обращения списка слишком сложна и нетривиальна,
а как вам задача типа этой: есть число 32 бит. получить ближайшее меньшее или большее число с таким же точно числом установленных бит. признаюсь, что у меня на решение ушло полчаса (при записи ответа в одну строку на си). по тупому, конечно, ее любой может решить. или... не любой?
> можно давать сеньёр-девелоперам без опасений, что стресс усталость или отсутсвие > опыта решения подобных задач в течение полугода помешают им их решить.
предлагаю дать задачу сравнения двух деревьев. а разворот списка это, извините, в детсад и на горшке сидеть.
а как вам задача дефрагментации списка? т.е. упордочить элементы списка в памяти в том порядке в котором они идут в списке? а как упорядочить список за наименьше кол-во операций? а оценить кол-во операций от размера выделяемой доп. памяти?
ПМ>Пожалуй сам и начну. ПМ>Задача 1. Уровень Mid Developer Java/C# ПМ>Напишите программу, выводящую на экран Ваше имя. ПМ>Оценивается умение кандидата работать с system out, знание паттернов, умение писать своё имя без грамматических ошибок.
кстати, я такое же задание давал тем, кого интевьировал. только там было не имя кандидата, а строку, передаваемую программе в качестве аргумента. оценивалось главным образом то, в каком виде кандидат это представит (задание на си). если это проект на студии, то это одно. если это линк на svn, в котором есть скрипт сборки, документация и readme с примером использования -- это совсем другое. (да, кандидату заранее говорилось, что представьте, что вы пишите скелет программы, с которым будут работать ваши коллеги, так что пишите не за 30 секунд, а за минут за полчаса).
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, os24ever, Вы писали:
M>>Вопрос , какие вы видите проблемы и как бы вы смогли улучшить этот код?
O>Мой PHP сказал мне, что кретинические дни случаются у вашей функции раз в 68 лет: O>
M> Пока есть положительный сдвиг , но очень малый (как по мне).
Можно было бы добавить параметры: временная зона, локаль и т.д.
Но задание на сеньёра, поэтому сеньёр так делать не хочет. Он помнит, что он где-то когда-то уже видел, что всё это задавалось в переменных окружения или в файлах настроек (и язык и кодировка тоже).
Здравствуйте, os24ever, Вы писали:
M>> Пока есть положительный сдвиг , но очень малый (как по мне).
O>Можно было бы добавить параметры: временная зона, локаль и т.д.
O>Но задание на сеньёра, поэтому сеньёр так делать не хочет. Он помнит, что он где-то когда-то уже видел, что всё это задавалось в переменных окружения или в файлах настроек (и язык и кодировка тоже).
Это уже НАМНОГО ближе к идеальному с моей точки зрения ответу.
> Задача 1. Уровень Mid Developer Java/C# > > Напишите программу, выводящую на экран Ваше имя. > > Оценивается умение кандидата работать с system out, знание паттернов, > умение писать своё имя без грамматических ошибок.
Если добавить сюда "на русском языке", а system.out будет писать в
консоль винды, то тут ещё много чего можно проверить
Я эту поржать создал, серьёзно пишем в ту -->
М>Здравствуйте, Паблик Морозов, Вы писали:
М>а как вам задача типа этой: есть число 32 бит. получить ближайшее меньшее или большее число с таким же точно числом установленных бит. признаюсь, что у меня на решение ушло полчаса (при записи ответа в одну строку на си). по тупому, конечно, ее любой может решить. или... не любой?
ИМХО нет смысла давать получасовую задачу, особенно если в процессе её решения не о чем разговаривать с кандидатом. Задача неразрешима, если число — 0. Ближайшее большее — сдвиг исходного числа на один бит влево, зануление всех бит, кроме самого старшего, установка n — 1 младших бит (где n — кол-во установленных бит в исходном числе). Это по-тупому, как в одну строчку сейчас не придумаю.
М>предлагаю дать задачу сравнения двух деревьев. а разворот списка это, извините, в детсад и на горшке сидеть.
Здравствуйте, Сонный Программист, Вы писали:
СП> Собеседование — это не экзамен в советском институте. Собеседование — это встреча серъезных людей, занятых делом.
"экзамен это беседа двух умных людей. а если один из них дурак? тогда другой лишается стипендии" (с)
СП> Можно собеседование потратить с пользой, поговорив об опыте гостя и СП> характере стоящих задач в компании, а можно потратить время впустую.
это возможно только если у вас один кандидат в пол-года. даже если собеседовать одного кандидата в неделю, то это ухлопать кучу времени, особенно, если собеседовать его будете не только вы, а еще пара-тройка человек. таким образом, к собеседованию на подобные темы имеет смысл подходить только при высокой вероятности победы. в противном случае вы быстро обнаруживаете, что кандидат или опаздывает или вообще исчезает. ваш график летит к черту. а вам по хорошему нужно самому к собеседованию подготовится.
короче, нужен входной фильтр.
СП>Давать задачки, это самый бестолковый способ потратить ценное и очень ограниченное время.
даже журналистов и прочих литераторов на приеме просят что-то быстро набросать на бумаге. типа вот жил человек по имени вася. в него врезался автомобиль. васе хоть бы хны, водитель тоже не пострадал, а вот ребенок на заднем сиденьи вылетел сквозь лобовое на встречную полосу. вам дают минут пять десять, чтобы придумать заголовок и уложить эту новость в абзац.
вам не кажется, что интервью без вопросов это как постель без секса?
СП>Нужно поговорить об опыте человека, что он умеет, чем он занимался, чем он хочет заниматься,
ответ стандартый. умею X, Y, Z. сталкивался с M, K, L. но это как бы не вопрос, потому что я способный и быстро учусь.
> Представить компанию, описать задачи, менталитет коллектива.
да-да, сразу весь сор из избы. вы, случайно, не в гербалайф нанимаете? очень, знаете, похоже.
СП> Конкретные задачи сможет решить либо человек, который к ним готовился, либо человек,
не делайте мне мозги. обратить список должен каждый человек. это вообще задачка для юнных математиков. тут даже языков программирования знать не нужно.
СП> Позволю себе предположить, что готовиться к решению задачек будут люди, которым позарез нужна работа,
в гугле меня пугали интервью и дали готовится две недели (или одну? нет, кажется все-таки две). интересно, подумал я, как я буду готовится, когда у меня и на своей работе дел по горло. и что вы думаете? стали задавать такие вопросы, которые выводятся число логически из самых общих соображений. хотя я им сразу ответил, что готовится не собираюсь, т.к. мне просто интересно испытать себя. если вопрос из моей области, то неответ будет позором. если из перпендикулярных плоскостей, то мне и готовится не надо, т.к. в этом случае им нужен не я, а кто-то другой.
СП> а люди, прекрасно себя чувствующие на рынке труда, не будут заниматься ненужным и неоплачиваемым делом.
если на собеседовании предлагают написать маленький http-сервер (и ведь предлагают же, судя по статьям в иннете), то его и писать не надо, т.к. он уже готовый есть (например, в том же питоне в стандартной поставке). а если писать все-таки надо, то с рабочим сервером устаивается на работу нет мазы, лучше двинуть его на рынок. кстати, работодатели, дающие такие задачи, не в состоянии ответить на элементарный вопрос: сформулируйте список требований к серверу и обоснуйте чем вам не подходят уже существующие.
СП> А как соглашаться работать с людьми, о которых я ничего не знаю (кроме того, что не умеют грамотно проводить собеседования)?
это уже другой вопрос.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.