Sobes.tech

Вы как-то подбирали количество партиций внутри Kafka-топика?

Senior
WildberriesWildberries
9

Как физически происходит передача данных через небуферизированный канал?

Senior
VK CloudVK Cloud
9

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

Middle+
ООО Макс
9

Есть горячая таблица в базе данных, которая постоянно читается. Как работать с индексами в этом случае?

Senior
WildberriesWildberries
9

Расскажи про resp.Body.Close() — зачем нужно и почему поставил буфер 10?

Senior
Бюро 1440Бюро 1440
9

Есть четыре базовых требования к современным SQL Engine (ACID) — можешь их назвать и объяснить?

Senior
МВидеоМВидео
9

Расскажи про CTE (Common Table Expression).

Middle
RWB
9

Ты сейчас в Москве? Какой формат работы рассматриваешь?

Middle+
МВидеоМВидео
9

Что такое GOMAXPROCS? Может ли приложение использовать больше ядер, чем указано?

Middle
СБЕРСБЕР
9

Кейс о достижении, которым очень гордишься — самый запоминающийся челлендж.

Middle+
МВидеоМВидео
9

Если вы смотрели остатки по складу, вы ключевали по конкретным SKU?

Middle+
РамблерРамблер
9

Является ли Go объектно-ориентированным или структурным языком? Пройдись по основным принципам ООП (инкапсуляция, полиморфизм, наследование, абстракция) и покажи, как они реализуются в Go.

Senior
МВидеоМВидео
9

Вы хранили только агрегированные данные или каждый этап — сырые, нормализованные?

Middle+
РамблерРамблер
9

Есть ли ООП в Go и в каком виде?

Senior
YadroYadro
9

type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Кол-во backends в слайсе 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }

Middle
Яндекс
9

Почему ты выбрал map для кэша, а не sync.Map?

Middle+
РамблерРамблер
9

Какую роль хочешь сейчас — разработчика или что-то другое?

Senior
eLama
9

Что такое DNS и как работает?

Senior
YadroYadro
9

Процессы и потоки — в чём отличие?

Senior
YadroYadro
9

Возможно ли появление дублей при репликации? Могут ли у пользователя появиться два разных баланса?

Senior
Prediva
9
/399