В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, concurrency, database.
Хранилища для больших данных: LocalStorage и IndexedDB обе технологии представляют собой браузерные хранилища данных LocalStorage: синхронное хранилище с лимитом около 5 МБ, форматом ключ-значение и простым API…
Допустимо ли использовать объект с изменяемыми полями в роли ключа HashMap? Контекст: коллекции, HashMap в Java и аналогичные структуры В течение всего времени хранения в мапе ключ должен сохранять неизменные hashCode…
Hashtable — синхронизированная реализация словаря Для всего объекта применяются coarse-grained блокировки При конкурентном доступе производительность снижается Его заменил ConcurrentHashMap с более эффективным…
архитектура: система из независимых сервисов масштабируемость: каждый компонент можно масштабировать отдельно развертывание: автономные обновления без остановки всей системы гибкость: в одном приложении можно…
теорема CAP — основа теории распределённых систем три свойства: Consistency (согласованность данных), Availability (доступность) и Partition tolerance (устойчивость к разделению сети) сетевые разделения (Partition) в…
работал с основными инструментами CI/CD: Jenkins, GitLab CI, GitHub Actions Jenkins: гибкое решение с развитой системой плагинов, подходящее для сложных пайплайнов GitLab CI: тесно связан с репозиториями и удобен для…
Основные проблемы микрофронтенд-архитектуры Управление версиями: необходимо согласовывать зависимости и версии библиотек между несколькими микрофронтендами Интеграция UI: трудно поддерживать единый визуальный стиль,…
Инфраструктура: развёртывание, настройка и сопровождение кластеров Kafka Конфигурация: подбор и оптимизация параметров продюсера и консьюмера для достижения нужной производительности Гарантии доставки: реализация…
Система обрабатывает нагрузку, в десять раз превышающую расчетную: возможные последствия Превышение TPS означает, что система способна выполнять 1000 транзакций в секунду при установленном проектном ограничении в 100…
Future и CompletableFuture: отличия Future — основной интерфейс для представления асинхронного результата в Java Concurrency. С его помощью можно получить итог операции или отменить её выполнение. При этом для…
Сравнение gRPC: bidirectional stream и unary RPC unary RPC — один запрос и один ответ bidirectional stream — обмен сообщениями в двух направлениях при использовании bidirectional stream клиент и сервер одновременно…
Разница между runtime.Goexit() и os.Exit() и случаи применения runtime.Goexit(): прекращает работу текущей goroutine, не затрагивая остальные os.Exit(): сразу завершает весь процесс, не выполняя defer Goexit()…