Недавно я узнал, что у Facebook были проблемы с программированием, что, если все будет выполнено правильно, вы автоматически получите телефонное интервью.
Существует типовая задача, в которой вас попросят написать алгоритм, который может решить проблему типа Ханойской башни . Учитывая количество колышков и дисков, начальная и конечная конфигурация; Ваш алгоритм должен определить наименьшее количество возможных шагов, чтобы добраться до окончательной конфигурации и вывести шаги.
Этот пример испытания дает вам 45-минутное ограничение по времени, но позволяет вам по-прежнему тестировать свой код, чтобы увидеть, пройдет ли он, когда истечет ваш срок.
Я не знал ни одного симпатичного математического решения, которое могло бы его решить, и я не хотел искать его, так как думаю, что это будет обманом. Поэтому я попытался решить задачу как мог самостоятельно.
Я был в состоянии сделать алгоритм, который работал и прошел. Однако мне потребовалось более 4 часов, что намного дольше, чем требовалось 45 минут. Так как это заняло у меня намного больше времени, чем отведенное мне время, я не пытался выполнить настоящий вызов.
Это заставило меня задуматься: разве это действительно важно, что это заняло у меня так много времени? Я имею в виду, является ли это признаком того, что я не смогу устроиться на работу в таком месте, как это (не только Facebook, но Google, Fog Creek и т. Д.), И мне нужно снизить свои амбиции, или тот факт, что я действительно прошел с моей первой попытки, хотя это заняло слишком много времени, чтобы быть хорошим?