avva: (moose)
avva ([personal profile] avva) wrote2013-05-13 01:17 am

альтернатива физзбаззу

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

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

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

[identity profile] tybr.livejournal.com 2013-05-12 10:21 pm (UTC)(link)
Штирлиц выдал себя написав ok(0,0); :)

[identity profile] vasja-iz-aa.livejournal.com 2013-05-12 10:23 pm (UTC)(link)
а как ее цензурно можно назвать? она при нулевом б повисает навсегда
oryx_and_crake: (oryx_and_crake)

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

[identity profile] dzz.livejournal.com 2013-05-12 10:27 pm (UTC)(link)
Пожалуй, это самый "прямолинейный" способ найти остаток от деления положительного a на положительное b, который мне встречался.

Но, IMHO, это не гарантирует знания других важных концепций. Например, контроля области определения входных параметров функции ;)
Edited 2013-05-12 22:36 (UTC)

[identity profile] xxqs.livejournal.com 2013-05-12 10:47 pm (UTC)(link)
poor man's modulo :)

[identity profile] mea-sententia.livejournal.com 2013-05-12 10:48 pm (UTC)(link)
ok(a, b) = a mod b, where a >= b > 0
so ok == modPos

[identity profile] morfizm.livejournal.com 2013-05-12 10:57 pm (UTC)(link)
Удивлён, что в комментариях ещё никто не обратил внимание на самое главное. Название функции подсказывает, что её результат будут интерпретироваться как bool, соответственно, что она делает - это проверяет, что положительное a не делится на положительное b. То, что в случае true возвращаемое число является остатком от деления a на b, это всего лишь любопытный побочный эффект.

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

[identity profile] tacente.livejournal.com 2013-05-12 11:38 pm (UTC)(link)
С восхищением просмотрел дискуссию. Думаю, что в понятной мне области было бы аналогом.

[identity profile] kot-begemot.livejournal.com 2013-05-13 12:12 am (UTC)(link)
а просто a%b никак нельзя написать?

[identity profile] yucca.livejournal.com 2013-05-13 12:50 am (UTC)(link)
И чего, много таких которые близко не могут понять, о чем речь?

[identity profile] meshko.livejournal.com 2013-05-13 12:58 am (UTC)(link)
Не люблю ФиззБазз. Есть в нем что-то неприятное.

[identity profile] cema.livejournal.com 2013-05-13 03:03 am (UTC)(link)
Неплохо!

[identity profile] alex-hustle.livejournal.com 2013-05-13 04:32 am (UTC)(link)
нормальный тест. Я бы ожидал что человек сначала поймет что это остаток, а потом возмутится что это дырявая реализация и напишет нормальную.

[identity profile] tembel.livejournal.com 2013-05-13 04:37 am (UTC)(link)
Остаток от деления?

[identity profile] raydac.livejournal.com 2013-05-13 04:50 am (UTC)(link)
такие вопросы с таким кодом - первый показатель говнокомпании

[identity profile] polenova.livejournal.com 2013-05-13 04:54 am (UTC)(link)
А какой именно ответ от кандидата ожидается?
That function should be called Bullshit?

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

[identity profile] thxbye.livejournal.com 2013-05-13 05:09 am (UTC)(link)
Мне понравился вопрос, предложенный в своё время Joel Spolsky (код на JavaScript):

Using the function

function accumulate(combiner, nullValue, l)
{
	if (l.length == 0)
		return nullValue;
	var first = l.shift();
	return combiner(first, accumulate(combiner, nullValue, l));
}

Implement sumOfSquares, which calculates the sum of squares of a list, for example

sumOfSquares([1,2,3,4,5])

should evaluate to 55.
Edited 2013-05-13 05:10 (UTC)

[identity profile] furry.livejournal.com 2013-05-13 05:26 am (UTC)(link)
я совсем не программист? даже наоборот. Мне понятно, что эта функция по задумке автора, должна делать. А что автор вопроса считает нормальным ответом? "mod" - ненормальный, а нормальный - все, что выше в комментариях?

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 06:13 am (UTC)(link)
Частично в тему: недавно видел где-то задание написать memmove() на полностью стандартном, абсолютно переносимом C. Кто думает, что знает — не спешите, задачка с подковыркой.

[identity profile] gineer.livejournal.com 2013-05-13 07:09 am (UTC)(link)
остаток от деления?

[identity profile] mopexod.livejournal.com 2013-05-13 07:50 am (UTC)(link)
Очень здравый подход. Я бы даже просил не "сказать, что делает", а просто рассказать всё, что хочется, в связи с этим кодом. Если получается обсуждение, как в комментариях выше - прекрасно.

Мы для затравки обсуждения пользуемся строчкой

delete this;

или чем-нибудь аналогично простым.

[identity profile] Сергей (from livejournal.com) 2013-05-13 07:56 am (UTC)(link)
Комментирующие так возмущаются, как будто где-то сказано, что это божественный, не содержащий ни ошибочки код. Нормальная реакция соискателя должна быть примерно: "Ну, вообще оно ищет остаток от деления, но реализация кривоватая, хорошо бы допилить, вот так и вот так".

[identity profile] d-ohrenelli.livejournal.com 2013-05-13 10:27 am (UTC)(link)
А оно всегда так.
У меня есть 3 таких вопроса (рассказывать не буду), которые с точностью 99 % предсказывают результат интервью, причем годный человек отвечает на них мгновенно, а негодный трепыхается по 10 минут на каждом.

А на вопросе о разделении файла на четные и нечетные строчки валится такая дикая толпа народу, что подумать страшно.

[identity profile] brandt1.livejournal.com 2013-05-13 12:38 pm (UTC)(link)
Непонятно, в чем магическая сила этого вопроса, что остальные знания по программированию с ним так коррелируют. Это скорей вопрос по математике - на знание понятия модуля. Громадная часть программирования не имеет с этим вопросом ничего общего, и человек может быть хорош, даже не зная, что такое модуль. Видимо, это специфика данной компании.

Page 1 of 2