Coding interview на Python-разработчика в РФ: чек-лист подготовки

Mikhail Agranovskiy
3 min readMar 4, 2022

Предыстория

  • Есть разраб. Он когда-то отсобеседовался и устроился в энтерпрайз.
  • Мозг разраба переобучился на проблемах энтерпрайза.
  • Разраб заскучал и хочет устроиться в другой энтерпрайз.
  • На собеседованиях нужно писать вычислительные алгоритмы и считать их сложность.
  • Решать задачки нужно быстро. Но прошлые несколько лет на работе разраб писал только бизнес-логику.

Что делать?

Предположим, что знания и экспертиза у разраба есть. Остается освежить некоторые нейронные связи в мозгу. Разраб не подается в FAANG и не стремится гарантированно пройти любое интервью. Цель разраба — успешно пройти большинство интервью и получить оффер от одной из нескольких интересных компаний. Тогда применяется правило Парето: вспоминаются основные алгоритмы и структуры данных и прорешивается несколько задачек, чтобы заранее войти в стиль мысли.

Чек-лист к coding interview

Язык программирования: Python.
Ожидаемая сложность интервью: средняя.

  • Помни коробочные типы данных: deque(двусвязный список), dict, set, counter, priority queue.
  • Задача не решается. А давайте притянем за уши dict, set или явное вычисление hash. Куда их можно вставить? Бесплатный доступ, бесплатная гарантия уникальности значений или бесплатное сравнение могут изменить подход к решению задачи.
  • Применяй генераторы, чтобы не тратить память на хранение и отдавать элементы в порядке вычисления. Помни про yield from.
  • Создай вспомогательную структуру данных, наполни ее и работай с ней.
  • Можно писать любые функции, любые классы и вызвать их из предложенной сигнатуры.
  • Найти значение в списке можно быстрее, чем за линию. Если список отсортирован. Бинарный поиск ищет значение в отсортированном списке за log(n).
  • Если собес в “обычную компанию”: вспомнить как писать декораторы, контекст-менеджеры, генераторы и итераторы; вспомнить внутреннее устройство dict.

Я следую этому принципу и устраивался так и на Junior, и на Middle, и на начального уровня Senior позиции в московские компании.

Сейчас я собеседуюсь на Middle/Senior позиции в Израиле и Европе, требования выше. Для подготовки к сложным интервью и интервью, сфокусированных на алгоритмах, рекомендую курс от educative.io. Он систематично разбивает алгоритмические задачи на классы и доносит идеи подходов к их решению.

За пределами этой заметки

  • Знания по web
  • Знания по особенностям языка программирования и фреймворкам
  • Знания по базам данных и очередям
  • Знания по проектированию архитектуры
  • Знания по тестированию и прочие скилы процесса разработки
  • Знания по деплою, масштабированию, SRE и прочие скилы по поддержанию жизнидеятельности продакшена

Материалы

https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt

--

--