В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, concurrency, database.
Масштабирование: сравнение on-premise и облака область: инфраструктура, DevOps облако — динамическое масштабирование on-premise — необходимо физическое оборудование облако поддерживает автоматизацию и предоставляет…
базовый API Redux, предназначенный для отправки действий (actions) передаёт action в редьюсер, который рассчитывает новое состояние запускает изменения состояния посредством action objects поддерживает…
В Event Loop микротаски имеют более высокий приоритет MutationObserver отслеживает изменения DOM Коллбэки выполняются после завершения текущего макротаска Отложенное, но быстрое уведомление об изменениях…
Основой HTTP/3 служит протокол QUIC QUIC работает поверх UDP, а не TCP UDP помогает добиться низкой задержки, поскольку для него не требуется устанавливать соединение Контроль потока и исправление ошибок QUIC…
Зачем разработчику нужны юнит-тесты? автоматическая проверка корректности программного кода обнаружение ошибок на ранних этапах разработки фиксация поведения функций и модулей в качестве документации более безопасный…
DDD и гексагональная архитектура DDD (Domain-Driven Design) — метод разработки, в основе которого лежит глубокое понимание предметной области Важный принцип DDD — выделить ядро домена, содержащее бизнес-логику, и…
Как Jest устроен внутри и чем jsdom отличается от браузера Jest — JavaScript-тест-раннер, поддерживающий моки и изолированный запуск тестов Для проверки DOM он применяет jsdom — эмулятор браузерной среды, работающий в…
Различия Kafka и RabbitMQ в гарантированной доставке сообщений Kafka представляет собой распределённый commit log, в котором сообщения хранятся постоянно Данные попадают в топики, разделённые на partitions, благодаря…
Как Redis выполняет INCR и за счёт чего операция остаётся атомарной? Команды в Redis обрабатываются однопоточным Event Loop INCR увеличивает значение заданного ключа на единицу Вся операция выполняется как одна…
Как в Go обрабатываются ошибки и паники? ошибка представляется как значение через интерфейс error после вызова функции выполняется явная проверка (if err != nil) паника возникает при критических ошибках, например при…
Как в Go реализовать worker pool с ограниченным concurrency? concurrency определяет число одновременно работающих goroutine Для ограничения создают буферизированный канал размером с concurrency Перед запуском worker в…
подход к управлению распределёнными транзакциями крупная транзакция представляется последовательностью локальных операций в отдельных сервисах для каждой операции предусматривается компенсирующее действие, позволяющее…