Первичный скрининг python developer Содержание раздела Содержание раздела Основная информация История изменений документа Ключевые критерии отбора Хард скилы Софт скилы Идеальный кандидат Вопросы для скрининга Основная информация Сергей Иванов Автор Связанные документы Статус В РАБОТЕ История изменений документа Версия Дата 1.0 Автор 25.09.2023 Сергей Иванов Описание изменений Первый заход на скрининг Ключевые критерии отбора Хард скилы Python, Asyncio (асинхронное программирование). Опыт 2-3 года и более FastApi, Pydantic (2 версии будет плюсом) Postgresql, sqlalchemy, alembic Опциональные, будут плюсом: Manticoresearch (Поисковой движок) Grafana, Loki, prometheus (Метрики и логи) k8s Брокеры очередей (Кафка, rabbitmq) redis Софт скилы Не токсичный, Резюме формата "Меньше N идите лесом" - сразу нет Общительный, умеет работать с людьми Не меняет работу каждые 6 месяцев. Идеально - 2-4 года на предыдущих местах. Либо адекватная причина ухода из кампании Хорошо оформленное резюме, с областью ответственности, технологиями. То, что он принес команде и кампании (в целом понимание бизнес требований кампании) Видно, куда человек двигается, что его интересует, что хочет от работы (Будет плюсом) Публичный человек? Участвовал ли в опен сорсе? (Будет плюсом) Интересуется технологиями, хочет развиваться и учиться новому. Идеальный кандидат Адекватный, общительный, ответственный разработчик, работающий в кампаниях не менее года, с нужным нам стеком. Для него кодинг это не просто работа за деньги, и часть жизни, которая ему нравится. Идеальный бекграуд это работа с парсингом данных, написание микросервисов на fastapi + sqlalchemy, умение в анализ запросов к БД, их оптимизацию. Сложные проекты, которыми кандидат может гордиться. Медийность и участие в open source будет плюсом Вопросы для скрининга Вопрос Ответ Примерное время на ответ Количество балов Работал ли с микросервисной архитектурой? Какие преимущества и недостатки она имеет перед монолитом? Встречался ли с микросервисным монолитом? Если работал, то хорошо. 2-3 минуты 2 Преимущества: Каждый сервис обособленный, если упал один, работают остальные. Лучшая изоляция ошибок Легко разрабатывать. Все сервисы небольшие и легки в обслуживании. Ускоряет разработку и доставку кода Микросервис может быть написан на любом ЯП Легко масштабировать Слабая связанность между сервисами Недостатки Нет хорошо описанного алгоритма разбиения продукта на микросервисы, это как искусство (= Сложность с межсервисным взаимодействием, особенно если нужны транзакции Нужна хорошая и подготовленная инфрастуктура, которую сложнее спроектировать Более высокий порог входа Микросервисный монолит, это когда у вас вроде как микросервисы, но они настолько сильно связаны друг с другом, что могут упасть каскадом. Так же если при изменении одного сервиса, требуется поменять еще несколько. Нужно любым путем его избегать Какие индексы в Postgresql знаешь? B-дерево (b-tree), хеш, GiST, SP-GiST, GIN и BRIN 1 минута 2 В каких случаях лучше использовать b-tree индекс Сортируемые поля, Число (int), дата (timestamp), число с плавающей точкой (float) 30 секунд 2 Какой индекс хорош для полнотекстового поиска? GiST и GIN 30 секунд 2 2 минуты по 2 бала на каждый ответ в сумме 6 Постраничная пагинация это выборка с limit + offset. Проблема в возрастающей сложности при каждой следующей странице 1 минута 2 Если у нас есть таблица с 2мя индексами по полям post_id и source_id, при фильтрации используются оба, например where post_id > 123 and source_id = 35. Будет ли оптимизатор PG использовать оба индекса, если по source_id = 35 вернулось 5% от суммарной выборки таблицы? Нет, оптимизатор посчитает, что seq scan (последовательное сравнение) будет быстрее, чем использование большого индекса 1 минута 3 Знаешь что такое PEP8? Как PEP8 рекомендует называть классы, исключения и переменные ? PEP8 - соглашение по написанию кода в питон. Классы именуются с большой буквы, исключения как и классы но должны включать в себя Error, переменные - snake_case в зависимости от области видимости могут включать нижние подчеркивания 2 минуты 2 Работал ли с брокерами сообщений и с кафкой в частности? Чем принципиально выделяется кафка из остальных брокеров ? Если работал, уже хорошо. Кафка позволяет переобходить топик другим консюмером. Так же для каждой группы консюмера отдельный оффсет. В чем отличие GiST от GIN индекса в рамках полнотекстового поиска Знаешь ли что такое page base pagination? (постраничная пагинация) В чем ее проблемы на больших данных? GIN в 3 раза быстрее GIST GIN в 3 раза медленнее строится, чем GIST GIST индекс является индексом с потерями, т. е. postgresql автоматически проверяет строку в таблице. Поэтому данный индекс дольше отрабатывает Работал ли со стеком Grafana + prometeus + loki ? Писал ли собственные метрики для прометеуса? Если работал то уже хорошо 1 минута 1 Работал ли с сагами? Или с шаблоном "Порождение событий"? Просто узнать 1 минута 0 В проект нужно затянуть новую библиотеку, решающую определенную задачу, как будешь выбирать ? В целом можно послушать рассуждения. Правильный ход мыслей: 2 минуты 2 Посмотреть количество звезд на гихабе Посмотреть количество ишью, оценить забагованность Посмотреть лицензию, можно ли изменять библиотеку в коммерческих целях Оценить качество документации Сделать конкурентный вывод Локально протестировать, ложится ли библиотека в текущий проект Примерный флоу скрининга Представится О UGCMS О команде