Sobes.tech

// TODO backends []*BackendImpl index int mu sync.Mutex func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { b.mu.Lock() index := b.index if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) b.mu.Lock() defer b.mu.Unlock() b.index += 1 return resp, err } // addr содержит ip:port конкретного экземпляра func NewBackend(addr string) *BackendImpl // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }

Middle
Яндекс
7

Расскажите весь флоу по данным и по товару — как происходит поставка на склад, как данные проходят по системам?

Senior
МВидеоМВидео
7

Как шарить память между горутинами? В каких случаях лучше использовать Atomic, а в каких Mutex/RWMutex/SyncMap?

Senior
plata
7

Можешь привести пример автономной работы — какое максимальное время ты работал над одной задачей или проблемой?

Senior
AvitoAvito
7

Что такое принцип Durability в ACID? За счёт чего он достигается в PostgreSQL?

Senior
Lenta Tech
7

Что такое индексация в реляционных БД?

Middle
VKVK
7

Какая у тебя роль и профессиональная самооценка — middle plus или senior?

Senior
X5
7

Когда протухнет refresh token, который живёт в cookie, — что происходит с пользователем?

Senior
X5 techX5 tech
7

// При обновлении заказа, мы должны отправить данные по заказу в несколько сервисов (сторонние API) // количество сервисов растёт (может быть тысяч+) // мы написали код, сначала все было хорошо, но со временем наш сервис начал потреблять много памяти func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Представим, что это долгий сетевой вызов response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "failed to send", err) return } s.logger.Info(ctx, "success", response) }() } }

Middle+
Lenta Tech
7

Задача на PostgreSQL: несколько воркеров читают задачи из таблицы и генерируют промокоды. Как избежать дублирования работы?

Senior
Магнит Тех
7

Есть ли ограничения по срокам поиска работы или финальные офферы от других компаний?

Senior
X5
7

Как ты работаешь? Используешь ли какие-то фреймворки или инструменты?

Senior
НООСФЕРА
7

Что такое дженерики в Go? Как ограничить набор типов (constraints)?

Middle+
YadroYadro
7

Почему выбрали шардирование по account_id? Ради чего вообще шардировали?

Senior
РамблерРамблер
7

Создаётся ли на каждую горутину новый поток в операционной системе?

Senior
ВкусВиллВкусВилл
7

Почему вы сейчас думаете о смене работы?

Middle
Graveling
7

Как переопределить способ преобразования поля структуры в JSON?

Senior
SberAuto
7

Объясните разницу между контейнеризацией и виртуализацией

Senior
СБЕРСБЕР
7

Чем HAVING отличается от WHERE?

Senior
Cloud.ru
7

Кто ещё входил в команду помимо тебя и тимлида?

Middle+
Яндекс вертикали
7
/371