Вернуться в каталог собеседований

Разработчик стал тим лидом в 22 года и борется с техническим долгом? / Техсобес Middle Python Dev

Разбор мок-собеседования Middle Python-разработчика с архитектурными вопросами и live-coding-задачей о конкурентных денежных переводах. В конце интервьюер даёт подробный субъективный фидбек по ответам и дизайну решения.

Python Mentor
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 1,7 тыс.
  • Лайки на YouTube: 42
Открыть на YouTube

Таймлайн

Коротко о видео

Это тестовое мок-собеседование на Middle Python Developer: кандидат рассказывает о текущем проекте, работе с техническим долгом и подходе к интервьюированию. Основная часть посвящена архитектуре сервисов, отказоустойчивости, Python-конкурентности, Linux, сетевым протоколам и оптимизации БД, затем кандидат решает live-coding-задачу о потокобезопасном переводе денег между аккаунтами. В финале интервьюер положительно оценивает ответы кандидата для уровня Middle/Middle+ и советует начинать дизайн с распределения ответственностей между сущностями, а не с немедленной реализации.

Затронутые темы

Что взять на заметку

  • Для разговора о техническом долге подготовьте не только определение, но и процесс: фиксировать отдельные проблемы в backlog, планировать их на технических встречах и превращать в конкретные задачи по рефакторингу.
  • Разделяйте сервисную и микросервисную архитектуру через автономность границ: отдельные бизнес-обязанности, независимые релизы и, где возможно, владение данными; общая БД между сервисами обсуждается как антипаттерн, а переход от монолита — через модульный монолит и Strangler pattern.
  • Повторите устойчивость сервисов: rate limiting для защиты от чрезмерного трафика, circuit breaker для временного прекращения запросов к деградировавшему сервису, а также метрики доступности вроде SLO/SLA.
  • Нужно уметь объяснить hexagonal architecture: бизнес-логика не зависит от инфраструктуры; порт — интерфейс, адаптер — его реализация, а Dependency Inversion и Dependency Injection помогают зависеть от абстракций.
  • При большой доле kernel space в Linux стоит искать интенсивный I/O и системные вызовы; в примере с разбором логов рассматриваются медленный диск, перекрытие чтения и парсинга, а также кэширование уже обработанных строк.
  • В задаче с денежными переводами важны Decimal вместо float, атомарность операции, защита от race condition, разнесение доменной сущности Account и механизма синхронизации, а также отдельные однопоточный и многопоточный функциональные тесты.
  • Для роста нагрузки повторите вертикальное и горизонтальное масштабирование, шардирование против репликации, CQRS для разделения чтения и записи, кэширование и различие B-tree- и hash-индексов.

Рекомендуем посмотреть