Что такое slice? Как он устроен внутри?
Как ускорить медленный API endpoint — какие подходы есть?
Сколько микросервисов было в кластере и сколько можешь удерживать в голове?
Какова причина твоего ухода из предыдущей компании?
Использовали ли вы подходы для распределённых транзакций?
Почему в зону ответственности кандидата был добавлен сервис антифрод-проверок?
Может ли быть однонодовый кластер Kubernetes?
Исправьте реализацию cleanup, используя обычный цикл for вместо range. Объясните финальную логику очистки.
Расскажи о своей сторонней занятости. Есть ли что-то, что будет отвлекать тебя от полного погружения в работу?
Что такое Two-Phase Commit?
Реализуйте функцию cleanup для периодической очистки устаревших данных из bucket'ов. Как организовать фоновую горутину?
Расскажи про репликацию в PostgreSQL: виды, синхронная vs асинхронная.
Чем отличается шардирование от партиционирования?
Какие правила (аксиомы) работы с каналами существуют в Go?
/ * Есть приложение с микросервисной архитектурой. Микросервис можно абстрагировать с помощью интерфейса Backend. Для доступа к одному экземпляру микросервиса можно использовать тип BackendImpl, который уже реализован. Для каждого микросервиса есть несколько десятков запущенных экземпляров, каждый из которых доступен по своему адресу addr. Однако отдельные экземпляры микросервиса ненадежны: они могут падать, быть недоступными либо перегруженными. Поэтому вам нужно реализовать тип Balancer, который также реализует интерфейс Backend и осуществляет client-side балансировку нагрузки между экземплярами микросервиса, выбирая каждый раз **наименее нагруженный** экземпляр. * / type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr содержит ip:port конкретного экземпляра func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO } var _ Backend = &Balancer{} // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { // TODO }
Как оптимизировать транзакцию с блокировкой строки при высокой нагрузке (проблема бутылочного горлышка при регистрации по инвайт-коду)?
Что такое garbage collector в Go?
Было ли критично что данные в кэше могут быть неактуальны?
Что такое slice и чем отличается от массива?
Предложите индекс для таблицы users с полями gender и age, если нужно выбирать пользователей по полу или возрасту