«Сосредоточьтесь на том, чтобы полностью контролировать ситуацию». Банальная и до боли знакомая фраза. Но не недооценивайте данный совет: он применим к абсолютно любой ситуации, в том числе в плане технического собеседования, к которому вы так долго готовились.
Но как успешно пройти собеседование, чтобы получить желаемую должность? В тонне блогов неоднократно писали на эту щекотливую тему, и через большинство из них красной нитью протянуто: «практика, практика, практика!», «к черту собеседования!» или «выучивайте по одному алгоритму каждый день». Безусловно, это ценные замечания, но даже имейте вы годы упорной практики за плечами, нет гарантии, что на собеседовании вам не дадут задачу, которую вы не сможете решить.
Вот к чему цитата, с которой начинается эта статья. Кандидаты настолько сосредотачиваются на самом интервью, что теряют контроль над ситуацией, а это важнейшая составляющая успеха.
Представляем основные советы и приемы для успешного технического собеседования.
В первую очередь убедитесь, что вы правильно поняли поставленную перед вами задачу. Задавайте вопросы, например, в какой форме должны быть входные и выходные данные. Хоть это и кажется очевидным, нет ничего плохого в том, чтобы подтвердить свои предположения.
Здесь вы определяете основные и граничные случаи. Для каждой задачи эти вопросы различны.
- Могут ли входные данные быть пустыми или представлять собой null?
- Могут ли быть повторения в массиве?
- Все ли символы строчные?
- Могут ли входные данные быть отрицательными?
- Не выходят ли они за границы диапазона значений переменной?
- Является ли граф ациклическим?
- Ориентирован ли он?
- Является ли дерево бинарным?
- Это дерево бинарного поиска?
Не стоит забывать, что не все вышеперечисленные вопросы применимы к любой задаче. Но, получив на них ответы, вы будете иметь более четкое представление о том, с чем имеете дело.
Основываясь на специфике вашей задачи, подумайте, какие структуры данных и алгоритмы наиболее оптимальны в данном случае.
Здесь начинается настоящее испытание. Итак, у вас уже достаточно информации, чтобы справиться с задачей. Но что вы будете делать, если понятия не имеете, как ее решать?
РЕШАЙТЕ В ЛОБ! Применение «грубой силы» имеет свои преимущества. Начнем с самого очевидного. Все мы учились, и каждому из нас наверняка приходилось сталкиваться с вопросом, на который мы не знали правильного ответа. Но оставлял ли кто-нибудь бланк пустым? Ни в коем случае! Мы писали что угодно, что хоть немного могло «подобраться» к теме.
Да, это будет не тот ответ, которого ждет от вас интервьюер. Но это безусловно лучше, чем вообще ничего.
Вы берете свое топорное решение из предыдущего шага и начинаете улучшать его. Не забудьте упомянуть о временной сложности алгоритмов и O-нотации.
Здесь нет никакого секрета. Глубоко вдохните, расслабьтесь и оставайтесь на волне. Если чувствуете, что застопорились, не теряйтесь и попросите у собеседующего небольшую подсказку.
Итак, вы подошли к рубежу с элегантным решением, учитывающим все граничные случаи и использующим оптимальный алгоритм. Последнее, о чем осталось подумать – как вы будете его тестировать. Обычно этот шаг подразумевает небольшую дискуссию, где вы перечисляете несколько тест-кейсов. Ничего сложного здесь нет, важно лишь показать, что тестирование является для вас весомой частью разработки.