SberMarket / СберМаркет (Купер) - 1
Вопросы
Заголовок раздела «Вопросы»- Что такое индексы в базах данных? Какие типы индексов существуют и их особенности? Что такое B-Tree и в чем заключается его сбалансированность? Для каких операций какой тип индекса лучше применять?
network/balancing - Что такое профилирование запросов? Чем отличаются
ANALYZEиEXPLAIN ANALYZE? Как по выводуEXPLAINпонять, выполняется ли запрос быстро или медленно? Какие «красные флаги» в выводеEXPLAINуказывают на проблемы?sql/query-optimization - Что такое транзакции? Что означает аббревиатура ACID? Какие уровни изоляции транзакций существуют и какие проблемы они решают?
sql/transactions - Что такое оптимистичные и пессимистичные блокировки? В каких сценариях лучше применять оптимистичные блокировки?
sql/transactions - Как организовать работу трех сервисов с одной базой данных без конфликтов? Какие стратегии и паттерны для этого существуют?
architecture/microservices - Что вы можете рассказать про шардирование, репликацию и партиционирование? В чем их различия и когда что применять?
sql/schema-design - Расскажите про Apache Kafka: producer, consumer, partition, consumer group, offset. Что такое партиции и для чего они нужны? Можно ли уменьшить или увеличить количество партиций? Какие виды гарантий доставки сообщений существуют? Что такое Dead Letter Queue?
sql/schema-design - Если consumer упал до того, как сообщение было обработано, как гарантировать повторную обработку этого сообщения? Как Kafka в этом случае управляет offset?
brokers/kafka - Что такое consumer lag в Kafka? Чем он опасен и как его мониторить?
brokers/kafka - Какие паттерны микросервисной архитектуры вы знаете? Можете привести примеры?
architecture/microservices - Расскажите про типы JOIN в SQL:
LEFT JOIN,INNER JOIN,RIGHT JOIN,FULL JOIN. В чем их различия и когда какой использовать?sql/query-optimization - Для чего нужна команда
VACUUMв PostgreSQL? Чистит ли она индексы? Что делаетVACUUM FULL?sql/indexes - Что можно изменить в
.proto-файле gRPC, чтобы не сломать обратную совместимость с существующими клиентами? Какие изменения безопасны, а какие - нет?network/grpc - Какой у вас опыт работы с Kubernetes? Какие операции вы выполняли?
containers/kubernetes - Какие инструменты для observability вы использовали? Какой стек?
go/memory-gc - Как вы выставляли лимиты и пороги для метрик? Как настраивали алерты на основе этих лимитов?
devops/observability - Как вы профилировали Go-программы? Какие инструменты использовали? Какие виды профилирования?
go/perf-profiling - Писали ли вы тесты? Какие именно? Какое целевое покрытие тестами было на вашем проекте? Как измеряли покрытие?
testing/unit-mocks
Задача: Необходимо написать in-memory кэш, который будет по ключу (uuid пользователя) возвращать профиль и список его заказов: go/memory-gc
Заголовок раздела «Задача: Необходимо написать in-memory кэш, который будет по ключу (uuid пользователя) возвращать профиль и список его заказов: go/memory-gc»- У кэша должен быть TTL (2 сек);
- Кэшем может пользоваться функция(-и), которая работает с заказами (добавляет/обновляет/удаляет). Если TTL истек, то возвращается nil. При апдейте TTL снова устанавливается 2 сек. Методы должны быть потокобезопасными;
- Должны быть написаны тестовые сценарии использования данного кэша.
// (базовые структуры не менять)type Profile struct { UUID string Name string Orders []*Orders}
type Order struct { UUID string Value any CreatedAt time.Time UpdatedAt time.Time}Доп задание: автоматическая очистка истекших записей