Как работихте с лични данни преди да ги изпратите към външен LLM?
Golang
Какво знаете за програмата MultiTrack на Yandex?
Имаш ли опит в поддръжката или разработването на разпределени системи?
тип Response интерфейс {} tип Backend интерфейс { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr съдържа ip:port на конкретен екземпляр func NewBackend(addr string) *BackendImpl tип Balancer структура { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { ако len(b.backends) == 0 { return nil, fmt.Errorf("Броят на бекендите в слайса е 0") } b.mu.Lock() index := b.index ако b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) return resp, err } // addrs съдържа адресите на всички балансирани екземпляри func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))
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 в slice 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) } }
Колко човека участваха в най-големия проект, по който си работил? По-малко от десет, десетки, стотици?
Кой беше най-големият обем данни, с който сте работили в бази данни?
Как работите по архитектурата — има ли архитект в екипа, платформа, комитет?
Колко бързо ще работи линейното търсене на всички бекендове при висок RPS (например 30 000 RPS и 10 бекенда)?
На колко хоста работеше услугата и колко инстанции бяха стартирани?
Как бързо да проверите дали в прозореца има всички символи (сравнение на две карти)?
Има ли по-прости и по-бързи начини за баланс на натоварването вместо избор на най-малко натоварения бекенд?
Колко активно са търсенията? Може би вече има някои оферти?
/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { n := len(str) res := make([]byte, 0, n) i := 0 for i < n { if str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') { ch := str[i+2] i += 2 for i < n && str[i] == ch { i++ } } else { res = append(res, str[i]) } } return string(res) }
Разкажи ми повече за първото ти място на работа от 2019 до 2021 година.
Защо съобщенията от Message Service минават директно през gRPC, а не през Kafka?
func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) for right := 0; right < len(s); right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }
Как да решим проблема с ограничаването на паралелните заявки в разпределена система с няколко инстанции, ако потребителят трябва да чака, а не да получава грешка?
Намерете синтактичните грешки в коригирания код
""" Местата в киното са разположени в един ред. Новодошлият зрител избира място, за да седне възможно най-далеч от останалите зрители в реда. Тоест, разстоянието от това място, където ще седне, до най-близкия зрител трябва да бъде максимално. Гарантира се, че винаги има свободни места в реда и вече има поне един зрител. Напишете функция, която по даден ред с места (масив от нули и единици) ще върне разстоянието (броя на интервалите между седалките) от избраното място до най-близкия зрител. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] -> 3 [1, 0, 0, 0] -> 3 place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }