themes for middle
Собеседования
источники:
Собеседование Python. Разбор вопросов
Почти Senior или ...? / Техсобес на позицию Middle Python Developer / Mock interview
ключи: #hr #middle
Ключи: #3d, #bash, #css, #english, #git, #html, #js, #mail, #mysql, #postgresql, #python, #scss, #sql, #tool
только важные выдержки
themes_for_middle
Тезисы
темы для изучения
брокер сообщений kafka доставка кода Ansible
мониторинг
зависит от того, как задеплоил
если в кубернитосе, промисиус и графана
и плюс нот экспортер
если эксибл на берметал сервера, зэбикс агенты и забик сервер для мониторинга
если в клауд, клаудные системы мониторинга
если в амазон (ес2 виртуалка, лямбды и т.д., кластер кубернитес)
амазоновский clowd wotch, и другие сервисы клауда
9 лучших программ для мониторинга вашего веб-приложения (автономные и облачное)
балансировщик
липкие сессии
базы
уровни изоляции транзакций
транзакции в алхимии
serialisable
reeduncomitted грязное чтение
не согласованное состояние inconsisted state
relateddb
postgresql
mysql
nosql
redis
mongodb
QA
пирамида тестирования
нагрузочное end to end
функциональные тест функционала изолировано, вне процессных сущностей
интеграционные корректность интеграции внешних модулей, баз, апи
модульное unit
базы данных -- вне процессные сущности
архитектура
мартин фаулер
крис ричардсон -- микросервисы, патерны разработки и проектирования, рефакторинг
много поточность, мульти процессность, асинхронность
не паралелизм: конкурентность.
многопроцессность -- если ядра позволяют
итераторы, генераторы
орм сонтракт
пайдентик
сериализация, валидация
паттерн
конечный автомат
ООП
инкапсуляция
наследование
полиморфизм
банда четырёх
нормальные формы
не нормальная, 1 2 3
нормальной форме Бойса-Кодда
4 5
доменно ключевая
6
в процессе нормализации базы данных
Вы должны руководствоваться здравым смыслом
абстракция
мониторинг
безопастность
оптимизация
чистый код
контекстный менеджер
with
import time
class Timer:
def __enter__(self):
self.start_time = time.time()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
elapsed_time = time.time() - self.start_time
print(f"Elapsed time: {elapsed_time} seconds")
# Пример использования контекстного менеджера
with Timer() as timer:
# Ваш блок кода
time.sleep(2)
асинхронный контекстный менеджер
import asyncio
class AsyncTimer:
def __enter__(self):
self.start_time = asyncio.get_event_loop().time()
return self
def __aexit__(self, exc_type, exc_val, exc_tb):
elapsed_time = asyncio.get_event_loop().time() - self.start_time
print(f"Elapsed time: {elapsed_time} seconds")
# Пример использования асинхронного контекстного менеджера
async def example():
async with AsyncTimer() as timer:
# Ваш асинхронный блок кода
await asyncio.sleep(2)
# Запуск асинхронной функции
asyncio.run(example())
Перед собесом, ответь себе на следующие вопросы:
Зачем ты пришёл на собес в эту компанию?
Правда хочешь у них работать? Почему?
Как скоро ты хочешь уйти от них?
А почему ты ушёл с прошлого места работы?
После каждого вопроса, нужно знать:
Зачем задали этот вопрос, какой ответ ожидают?
Если задали, значит нужен.
SOLID
definition:
- Single responsibility principle
- Open-closed prinsiple
- Liskov substitution principle
- Inerface segregation principle
- Dependency inversion principle
.
- Single responsibility principle
-
- Single responsibility principle
fdfdf
gfgdfgdf
- Single responsibility principle
- Open-closed prinsiple
-
- Open-closed prinsiple
- Liskov substitution principle
-
- Liskov substitution principle
- Inerface segregation principle
-
- Inerface segregation principle
- Dependency inversion principle
-
- Dependency inversion principle
Стек для изучения
- Python3, asyncio
- aiohttp, litestar в качестве основного фреймворка
- Очереди на Redis, Tarantool, Kafka
- Для деплоя kubernetes Kubernetes
- Понимание алгоритмов и структур данных: считаем этот скилл важен особенно при проектировании;
- Опыт декомпозиции и оценки задач;
- Опыт участия в процессах деплоя (понимание, как настроен CI\CD и возможность дорабатывать его при необходимости
---.
- PostgreSQL, Redis, ElasticSearch
- Контроль качества кода с помощью MyPy и flake8
- Pytest
- Система контроля версий git (внутренний сервер GitLab)
- Баг-трекер YouTrack
- CI/CD с помощью TeamCity, а также с применением Docker и Ansible
--- ?
- Знание Node.js (Nest.js);
- Для хранения данных: MongoDB, Redis, PostgreSQL;
- Брокеры сообщений: sqs;
- Для мониторинга: Grafana;
- Рабочие инструменты: Docker, Gitlab, Jira/Confluence.
----+
Требования:
- Опыт работы от 3 лет в роли Fullstack-разработчика.
- Отличное знание Python и одного из фреймворков (Django, FastAPI, Flask).
- Уверенное владение React, TypeScript, Redux, Zustand или MobX.
- Опыт работы с PostgreSQL, MySQL, Redis (проектирование, оптимизация запросов).
- Знание принципов REST API, WebSockets, GraphQL, аутентификации (JWT, OAuth2).
- Навыки работы с Docker, CI/CD (GitHub Actions, GitLab CI).
- Понимание SOLID, DRY, KISS, Clean Architecture.
- Опыт написания тестов (pytest, Jest) и работы с инструментами профилирования.
- Владение Git, опыт работы в команде с Agile/Scrum.
Будет плюсом:
- Опыт работы с микросервисной архитектурой.
- Навыки DevOps: Kubernetes, Terraform, Ansible.
- Опыт работы с WebRTC, PWA, SSR, Next.js.
- Понимание принципов SEO и веб-оптимизации.
Технологический стек:
- Pyramid, Celery, aiohttp, pytest
- RabbitMQ
- MongoDB (sharded cluster), PostgreSQL
- AWS S3
- Docker, Docker-compose
- Slack, Jira, Gitlab, Jenkins
Требования:
- Опыт работы на позиции Backend-разработчика на Python от 3х лет;
- Отличные знания Python и Django;
- Понимание принципов асинхронного взаимодействия;
- Уверенное знание PosgtreSQL;
- Опыт написания тестов на pytest;
- Понимание SOLID и паттернов проектирования;
- Опыт работы с docker;
- Знание DevOps-практик, понимание работы CI/CD инструментов.
Будет преимуществом:
- Опыт применения FastAPI;
- Опыт работы с kubernetes, ansible, helm;
- Опыт работы с Celery;
- Опыт работы с Kafka/RabbitMQ;
- Опыт работы с ClickHouse, Redis;