Как зарешивать, если нервничаешь.
На моём самом первом собеседовании мне предложили вот такую задачу: поменяйте местами две переменные таким количеством способов, которым сможете.
Задача не страшная, но на собеседованиях я обычно слишком нервничаю. Думать аналитически в таком состоянии я не могу, поэтому раньше это выглядело так: кандидатка получает условие и зависает в тишине на следущие пять минут. А когда атмосфера уже накаляется, начинает молча писать первое запутанное и неоптимальное решение. То ещё первое впечатление🧐
Мне легче прийти в чувство на вайтбординге, если я решаю вслух. Действую по шагам: сначала я читаю условие для всех в комнате. Это помогает мне сфокусироваться на смысле, а не на своих потных ладошках. Если есть вопросы по требованиям, тут же их задаю: так я не трачу время на последующее переписывание кода из-за неправильно понятого текста.
Я не бросаюсь сразу писать, а сначала вслух проговариваю первый наивный алгоритм, который пришел в голову. На этом шаге я не хочу супероптимально, мне надо придумать хотя бы что-то. Это даст мне ощущение первого успеха, успокоит и поможет установить контакт с собеседующим. А интервьюеру даст возможность навести меня на мысль уточняющим вопросом, если он захочет.
Теперь я обдумываю краевые условия. Например, если я пишу функцию, которая обрабатывает строку, то что будет, если строка пустая? Или если я получаю два числа, то какие патологические варианты этих чисел могут прийти на вход? Проговариваю, как буду обрабатывать эти ситуации.
Потом я задаю себе вопрос, иногда прямо вслух: могу ли я оптимизировать решение? Пару минут я пытаюсь, давая собеседующим возможность подключиться к обсуждению😉, но они могут и просто ждать. И только теперь я берусь за ручку и пишу. Если оптимизировать не получается, я записываю первое неоптимальное решение: сейчас его наличие важнее эстетики. На работе так же: трагедия спринтов обычно в том, что можно красиво, а надо вчера.
И, если у меня ещё остаётся время, прямо на бумаге пишу тесты.
В общем, начинайте с малого и не молчите. Таким образом получается зафреймить процесс, сделать его более управляемым. Я делаю вот так:
🐢 Читаю условие вслух,
🐢 Проговариваю, как собираюсь решать,
🐢 Обдумываю краевые условия,
🐢 Пытаюсь оптимизировать,
🐢 Только теперь пишу код,
🐢 И, если надо -- тесты.
В то время у меня ещё не было опыта и то собеседование я провалила. Сейчас у меня есть какая-то тактика прохождения собеседований (и я ее придерживаюсь), и все проходит заметно легче.
А несколько вариантов, как поменять две переменные местами, я нашла тут. Если эта задача вам встретится, будете во всеоружии. Если на ум приходит ещё решение, отправьте его мне в обратную связь, а я сделаю отдельный пост с самым классным. 🐠