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