Страницы

пятница, 19 января 2018 г.

JavaScript interview question

"Посетителю должно быть неудобно. Посетитель должен быть смешон. Иначе, какое от него удовольствие?", - братья Стругацкие"Обитаемый остров". Сегодня познакомился с задачей, которую можно использовать на собеседовании по JavaScript если вдруг появилось желание "сделать посетителю неудобно". Или собеседник знает в чем подвох, что маловероятно (вряд ли кто-либо использует подобные приемы на практике), или есть шанс получить процесс решения, который может кое-что рассказать о собеседнике. Не пытайтесь повторить это дома.

Код:
sum(1)(2) == 3 // true
sum(1)(2)(5) == 8 // true
sum(1)(2)(5)(-4)(7) == 11 // true
sum(1)(2)(5)(-4)(7)(-3)(6) == 14 // true

Задача: напишите функцию по имени sum.

Решение может выглядеть так:
const sum = (a) => {  
  const f = (b) => sum(a + b)
  f.valueOf = () => a
  return f
}

"Грязный трюк" с Object.prototype.valueOf и никакого мошенничества.

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