Резюме: Python разработчик
О СЕБЕ
Backend-разработчик на Python с опытом разработки API на FastAPI и Flask, включая
асинхронные сервисы. Пишу чистый и поддерживаемый код, понимаю основы сетевого
взаимодействия (DNS, TCP/IP, HTTP/HTTPS).
Работаю с Linux-окружением, использую Bash для автоматизации и отладки. Уверенно работаю с
Git (ветки, pull request, разрешение конфликтов). Использую Docker для локальной разработки и
изоляции окружений.
Пишу SQL-запросы без ORM и понимаю принципы их выполнения. Использую Pydantic для
валидации данных, pytest для тестирования, знакома с CI/CD.
Ориентирована на качество кода, развитие продукта и долгосрочную работу в команде.
ОПЫТ РАБОТЫ
Backend-разработчик, 10.2023 - по н.в.
Проектная занятость (фриланс и pet-проекты)
ЗАДАЧИ
• Разработка API, работа с очередями задач и БД (SQLite, PostgreSQL). Интеграция с внешними API.
• Проектирование и реализация REST API.
• Покрытие кода тестами, поддержка и доработка внедрённых решений.
• Оптимизация и рефакторинг существующего кода.
РЕЗУЛЬТАТЫ РАБОТЫ
Telegram-бот с FSM
• Стек: Python 3, pyTelegramBotAPI (TeleBot), FSM (Finite State Machine), SQLite, pycountry, logging.
• Спроектировала и реализовала бота с использованием конечного автомата (FSM) для управления многоэтапным
сценарием опроса. Бот обрабатывает текстовые сообщения, контакты и callback-запросы
от inline-кнопок, обеспечивая гибкость ввода и устойчивость к пропуску шагов.
• Организовала пошаговый сбор данных (имя, возраст, страна, город, телефон) с изоляцией логики для
•каждого этапа, что исключает смешивание состояний разных пользователей и упрощает поддержку кода.
• Интегрировала библиотеку pycountry для валидации и нормализации ввода стран, реализовала
динамическую подгрузку списка городов из БД SQLite в виде инлайн-кнопок, что улучшило UX и минимизировало
ошибки ручного ввода.
• Реализовала механизм пропуска необязательных шагов (например, номера телефона) с помощью
reply-клавиатуры, не ломая общий flow диалога.
• Настроила детальное логирование пользовательских действий и системных событий для упрощения
отладки и анализа поведения пользователей.
• Roadmap проекта (следующие этапы):
- внедрение Pydantic для строгой проверки входящих данных (возраст, имя) на стороне сервера;
- миграция с SQLite на PostgreSQL для хранения результатов опросов и отработки работы с СУБД;
- контейнеризация приложения с помощью Docker и настройка CI/CD (GitHub Actions) для автоматизациитестирования и деплоя;
Высокопроизводительный веб-сервис для поиска по иерархическим данным (FastAPI)
• Стек: Python 3, FastAPI, Uvicorn, pytest, collections.defaultdict, асинхронные обработчики.
• Спроектировала и реализовала RESTful API на FastAPI для поиска данных в древовидной структуре. Сервис
принимает файл с данными и обрабатывает поисковые запросы по локациям с учетом их вложенности
(поиск по родительским и дочерним элементам).
• Выбрала и реализовала структуру данных на основе defaultdict для хранения связей «локация -> список
площадок», что обеспечивает скорость поиска, близкую к O(1). Реализовала два режима поиска (up, down) с
обходом иерархии путей.
• Разделила бизнес-логику (класс AdService) и слой API (FastAPI роутеры), что упрощает тестирование и
поддержку.
• Реализовала асинхронные эндпоинты для обработки файлов и запросов, чтобы не блокировать сервер на
операциях I/O.
• Полностью покрыла код юнит- и интеграционными тестами (pytest), включая тесты на корректность загрузки
данных, оба режима поиска и обработку крайних случаев.
• Настроила автоматическую генерацию интерактивной документации API через Swagger UI (/docs).
• Roadmap проекта (следующие этапы):
- внедрение Redis для кэширования результатов частых запросов и снижения нагрузки;
- миграция с хранения данных в памяти на PostgreSQL с использованием ltree-модуля или других подходов для
эффективной работы с иерархиями;
- добавление Pydantic для валидации, пагинации ответов API, а также контейнеризация (Docker) и настройка
CI/CD для автоматического тестирования и деплоя;
Рефакторинг кода (учебное задание)
• Стек: Python 3, рефакторинг, работа со структурами данных (списки, словари), обработка исключений.
• Провела разбор и переработку функции на Python, предназначенной для фильтрации входного списка
разноплановых данных и преобразования подходящих элементов в единый формат словарей:
- вникла в проблему исходного кода, некорректно обрабатывалющего типы данных;
- формализовала требования: оставить словари, преобразовать строки и числа в вид {element: element};
• Осознанно отказалась от использования рекурсии. Реализовала решение с использованием итерации по списку и
проверки типов с помощью isinstance().
• Разделила логику на две функции: create_dict() для обработки одного элемента и data_preparation() для обработки
всего списка. Это повысило читаемость, тестируемость и позволило избежать дублирования кода.
Моделирование системы на основе ООП (учебное задание)
• Стек: Python 3, ООП (инкапсуляция, композиция), классы, методы;
• Разработала объектно-ориентированную модель сельскохозяйственной системы для симуляции роста растений с
целью отработки и демонстрации ключевых принципов ООП на Python.
• Разделила ответственность между классами:
- класс Potato инкапсулирует состояние (стадия зрелости) и поведение (рост) одного объекта;
- класс PotatoGarden управляет коллекцией объектов Potato и реализует операцию роста для всех объектов сразу
(демонстрация композиции);
• Реализовала логику роста и проверки зрелости в виде методов, а не внешних функций.
• Использовала словарь для описания стадий зрелости, что упрощает изменение и добавление новых стадий.
• Продемонстрировала, как объекты разных классов взаимодействуют друг с другом: PotatoGarden вызывает метод
grow() у каждого объекта Potato в своем списке.
ПРИЧИНА ПОИСКА РАБОТЫ
Стремление продолжить развитие и перейти на полную занятость в качестве Python-разработчика.