Sobes.tech

Что такое микросервисная архитектура и какие плюсы-минусы по сравнению с монолитом?

Senior
МВидеоМВидео
11

Работаете?

Senior
aic
11

Расскажи про стажировку: как долго работал стажёром, когда перешёл на полную ставку, что было с учёбой?

Senior
Hi Rockits
11

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

Middle
X5
11

Что вы знаете о программе мультитрек Яндекса?

Senior
Яндекс
11

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
Яндекс
11

В чём разница между процессами, потоками и горутинами в Go?

Middle+
Ozon ФинтехOzon Финтех
11

Знаешь понятие негативный кеш?

Middle
VKVK
11

Есть ли способ управлять и тюнить stop-the-world сборщик мусора в Go?

Middle+
WildberriesWildberries
11

Как ты относишься к дежурствам? Был ли у тебя такой опыт?

Senior
ozon_tech
11

Есть ли моменты, которые могут демотивировать в работе, помимо уже озвученного?

Senior
Flant
11

Что такое GMP-модель планировщика Go?

Middle
VKVK
11

Что такое переменные окружения? Зачем нужны?

Middle+
YadroYadro
11

Что такое выравнивание структур в Go? Как оптимизировать поля структуры по памяти?

Senior
Lenta Tech
11

Как передаются аргументы в функцию — по значению или по ссылке?

Middle+
ТБанк
11

На чём писал на JavaScript — чистый JS или какой-то фреймворк, например React?

Middle+
Штрафов нет
11

Расскажи про свою текущую работу: что там делал и какая зона ответственности?

Senior
bip.ru
11

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

Middle+
ClearWay
11

Что тебе нравится в работе? Что драйвит?

Senior
AvitoAvito
11

func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }

Senior
МТС CloudМТС Cloud
11
/399