avva: (moose)
[personal profile] avva
Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?

private static int ok(int a, int b) {
   while (a >= b) a -= b;
   return a;
}

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

Date: 2013-05-12 11:00 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Это невероятно суперсинтетический тест. Я очень отрицательно к ним отношусь. За свою жизнь видел немало программистов, которые понимают такие приколы и могут их отлаживать, но не в состоянии создать ничего прикладного.

Date: 2013-05-12 11:07 pm (UTC)
From: [identity profile] dzz.livejournal.com
IMHO, тест занятный. Вопрос не в самом тесте, а в том, насколько сильно он влияет на решение интервьюера о том, подходит ли кандидат. Прикладные аспекты всё равно сносно не выявить в ходе часового интервью, а на образ мысли товарища посмотреть очень полезно.

Date: 2013-05-12 11:14 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Ну разве что "размышления вслух", пожалуйста.

Просто вариант "ответ или за дверь" — это как-то совершенно по-детски.

Date: 2013-05-13 11:39 am (UTC)
From: [identity profile] polenova.livejournal.com
Об образе мысли интервьюера тест говорит гораздо больше. Я бы к такому работать не пошла. Вариантов два: он сам не видит ошибки, тогда он идиот, или он предполагает, что я в двух строчках ошибки не увижу и считает меня за идиотку. Оба варианта хуже. Непрофессильнально как-то. Спросил бы еще, что получится, если на ноль поделить.

Date: 2013-05-13 11:57 am (UTC)
From: [identity profile] dzz.livejournal.com
Значит, вы с потенциальным работодателем просто не подходите друг другу ;)

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

Date: 2013-05-13 12:56 pm (UTC)
From: [identity profile] polenova.livejournal.com
Я спокойно отношусь, если меня за дурака считают, но не люблю специально расставленых ловушек. Психологически неприятно. Многое зависит от того как вопрос поставлен. Спросили бы у меня, что делает этот код и правильно ли он написан - я бы спокойно ответила, там думать не о чем. А вопрос "как назвать эту функцию?" - да никак, потому что она написана неправильно! Мало мне код прочитать, так еще и намеренье интервьюэра разгадать! Я бы на такую работу не пошла. Но я уже старенькая, может это для молодежи проверка?

Date: 2013-05-13 02:29 pm (UTC)
From: [identity profile] igorbor.livejournal.com
Лиля, ты не представляешь себе, какие люди приходят на интервью. Я думаю, из полусотни, которых я интервьюировал за прошедший год, хорошо если пяток смогут прочитать этот код, не говоря уже о найти ошибку. Там такие орлы встречаются, такие перлы выдают, что очень-очень трудно не потерять веру в человечество.

Date: 2013-05-13 08:20 pm (UTC)
From: [identity profile] polenova.livejournal.com
Я, вообще-то 7 лет менеджером была, представляю. Но идиоты по телефону легко отсекаются, зачем на них время тратить? Я на интервью спрашиваю, что человек делал - это и по телефону можно, один два наводящих вопроса - и ясно, делал он это или нет. Зачем хитрости-то?Я правда в сугубо прикладной области работаю, мне все равно, знает ли программист, как подсчитать остаток от деления или написать сортировку. Если бы мне пришло в голову дать такой пример, я бы спросила где ошибки в коде, а не что эта функция делает, потому что так как она написана - ничего толкового она не делает и зачем нужна совершенно непонятно.

Date: 2013-05-13 09:34 pm (UTC)
From: [identity profile] igorbor.livejournal.com
Что делает эта конкретная функция - совершенно неважно. Важно умение человека читать код и понимать, что этот код делает.

Эта функция как раз прекрасный пример. Она, может, и не нужна совсем - вот пусть он мне и обьяснит, зачем она могла быть нужна и если не нужна - то чем ее можно заменить.


И я не понимаю, что значит "в прикладной области" и что это за область такая, где программисту не нужно уметь написать сортировку? По-моему, это как умение читать и писать: если человек не может предложить мне несколько способов посчитать остаток от деления или не может написать сортировку пузырьком, то какой же он программист?

Date: 2013-05-13 11:06 pm (UTC)
From: [identity profile] polenova.livejournal.com
Эта конкретная - ни за чем не нужна, потому что написана неправильно.
Я вебом занимаюсь и базами данных. Ну умею я сортировку писать, ну и что? Мало ли какую еще фигню я умею. Поверь мне, людей, способных написать элементарный селект из двух таблиц в 100 раз меньше умеющих написать сортировку. Хотя для меня загадка - что там уметь-то? А чтобы разбирался хоть минимально как объекты в памяти лежат - их вообще днем с огнем. Но они все умеют писать сортировку и задавать им такие задачки бессмысленно. А других лучше к коду не подпускать, пусть хоть 20 разных сортировок напишут.
Хотя, если берешь на работу студента - может и имеет смысл такие задачки давать.

Date: 2013-05-14 10:36 am (UTC)
From: [identity profile] awind.livejournal.com
ну да. в БД сортировка есть, в библиотеке есть, зачем писать? хотя недавно впервые лет за 15 понадобился бинарный поиск, так проще было из Кнута списать, чем индексную арифметику на пальцах проверять.

