Сильный Middle и всего лишь 2 года опыта?? Такое вообще бывает? / Техсобес Middle Python Developer
Двухчасовое мок-собеседование Middle Python Developer с разбором архитектуры, Python/OOP, асинхронности и проектирования высоконагруженного сервиса лайков. В конце интервьюеры дают развёрнутый технический фидбек по ответам кандидата и подготовке к реальным интервью.
Это тестовое мок-собеседование на позицию Middle Python Developer: кандидат Артём рассказывает о двух годах опыта, текущем монолите на Python и затем отвечает на вопросы по архитектуре, ООП, асинхронности и базам данных. Интервьюеры подробно разбирают компромиссы Repository/ORM, Protocol и ABC, полиморфизм, DI, Clean Architecture и DDD, а также предлагают спроектировать высоконагруженный сервис лайков. В финальном фидбеке интервьюеры положительно оценивают базовое инженерное мышление кандидата, но советуют лучше обосновывать решения, укрепить терминологию и не заявлять в резюме навыки, которые пока изучаются поверхностно.
Кандидат описывает текущий проект как слоистый монолит: HTTP-ручки, сервисный слой, репозитории, база данных и брокеры сообщений для Telegram-ботов; ORM-модели преобразуются в DTO.
Интервьюеры подчёркивают, что Repository поверх ORM оправдан не «чистотой» сам по себе, а конкретными последствиями: зависимостью от интерфейса, заменяемостью хранилища и более изолированным тестированием; дополнительный слой также увеличивает код и стоимость поддержки.
Для моделирования предметной области наследование следует применять к отношениям обобщения, а не ради повторного использования методов; пример «автомобиль наследуется от колеса» требует композиции.
Protocol в Python даёт структурную типизацию и более слабую связанность, тогда как ABC принуждает к наследованию и удобнее навигируется IDE; выбор должен зависеть от необходимых гарантий и компромиссов.
Для IO-bound нагрузки кандидат использует async/await; интервьюеры поясняют преимущество event loop через мультиплексирование множества сокетов и меньшее число системных вызовов по сравнению с моделью «поток на соединение».
В задаче о лайках обсуждаются атомарный инкремент, eventual consistency, пакетная запись накопленных счётчиков, кэширование чтения, реплики, материализованные представления, оптимистические и пессимистические блокировки, шардирование и проблема горячего ключа («celebrity problem»).
Практическая рекомендация из фидбека: перед ответом на сложный вопрос брать паузу, формулировать аргументы через решаемые проблемы и trade-offs, а новые знания связывать с уже знакомыми темами и практикой.