November 14th, 2019

baker

ще задача з інтерв'ю

Тут вчора написав про задачку на співбесіді, яку я вважав тривіальною і дав кандидатові в якості перевірки знання Python’a. Я думав, то розминка на три хвилини, а кандидат за 20 хвилин не справився, а мені потім сказали, що вона не така вже і тривіальна. Раз мене читає хоча би кілька людей, які очевидно мають на порядок більше знань і досвіду в програмуванні в індустрії, ніж я, запитаю ще про одну задачку. Яку я теж вважаю тривіальною, правда, розрахованою хвилин на 15-20, але мені її поки що ніхто не розв’язав… Це я забагато від кандидатів хочу, чи чогось не розумію в людях, чи ще що?

Задачка: порахувати і видркукувати факторіал цілого числа між 0 і, нехай, 100. Видрукувати в американському форматі, розділяючи кожні три розряди комою. Наприклад:
>>> print_factorial(6)
120
>>> print_factorial(10)
3,628,800

Додаткова умова: не покладатися, що інтерпретер розуміє більше, ніж стандартний 32-бітний int, або 64 біт, воно на одно виходить.*

Кілька людей пробували, але поки що, принаймні, зрозумів, чого від нього хочуть, лише один: чувак з математичною магістеркою з Берклі, Правда, він теж не допрограмував до кінця, але то в нього проблеми з швидкістю генерації кода, думав він нормально.

Два запитання в зал:
1. Хіба це, справді, занадто складна задачка для 20 хвилин на Пітоні для людини, яка претендує на посаду Data Scientist, а то і Senior Data Scientist (scientist, Carl) з зарплатнею розміром в бюджет невеликого українського села?!?
2. Якого хріна всі (навіть чувак з Берклі), першим ділом, коли питаєш їх, як вони будуть програмувати факторіал, щось бурмочуть про … рекурсію? Нафіґа?!? Єдина гіпотеза, яку я придумав, це те, що в якійсь популярній книжці з програмування рекурсію пояснюють на прикладі факторіалу.

* Спочатку я про додаткову вимогу не казав, хотів, щоби вони самі здогадали, але виявилося, що я застарів, і нинішні Пітони, в тому числі і coderpad, собака, не мають верхньої планки розміру інтеджера. Коли мені перший кандидат (той самий математик з Берклі) спочатку тупо в лоб написав множення в циклі, я, хитро так, сказав: “ну, давай перевіримо”, і написав факторіал 44. А воно, зараза, видрукувало! Правда, без ком в потрбних місцях, але я, все одно, завис на кілька хвилин від такої підстави.

Crosspost from https://malyj-gorgan.dreamwidth.org/103381.html.