С какви библиотеки се пишат метрики в Go?
Golang
За какво е написан този код? Какъв бизнес-технически проблем решава?
Какви метрики? С какви инструменти ще записваме тези метрики?
// Задача 4 // В "типичен" CRUD сервис - в някакъв момент някои методи започнаха да работят бавно и сервисът започна да таймаутва. // Сервисът се състои от: // * Application Load Balancer (L7) - приемане на входящи заявки и терминално TLS // * Backend (rest, java/kotlin или golang) - обработка на входящи заявки и бизнес логика // * Database (postgres) - съхранение и обработка на SQL заявки // Как правилно да действате, за да разберете причината за проблемите и да разработите решения за подобряване на ситуацията?
// Задача 3 // Опишете каква задача решава този код // Какви проблеми има в това решение? // Как бихте преписали този код?
Какво правеше на работата?
// Задача 3 // Опишете каква задача решава този код // Какви проблеми има в това решение? // Как бихте преписали този код? var c int type Trace struct { // Някои полета тук } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Какво ще направите, когато приоритетите във вашия екип се променят всеки ден и се появяват нови спешни задачи?
На какви индекси сте се базирали на работното място? Какво прилагахте на практика? В Wildberries?
Как работи партиционирането в PostgreSQL под капака?
Какво да правите с базата данни и load balancer при проблеми с производителността?
Какви индекси използваш в PostgreSQL?
Какви проблеми има в кода с глобалния брояч? Как да ги поправим?
Как да достъпите профайлъра pprof на производствения сървър?
На кой график видяхте проблема при използване на pprof?
Как да направите Increaser универсален — не свързан с числото 100?
// Въпрос 3 // Опишете каква задача решава този код // Какви проблеми има в това решение? // Как бихте преписали този код? var c int var mu sync.RWMutex type Trace struct { // Някои полета тук } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }
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] }
Може ли Increaser да стане реализация на Sender? В чем логически се различават Increaser и Sender?
Можеш ли да разкажеш как си проектирал и реализирал REST и gRPC API за вътрешните и външните услуги на платформата?