В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, concurrency, database.
Логирование позволяет отслеживать события в приложении и играет ключевую роль в его диагностике и мониторинге. Sentry — средство отслеживания ошибок, которое собирает stack trace, объединяет события по проблемам и…
Контекст: управление состоянием в Redux и аналогичных библиотеках dispatch выполняется синхронно, поэтому последовательность вызовов имеет значение чтобы выполнить действие последним, вызовите dispatch в конце цепочки…
Конкуренция транзакций, финансовые системы Организовать конкурентный контроль доступа к балансу Использовать атомарные операции либо транзакции с подходящим уровнем изоляции Доступны два подхода: оптимистичная…
Управлять окружением с помощью виртуальных сред (virtualenv, venv, conda) Использовать Docker-контейнеры, чтобы отделить системные и библиотечные зависимости Явно закреплять версии в файлах вроде requirements.txt,…
Как выполнить «инверсию» зависимости между микросервисами? Сервис A обращается к сервису B напрямую, поэтому между ними возникает жесткая связь — tight coupling Инверсия зависимости достигается за счет асинхронного…
Работа с системами контроля версий Git Git представляет собой распределённую систему контроля версий каждое изменение кода сохраняется как коммит и пополняет историю проекта отдельные задачи выполняются в ветках…
Exactly-once обработка в Kafka: как реализовать и что учесть Тема: обработка сообщений, Kafka, идемпотентность В основе exactly-once находится транзакционная запись в Kafka через Transaction API Применяется…
цель: исключить состояния гонки (race conditions) использовать синхронизацию: мьютексы и блокировки (locks) выбирать конкурентные коллекции (ConcurrentHashMap, ConcurrentQueue) по возможности применять атомарные…
Как объединить обновления состояния при нескольких вызовах setState? Изменение состояния в React с последующим обновлением UI setState работает асинхронно, поэтому обновления могут объединяться Для получения…
архитектурный подход к созданию распределённых систем приложение разделяется на самостоятельные сервисы каждый из них выполняет определённую бизнес-задачу сервисы обмениваются данными через строго определённые API…
Принцип замены Лисков во фронтенде (React) SOLID — фундаментальный принцип ООП, применимый и к компонентной архитектуре подмена подкласса или компонента не должна нарушать работу родительской логики компонент обязан…
Как обычно работают с legacy-системами? поддержка системы и поэтапный рефакторинг постепенная миграция на современные технологии документирование системы и изучение зависимостей тестирование, защищающее от регрессий…