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

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

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

Date: 2013-05-12 10:25 pm (UTC)
oryx_and_crake: (oryx_and_crake)
From: [personal profile] oryx_and_crake
За такой код надо выгонять с работы с волчьим билетом.
Какой смысл предъявлять на интервью код, с которым _в нормальной компании_ человек никогда не столкнется?

Date: 2013-05-12 10:39 pm (UTC)

Date: 2013-05-12 10:46 pm (UTC)
From: [identity profile] dzz.livejournal.com
Смысл - посмотреть, поймёт ли разработчик, что в этом коде не так.

Date: 2013-05-12 10:47 pm (UTC)
From: [identity profile] archaicos.livejournal.com
Мне думается, что в любой компании, где вообще есть код, найдутся похожие «произведения искусства».

Date: 2013-05-12 10:55 pm (UTC)
From: [identity profile] 0x8.livejournal.com
Плохой код, он как мыши. Самозарождается в грязном белье.
В хорошей компании его нет не потому, что он там магически не появляется. А потому, что кто-то постоянно с ним борется, выкидывая и рефакторя такое говно.
А вот уже чтоб с ним бороться, его надо понимать. И именно люди могущие его распознавать и его воевать - отчаянно нужны индустрии.

Date: 2013-05-12 10:59 pm (UTC)

Date: 2013-05-12 11:09 pm (UTC)
oryx_and_crake: (Default)
From: [personal profile] oryx_and_crake
Да, пожалуй, вы правы.

Date: 2013-05-13 03:05 am (UTC)

Date: 2013-05-13 05:08 am (UTC)

Date: 2013-05-13 12:57 am (UTC)
From: [identity profile] meshko.livejournal.com
А что такого ужасного? Как бы вы написали мод для неотрицательных чисел?

Date: 2013-05-13 01:20 am (UTC)
From: [personal profile] ichthuss
int i=0;
while (b < a) {
b << 1;
i++;
}
while (i >= 0)
{
if ( a > b) a -=b;
b >> 1;
i--;
}
return a;

Это навскидку, конечно же. По хорошему тут ещё нужны проверки на переполнение.
Edited Date: 2013-05-13 01:27 am (UTC)

Date: 2013-05-13 01:32 am (UTC)
From: [identity profile] meshko.livejournal.com
Ну это то же самое, только с premature optimization и менее читаемое.

Date: 2013-05-13 12:53 pm (UTC)
From: [personal profile] ichthuss
Это не то же самое. Подобного рода код вполне может применяться на каком-нибудь железе, не имеющем аппаратного деления. А для кода из заглавного поста мне вообще трудно придумать применение. Разве что в какой-то специфической задаче заранее известно, что a будет больше b не более чем в единицы раз.

Date: 2013-05-13 02:03 am (UTC)
From: [identity profile] salas.livejournal.com
Этот код содержит не менее двух ошибок. Я склонен прямо связывать этот факт с упомянутыми комментарием выше читаемостью и premature optimization.

Date: 2013-05-13 12:51 pm (UTC)
From: [personal profile] ichthuss
Это понятно, я ведь код не тестировал, и вообще писал с ходу, с единственной целью - показать идею. В реальном применении я бы над ним думал не 40 секунд, а 5 минут, и проверил бы на тестах.

Date: 2013-05-13 02:27 pm (UTC)
From: [identity profile] amosk.livejournal.com
Так и код из интервью тоже написан с целью показать идею :)

Date: 2013-05-13 02:29 pm (UTC)
From: [personal profile] ichthuss
Поэтому я и не высказываю к нему придирки насчёт, скажем, неработоспособности при неположительных значениях аргумента. Но код с идеей из заглавного поста имеет очень узкую область реальной применимости (мне даже сложно такую придумать), а с моей идеей деления в столбик - вполне реальную область в микроконтроллерах. Этот вопрос совершенно ортогонален вопросу о работоспособности кода в смысле полноты реализации идеи.

Date: 2013-05-13 05:34 am (UTC)
From: [identity profile] variate.livejournal.com
Это более-менее нормальный код, например, для навигации по кольцевому меню в микроконтроллере, где нет быстрого деления, и важно сэкономить место.

Date: 2013-05-13 12:57 pm (UTC)
From: [personal profile] ichthuss
На яве? :)

А если серьезно, то в таком случае стоило бы добавить второй такой же цикл вроде while (a < 0) a += b; В указанном же виде мне трудно увидеть применение для этого кода (даже если считать его написанным на си).

Date: 2013-05-13 08:06 am (UTC)
From: [identity profile] dimrub.livejournal.com
Вне зависимости от вопроса о том, хорош ли этот код, и каковы шансы с ним столкнуться, задача поставлена вполне ясно, как мне кажется: понять, что этот код делает. И учитывая, что хорошие кандидаты эту задачу решают, а плохие - нет, свою цель этот код выполняет.

July 2025

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 6th, 2025 06:15 pm
Powered by Dreamwidth Studios