В сообществе подготовки к собеседованию бытует мнение, что вам нужно решить безбожное количество вопросов LeetCode, чтобы стать инженером-программистом. Позвольте мне развенчать этот миф для вас и объяснить, на чем вы действительно должны сосредоточиться вместо этого.

Мой быстрый фон

Я работаю в Microsoft в течение 1 года в качестве инженера-программиста, ранее в течение 1 года работал в Amazon и скоро присоединюсь к Google. У меня был опыт проведения интервью со стартапами, компаниями среднего размера и компаниями FAANG, а также опыт интервьюера по другую сторону стола.

Вот почему вам не следует слепо отвечать на более чем 1000 вопросов LeetCode.

Подготовка к собеседованию по кодированию — это отрасль, которая нуждается в вашем бизнесе

Чем чаще вы возвращаетесь на какую-либо платформу, тем лучше вы знакомы с веб-сайтом и тем больше вероятность того, что вы будете платить за премиальные услуги. Они живут за счет страха, что вы никогда не будете готовы и вам нужно больше услуг, чтобы добраться туда. В то же время это создает для них больше бизнеса, поэтому вы продолжаете возвращаться.

Вопросы на собеседовании не становятся намного сложнее. Банки вопросов в этих компаниях не меняются так быстро, как вопросы, которые может выдать LeetCode.

Помните, интервьюер тоже человек

Инженер в любой компании сосредоточен на своей проектной работе и повседневной работе. Интервьюирование людей не всегда является для них наивысшим приоритетом, и часто интервьюеры повторно используют вопросы, которые они задавали ранее.

Почему? Потому что требуется время, чтобы изучить новые вопросы, а вопросы, с которыми они уже знакомы, оценивают точки данных, которые они уже ищут.

Вы можете даже заметить, что большинство вопросов, которые вам задают, являются вопросами массива/строки. Вот секрет: интервьюеры иногда слишком ленивы, чтобы изучать более сложные вопросы динамического программирования/нишевой структуры данных.

Наконец, ни один из моих коллег, которых я когда-либо встречал, не задавал более 1000 вопросов по программированию. Если они и существуют, то в абсолютном меньшинстве.

Есть интервьюер по какой-то причине

Если бы все, что нужно сделать, чтобы стать инженером, — это решить вопрос по кодированию, то каждая компания просто раздавала бы онлайн-оценки кодирования. Это не вариант.

Есть интервьюер, потому что он должен оценивать человеческие качества того, с кем он работает.

Вещи как

  1. Коммуникация
  2. Сотрудничество
  3. Решение проблем
  4. Технические знания
  5. Альтернативные решения

Вышеупомянутое нельзя оценить только с помощью оценки кодирования. Все, что делает оценка кодирования, — это гарантирует, что у интервьюируемого есть базовая основа алгоритмов и структур данных. Кроме того, платформы для интервью по программированию не всегда самые полезные.

LeetCode учит алгоритмам, а не тому, как проводить собеседования

Итак, если вы уже знаете скользящее окно, как инвертировать двоичное дерево или инвертировать связанный список, вам действительно нужно решать все +1000? LeetCode делает хорошую работу, обучая вас алгоритмам, которые вам нужно знать, но как только вы их узнаете, вам не следует тратить свое время на повторное изучение того, что вы уже знаете. Вот где LeetCode может плохо переводиться в ваших интервью

Коммуникация

Вы понимаете алгоритм, но насколько хорошо вы можете изложить его так, чтобы его понял интервьюер? Трудно говорить вслух, когда единственный, кто слушает, — это компилятор LeetCode на вашем мониторе.

Уточнение проблемы

Если не с кем поговорить, то и не с кем прояснить проблему. Часто пользователи совершают ошибку, узнавая, что запрашивает проблема после нажатия кнопки компиляции, а не до.

Кто может их винить? Не очень простой способ понять вопрос, если вы не можете никого спросить, не увидев больше тестовых примеров.

Пограничное тестирование

Конечно, LeetCode сообщит вам, какие пограничные случаи вы упускаете, но никогда не скажет вам начинать с пограничных случаев в первую очередь. У некоторых пользователей есть дурная привычка сначала работать над алгоритмом, а затем тестировать тестовые примеры. Нет никого, кто бы навязывал вам пробный запуск вашего кода, поэтому вы сами находите крайние случаи.

Кнопка компиляции слишком заманчива.

Чистый код

Является ли ваш код читабельным и простым для понимания? Вы делитесь своими мыслями во время написания кода или просто пытаетесь написать то, что принесет вам отметку Принято на LeetCode?

Помните, что интервьюер должен оценить, насколько хорошо вы передаете свой мыслительный процесс. Онлайн-оценка предназначена для того, чтобы отфильтровать, кто может и не может программировать.

Работа с интервьюером

Если нет интервьюера, не у кого спросить подсказки, если вы застряли. Даже если пользователь застрянет на вопросе, будут ли они знать, какие вопросы задавать, и смогут ли они сообщить, где они застряли?

Слишком заманчиво идти прямо в LeetCode, обсуждать и реконструировать проблему, чтобы дать пользователю ложную уверенность в том, что он понимает проблему.

Заключительные мысли

Вам не нужно отвечать на +1000 вопросов по алгоритму, чтобы стать инженером-программистом. Я, конечно, не знал, как и никто другой, кого я встречал. После того, как вы освоите необходимые алгоритмы, дальнейшая практика будет не так полезна, как работа над тем, что действительно волнует интервьюеров. Так что подумайте дважды, есть ли другие вещи, на которые вы можете потратить свое время, помимо вопросов по программированию.

Если вам понравился этот опыт, подумайте о том, чтобы стать членом для получения большего количества подобного контента!

Пожалуйста, считайте подписку, чтобы первым получать электронные письма о моем опыте.

Хотите знать, как я попал в Google. Вот как прошло это собеседование



И следуйте за мной в моем стремлении набрать 30 000 подписчиков на LinkedIn
Алекс Нгуен | LinkedIn

Вот лучший ресурс по системному проектированию, который помог мне с моими интервью.