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

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

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

Date: 2013-05-13 05:09 am (UTC)
From: [identity profile] thxbye.livejournal.com
Мне понравился вопрос, предложенный в своё время 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 Date: 2013-05-13 05:10 am (UTC)

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

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

Date: 2013-05-13 07:47 am (UTC)
From: [identity profile] ripperfrvr.livejournal.com
Что такое fold?
accumulate похожа на reduce в Питоне.

Date: 2013-05-13 09:36 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
reduce это питоновское название для fold :)

Знать надо, понятное дело, в первую очередь концепцию, но и стандартное название неплохо бы знать, потому что оно используется в литературе повсюду.

Date: 2013-05-13 12:23 pm (UTC)
From: [identity profile] meshko.livejournal.com
Я прошу написать сами map и reduce (accumulate) когда интервью идет хорошо.

Date: 2013-05-13 12:34 pm (UTC)
From: [identity profile] brandt1.livejournal.com
Спасибо: не знал о методе shift() (кажется, не нуждался). А где же определение combiner?

Date: 2013-05-13 03:29 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Посмотрите на параметры accumulate внимательно.
Edited Date: 2013-05-13 03:30 pm (UTC)

Date: 2013-05-13 04:13 pm (UTC)
From: [identity profile] brandt1.livejournal.com
Конечно, смотрел. Но я не вник в суть задания. Теперь понял, что функцию combiner надо как раз определить.
Даже нашел ее, хотя сам я такими трюками не пользуюсь.

Date: 2013-05-13 04:25 pm (UTC)
From: [identity profile] brandt1.livejournal.com
Что значит где - сам нашел,но сверил ответ с источником: http://www.joelonsoftware.com/articles/TestYourself.html

Date: 2013-05-13 04:29 pm (UTC)
From: [identity profile] brandt1.livejournal.com
Что значит где - сам нашел, но сверил с источником. Тут я вставлял ссылку, но мне сообщил ЖЖ, что мой ответ воспринят как спам. Поэтому укажу, что эта ссылка находится через Гугл по тексту
function accumulate(combiner, nullValue, l)

Date: 2013-05-13 05:02 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
А, в смысле, написали ее?

Date: 2013-05-13 05:17 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Понятно. Меня сбило слово «трюк». Что за трюк имеется в виду?

Date: 2013-05-13 07:34 pm (UTC)
From: [identity profile] brandt1.livejournal.com
Ну просто, всю эту задачу я так назвал,без желания обидеть. В практической деятельности кто так сумму квадратов находит? Это хорошее упражнение на рекурсию. Если я в чем-то неправ,объясните.

Date: 2013-05-13 08:31 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Сумму квадратов через accumulate, конечно, не считают, раз ее можно посчитать по формуле (если ее вообще кто-нибудь считает). Речь не о сумме квадратов, а о самой функции accumulate, которую совсем не ради суммы квадратов придумали.

Date: 2013-05-14 05:47 am (UTC)
From: [identity profile] brandt1.livejournal.com
Ясно,что речь не о сумме квадратов. А для чего ее придумали? Приведите примеры практического использования этой javascript функции.

Date: 2013-05-14 06:41 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Это волшебная функция. Я на джаваскрипте не пишу, поэтому практических примеров из этого языка привести не могу, но вот народ собрал примеры на питоне: http://stackoverflow.com/questions/15995/useful-code-which-uses-reduce-in-python, а вот, если интересно, теоретический фундамент этого дела: http://www.cs.nott.ac.uk/~gmh/fold.pdf (fold и reduce — другие названия для этой же функции).

Date: 2013-05-14 08:45 am (UTC)
From: [identity profile] brandt1.livejournal.com
Спасибо за ссылки, попробую почитать. Но все это далеко от моего конкретного вопроса. Как подбирать функцию combiner для конкретных случаев, да и каковы они?
Поэтому для меня это и выглядит пока трюком. Беглый просмотр pdf-файла не дает ответа на вопрос,да и ответы на питоне как-то далеки от темы.

Date: 2013-05-14 11:05 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Я боюсь, беглого просмотра будет мало. Объяснить все в одном комментарии я тоже не смогу. Вдумчивое изучение ничем не заменить.

June 2025

S M T W T F S
123 4 5 6 7
8 910 11 12 13 14
15 16 17 1819 20 21
22 23 24 25 26 27 28
29 30     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 2nd, 2025 04:22 am
Powered by Dreamwidth Studios