Sobes.tech

Golang

Z jakimi bazami danych pracujesz? Jaka była maksymalna ilość przechowywanych danych?

157

Czy możesz krótko opowiedzieć o swoim doświadczeniu? Jakim głównym językiem programowania się posługujesz? Ile lat doświadczenia masz w rozwoju przemysłowym?

157

Dlaczego zdecydowali się na użycie LLM zamiast samej logiki w kodzie?

157

Czym JWT różni się korzystnie od przechowywania sesji na serwerze?

156

/* Aplikacja z architekturą mikroserwisów. Mikroserwis można abstrakcyjnie reprezentować za pomocą interfejsu Backend. Aby uzyskać dostęp do jednej instancji mikroserwisu, można użyć typu BackendImpl, który jest już zaimplementowany. Każdy mikroserwis ma kilkadziesiąt uruchomionych instancji, z których każda jest dostępna pod własnym adresem addr. Jednak pojedyncze instancje mikroserwisu nie są niezawodne: mogą się zawiesić, być niedostępne lub przeciążone. Dlatego musisz zaimplementować typ Balancer, który również implementuje interfejs Backend i realizuje balansowanie obciążenia po stronie klienta pomiędzy instancjami mikroserwisu, wybierając za każdym razem **najmniej obciążoną** instancję.

155

Jaki jest główny język programowania, którego używasz? Czy używasz C++ lub Python?

153

func Pipe(p Producent, c Konsument) error { // TODO buf := make([]any, 0, MaxItems) cookies := make([]int, 0) flush := func() error { if len(buf) == 0 { return nil } if err := c.Process(buf); err != nil { return err } for _, cookie := range cookies { if err := p.Commit(cookie); err != nil { return err } } buf = buf[:0] cookies = cookies[:0] return nil } for { items, cookie, err := p.Next() if err != nil { flush() return err }

153

Ile pamięci początkowo przydzielono do bufora?

153

Dlaczego wywołanie backend.Invoke zostało wykonane poza muteksem?

152

Balancer musi rozumieć, że backend odpowiada błędami, i po przekroczeniu progu na określony czas, wykluczyć go z równoważenia (Circuit Breaker)

150

Co się stanie, jeśli Consumer.Process zwróci błąd — dane z bufora nie zostaną utracone?

150

Dana jest łańcuch S, należy policzyć liczbę podłańcuchów w tym łańcuchu, które zawierają wszystkie znaki z tego łańcucha przynajmniej raz. Przykłady: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg

149

Jaka jest maksymalna liczba zapytań na sekundę, którą masz obecnie przy dużym obciążeniu?

147

Jakie języki programowania, oprócz Go, używasz dla siebie lub w rozwoju komercyjnym?

147

W jakim języku programowania pracujesz? Dlaczego pojawiły się trudności ze składnią?

143

To jest ciąg znaków. Znajdź liczbę par indeksów i i j (i <= j), między którymi, włącznie, nie ma powtarzających się znaków. Dla ciągu "aba" odpowiedź to 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") Dla ciągu "acbb" odpowiedź to ?:

143

// 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 zawiera ip:port konkretnego egzemplarza func NewBackend(addr string) *BackendImpl // addrs zawierają adresy wszystkich balansowanych egzemplarzy func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := range addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }

142

Czy jesteś gotowy na zmianę na inny język programowania, jeśli zajdzie taka potrzeba lub z własnej woli?

142

Gdzie mieszkasz, gdzie się znajdujesz?

141

Jakie kryteria będziesz stosować przy wyborze pracodawcy? Co jest dla ciebie najważniejsze?

141
/11