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

Предыстория

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

Что делать?

Предположим, что знания и экспертиза у разраба есть. Остается освежить некоторые нейронные связи в мозгу. Разраб не подается в 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

--

--

--

Software developer, IT enthusiast and life researcher https://agrml.github.io/me/

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Mikhail Agranovskiy

Mikhail Agranovskiy

Software developer, IT enthusiast and life researcher https://agrml.github.io/me/

More from Medium

Netflix Stock Prices and Employee Compensation (2022)

Interview Experiences Series — TapClicks

Amazon Interviews and Projects

402. Remove K Digits