Date: 2013-05-14 02:49 pm (UTC)
From: [identity profile] polenova.livejournal.com
Бинарный поиск, как и сортировку пузырьком, я с закрытыми глазами пишу, их вечно на интервью спрашивают. И еще обход бинарного дерева и перевернуть линк-лист в обратную сторону - через рекурсию и через цикл. В жизни мне это не пригодилось ни разу. Впрочем, на интервью уже тоже давно не спрашивали, видимо, я из возраста вышла.

Date: 2013-05-14 04:40 pm (UTC)
From: [identity profile] igorbor.livejournal.com
Эта конкретная - ни за чем не нужна, потому что написана неправильно.

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


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

Ну дык! Поэтому логично человека, неспособного написать сортировку, к базам данных вообще не допускать, не так ли?

Мне нужны специалисты по реалтайму, сетевым протоколам и ядру. Найти ТОЧНО то, что нужно, практически невозможно, поэтому приходится искать людей, которые смогут научиться в процессе.

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

И мой печальный опыт показывает несколько вещей:
- верить никому нельзя. Даже наличие нескольких лет опыта в серьезной компании не гарантирует, что человек напишет сортировку пузырьком или найдет остаток от деления.
- вышеприведенная задача находится на том уровне сложности, на котором большая часть соискателей уже срубается. И студентов, и людей с 5-10 годами опыта. Они банально не умеют читать код и уж подавно не умеют его писать. Я не знаю, что является причиной - скорее всего, эти годы они занимались какими-нибудь узкими задачами со специализированными фреймворками, но уровень соискателей ЧУДОВИЩНЫЙ.

Может быть, конечно, это мне так везет. Я точно знаю, что хорошие программисты встречаются, и видел их следы в интернете и даже лично знаю многих - но 90% соискателей, к сожалению, функционально неграмотны.


UPDATE: я дописал предыдущее предложение, но не успел отправить комментарий, потому что пришел очередной кандидат. Так вот - я дал ему этот код и попросил обьяснить, что там происходит и что в этой функции неправильного. В процессе обсуждения выяснилось: тот факт, что целые числа могут принимать отрицательные значения, явился для него откровением. Согласись, знает ли он, как обьекты в памяти лежат или нет, уже неважно.

Date: 2013-05-14 05:18 pm (UTC)
From: [identity profile] polenova.livejournal.com
Для твоих задач действительно нужен человек, который вообще хорошо код умеет писать, найти конкретного специалиста трудно. А для моих - ситуация другая. Те кто будут писать на SQL, могут не уметь писать сортировку, им это на хрен не надо. Хитрый запрос я и не прошу - может две таблицы связать - можно дальше разговаривать. Но бывает, что разговор на этом и заканчивается.
Ну а в вебе мне знание фреймворка надо, особенно сложного программирования там нет, зато всяких побочных знаний до фига и учить всему этому я абстрактного программиста замучаюсь. Программист, который знает фреймворк, да еще знает как это внутри устроено, да еще в алгоритмах разбирается, паттерны знает и т.д. - такой программист встречается в природе, но стоит дорого, меньше чем на 100 тысяч не пойдет, и простые формы рисовать не станет. А тот, который стоит подешевле - сортировку может и не написать. Найти канарейку за копейку, чтобы она пела и ничего не ела - задача малореальная. Те кто все умеют - либо сами давно начальники и кода не пишут, либо бездельники вроде меня, творческая публика, сегодня работает, а завтра ему надоело. Потому и общий уровень кандидатов такой, потому и код везде кошмарный - нечему удивляться.
Верю я не тому что в резюме написано, я прошу про конкретный проект рассказать и спрашиваю детали какие-нибудь, какие трудности были, какие баги. Если сам писал - это сразу очевидно, можно задачек и не давать. У нас же проблемы более менее однотипные.
К апдейту: А твой соискатель, который не знал, про отрицательные числа, знал что целое число нулем бывает?

Date: 2013-05-14 08:10 pm (UTC)
From: [identity profile] igorbor.livejournal.com
Да, про ноль он знал. Но он очень многого другого не знал, например, когда я его спросил, что еще в этой функции неправильно, он сказал, что аргументы функции неинициализированы. Это уже вообще за пределами добра и зла, по-моему.

Date: 2013-05-15 03:19 am (UTC)
From: [identity profile] polenova.livejournal.com
Н-да... Все смешалось в доме Облонских. Но ноль заметил, интересно как. Молодой, што ли? Но все равно - пусть идет и учит матчасть. А если старый - пора переквалифицироваться в управдомы.

Date: 2013-05-20 06:15 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Ну это не худший вариант такого кода. Чаще в качестве кода на собеседованиях дают, судя по постам в ЖЖ, вариации на тему p+++++p.

А идиоты на собеседование, увы, приходят...

Date: 2013-05-13 04:09 am (UTC)

Date: 2013-05-13 05:39 am (UTC)
From: [identity profile] migmit.livejournal.com
Много ли вы видели программистов, которые такие приколы НЕ понимают, но при этом в состоянии создать нечто прикладное?

Date: 2013-05-13 08:18 am (UTC)
From: [identity profile] egorfine.livejournal.com
Подавляющее большинство.

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

July 2025

S M T W T F S
  12345
67 8910 1112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 15th, 2025 01:33 am
Powered by Dreamwidth Studios