Подборка объединяет вопросы, отмеченные на этапах интервью в Bip.ru. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: backend, memory management, async.
Зачем нужны GetHashCode и Equals и какова их роль в Dictionary<TKey, TValue> Контекст: переопределение методов в .NET для хеширования объектов и определения их равенства GetHashCode формирует для объекта целочисленный…
Как исключить повторную отправку отложенных писем при горизонтальном масштабировании? область: распределённые системы, messaging ключевая проблема: конкуренция при отправке между несколькими инстансами решение 1 —…
Как мониторить нагрузку на сервис для своевременного масштабирования? мониторинг CPU, памяти, сети и диска показывает базовый уровень нагрузки время отклика и throughput позволяют оценить производительность сервиса…
RabbitMQ — брокер сообщений, поддерживающий подтверждения (ACK) Настроить у потребителя ручные подтверждения (manual ACK) Если потребитель завершился до отправки ACK, сообщение сохраняется в очереди и передается…
Область: отказоустойчивость, устойчивость системы и интеграция email Организовать циклические попытки с заранее установленным максимальным числом повторов Использовать экспоненциальный бэкофф, постепенно увеличивая…
Архитектура: асинхронная очередь задач Выделить отдельный сервис рассылки, обрабатываемый воркерами (workers) Помещать задания в распределённую очередь сообщений — RabbitMQ, Kafka или Redis Streams Передавать в каждой…
Основные проблемы финализатора (деструктора) момент вызова непредсказуем, поскольку его определяет GC длительное выполнение финализатора способно задержать сборку мусора при работе с другими ресурсами возможны дедлоки…
** Чтобы предотвратить конфликты при параллельной обработке в PostgreSQL, используют уровень Serializable. Он обеспечивает полную изоляцию и целостность данных, а возникающие конфликты обрабатываются посредством…
Области применения: распределённые системы и обработка сообщений При at-least-once delivery сообщение гарантированно доставляется как минимум один раз. При сбоях и повторных попытках доставки могут появляться…
Метод Dispose предназначен для освобождения управляемых и неуправляемых ресурсов, включая файлы, соединения и память Если Dispose не вызвать, ресурсы могут освобождаться с задержкой или не освобождаться вообще, что…
Интерфейс IDisposable: назначение и применение интерфейс IDisposable из .NET (System) его основное предназначение — управление ресурсами он определяет метод Dispose(), предназначенный для освобождения неуправляемых…
Что такое Outbox Pattern и как он обеспечивает надежную доставку сообщений? интеграционный паттерн для надежного асинхронного взаимодействия сохраняет изменения в локальной таблице outbox одновременно с бизнес-данными…