Перевод статьи «What I learned from failing my technical interviews».
Технические собеседования — очень нервирующая процедура, которая легко может деморализовать разработчика. Раньше там давали решать настоящие головоломки типа «Посчитайте, сколько мячиков для гольфа влезет в школьный автобус». Слава богу, больше таких задач не задают. Но и сегодня кандидатам приходится решать нежизненные задачи, причем во время решения за ними пристально следит как минимум одна пара глаз.
Несколько слов о себе. Я закончила Сиракузский университет (США) и получила степень бакалавра по информатике. Это был самый трудный период моей жизни, обеспечивший мне пару седых волос. Вместе с тем мне повезло найти хороших друзей, с которыми мы регулярно вместе учились, портили зрение, сидя за компьютерами в лаборатории до заката и набивали животы фастфудом.
В этой статье я расскажу о своем опыте технических собеседований и о выводах, которые сделала после каждого из них.
IBM
- Год: 2017
- Позиция: фронтенд-разработчик
Это была моя первая большая ошибка. Мне впервые пришлось решать задачи на специальной онлайн-платформе, причем моя работа записывалась через веб-камеру. Я получила два задачи, одна из которых была похожа на FizzBuzz. FIZZBUZZ! И я не знала, как ее решить. Клянусь вам. Я застряла над клавиатурой, не имея ни малейшего понятия, как полностью решить задачу. В итоге я просто отослала то, что смогла сделать.
Чему я научилась
Хотя провалиться на FizzBuzz было унизительно, я понимала, что это всего лишь моя первая попытка решить задачу на собеседовании, и она определенно не последняя. Я поняла, что нужно более серьезно отнестись к Leetcode и продолжать подавать заявки в разные компании, чтобы узнать как можно больше о процессе собеседований.
ESPN
- Год: 2017
- Позиция: фронтенд-инженер
Мне задали несколько вопросов. В частности, нужно было рассказать об AJAX и асинхронности. Также было несколько простых задачек с Leetcode. У меня не было предыдущего опыта работы с фронтендом, поэтому я не знала, как отвечать на конкретные вопросы по фронтенду и не ожидала их.
Мои выводы и действия
В дополнение к решению задачек на Leetcode нужно было готовиться к вопросам, характерным для той позиции, на которую я претендовала. Я стала искать типичные вопросы собеседований для фронтенд-разработчиков, а также оттачивать свои навыки, создавая личные проекты.
Год: 2017
Позиция: Engineering Residency program
Первый раунд включал в себя два технических телефонных собеседования. Интервьюер позвонил мне по телефону и прислал ссылку на Google doc. В этом документе я нашла условие задачи, которую мне нужно было решить. Я сразу взялась за решение, но вскоре растерялась. Я спросила интервьюера, какие входящие данные были валидными, а какие — нет. Он ответил, но я запуталась еще больше, и интервьюер потратил много времени, пытаясь объяснить мне задачу. Тогда я сказала, что больше не хочу продолжать собеседование. Интервьюер явно мне сочувствовал и пытался меня «распутать», но я была тверда в своем решении и повесила трубку.
Все время до следующего собеседования я проревела, на звонок интервьюера не ответила, как и на пару последующих звонков. Затем со мной связалась моя рекрутерка и спросила, хочу ли я вообще продолжать. Ей я тоже не ответила.
Google, если вы читаете это, знайте, что я очень сожалею. Но с тех пор я выросла.
Мои выводы и действия
- Я договорилась с другом, чтобы он помог мне подготовиться к собеседованию. Мы созванивались по видеосвязи, он выбирал случайную задачу на Leetcode, а я решала ее, расшаривая экран.
- Я привлекла сокурсников, чтобы они вместе со мной решали на белой доске задачки, которые нам попадались на собеседованиях.
- Каждые выходные я организовывала учебную группу, в которой мы все вместе изучали структуры данных и алгоритмы, а также решали задачки с Leetcode.
Я старалась как можно больше практиковаться, не обращая внимания на усталость. Более того, я нарочно старалась ставить себя в затруднительное положение, чтобы привыкнуть к дискомфорту во время собеседований и в результате чувствовать себя более уверенно.
Microsoft
- Год: 2019
- Позиция: инженер-разработчик программного обеспечения
Я прошла первый раунд собеседований, на котором были вопросы и технического, и поведенческого плана. Затем я перешла к заключительному раунду, который состоял из двух личных интервью. Первое, мне кажется, я прошла отлично. Там были поведенческие вопросы, а кроме того я рассказывала о своих проектах, перечисленных в резюме. А вот на втором собеседовании мне дали задачу на проектирование систем. Я не знала, как ее решить, но все равно попробовала. Найти правильный ответ мне так и не удалось, и в конце интервьюер показал мне, как следовало подходить к этой задаче.
Когда пришло время задавать вопросы, я спросила, что мне нужно улучшить в своих навыках. Интервьюер сказал, что мне нужно научиться говорить «Я не знаю», когда я действительно не знаю, как решить задачу.
Мои выводы и действия
Я поняла, что когда на собеседовании не знаешь ответа на вопрос, надо так прямо и говорить. Правда, я немного подкорректировала свой ответ для таких ситуаций. Мне кажется, что лучше и правильнее сказать не просто «Я не знаю», а что-то вроде «Честно говоря, я не знаю, но могу предположить, что…».
- Год: 2020
- Должность: Full stack инженер
В этом году меня преследовали неудачи. Из-за пандемии было сложно заинтересовать какую-либо компанию. Поэтому я была очень рада, когда меня пригласили на первое техническое собеседование.
Приглашение было сделано через BlueJeans: мне прислали ссылку на Coderpad. На тот момент я уже долго готовилась к собеседованиям, но все равно нервничала, зная о конкуренции в этой компании. Мне дали задачу на расчет налогов. Большую часть времени интервьюеру пришлось объяснять мне математическую сторону расчета. Я не знаю, почему у меня произошел затык с математикой. Но из-за него я также не смогла придумать рабочее решение решение, а затем просто время вышло.
Мои выводы и действия
Я научилась рассчитывать налоги.
Также я познакомилась со стратегией прохождения технических собеседований UMPIRE. Мне нужно было понять, как вообще следует подходить к задачам на собеседованиях. После изучения и отработки этой стратегии на практике я почувствовала себя более уверенно. Я убеждена, что моя уверенность произвела впечатление и на моих будущих интервьюеров.
Итоги
Когда я получила email, начинавшийся со слов «Поздравляем! Мы рады предложить вам позицию разработчика ПО», у меня будто гора рухнула с плеч. Наконец-то непрерывное решение задач на Leetcode, подача огромного числа заявок, построение сети контактов и ведение личных проектов принесли плоды.
Если вы тоже испытываете трудности при поиске работы, знайте, что вы не одиноки. Используйте свое окружение при подготовке к собеседованиям. Тренируйте друг друга и не забывайте о причинах, по которым хотите добиться успеха.
Советы
- Проходите собеседования почаще. Собеседуйтесь в компаниях, которые вам безразличны.
- Практикуйтесь в решении задач под давлением. Например, решайте задачи на время или в чьем-то присутствии, пробуйте сразу же придумать, как оптимизировать алгоритм решения.
- Прием помидора помог мне более серьезно подойти к изучению структур данных и алгоритмов. Благодаря концентрации мне удалось довести число решенных задач на Leetcode с 50 до 100.
- Если у вас есть финансовая возможность, потратьтесь на Leetcode Premium. Когда застрял над задачей, возможность подсмотреть решение очень помогает.
- Нужно готовиться к собеседованию именно на ту позицию, на которую вы претендуете. Например, на собеседовании на позицию фронтенд-разработчика вас спросят об AJAX, дереве DOM и т. п. вещах, а если вы собеседуетесь на должность iOS-разработчика, у вас будут вопросы по Swift и Objective C.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]