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] 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] tembel.livejournal.com 2013-05-13 04:38 am (UTC)(link)
Что есть font screen?

[identity profile] tembel.livejournal.com 2013-05-13 04:40 am (UTC)(link)
Но почему необязательно a>=b? Всё же упадет

[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] panikowsky.livejournal.com 2013-05-13 05:08 am (UTC)(link)
++

[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:24 am (UTC)(link)
нефига на ноль делить патамучта! :)

[identity profile] michk.livejournal.com 2013-05-13 05:26 am (UTC)(link)
Мне область вроде понятна, но восхищения от дискуссии этот факт не уменьшает.
Edited 2013-05-13 05:26 (UTC)

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

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

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

[identity profile] beldmit.livejournal.com 2013-05-13 05:47 am (UTC)(link)
Вообще-то там private.

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 06:03 am (UTC)(link)
Операторы / и % при нулевом правом операнде тоже не шибко хорошо себя ведут, но мы же ими пользуемся.

[identity profile] oleg-pavliv.livejournal.com 2013-05-13 06:04 am (UTC)(link)
Таких упражнений полно в SICP http://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs

[identity profile] avp-13.livejournal.com 2013-05-13 06:05 am (UTC)(link)
Это java же, в C++ было бы
private:
static int ok()

а не "private static int ok()"
Edited 2013-05-13 06:07 (UTC)

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 06:08 am (UTC)(link)
Всякий программист обязан знать, что такое fold.

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

[identity profile] anton berezin (from livejournal.com) 2013-05-13 06:43 am (UTC)(link)
Так как это метод для вычисления остатка - подвисание при b=0 - это своего рода исключение. На ноль делить нельзя.

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

[identity profile] gineer.livejournal.com 2013-05-13 07:10 am (UTC)(link)
да ясно в чем подковырка -- в случае если области памяти пересекаются

[identity profile] gineer.livejournal.com 2013-05-13 07:14 am (UTC)(link)
Ну, у меня было такое задание -- отсортировать массив чисел от 0 до 255 размером 256 ;)
А когда я в конце заметил, что подобный массив вообще-то и сортировать не нужно,
заметил уже у интервюирующего в глазах такое непонимание,
что решил не продолжать тему.

:)

[identity profile] gineer.livejournal.com 2013-05-13 07:15 am (UTC)(link)
http://avva.livejournal.com/2625137.html?thread=95987057#t95987057

Page 3 of 11