Z jakimi bazami danych pracujesz? Jaka była maksymalna ilość przechowywanych danych?
Golang
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?
Dlaczego zdecydowali się na użycie LLM zamiast samej logiki w kodzie?
Czym JWT różni się korzystnie od przechowywania sesji na serwerze?
/* 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ę.
Jaki jest główny język programowania, którego używasz? Czy używasz C++ lub Python?
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 }
Ile pamięci początkowo przydzielono do bufora?
Dlaczego wywołanie backend.Invoke zostało wykonane poza muteksem?
Balancer musi rozumieć, że backend odpowiada błędami, i po przekroczeniu progu na określony czas, wykluczyć go z równoważenia (Circuit Breaker)
Co się stanie, jeśli Consumer.Process zwróci błąd — dane z bufora nie zostaną utracone?
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
Jaka jest maksymalna liczba zapytań na sekundę, którą masz obecnie przy dużym obciążeniu?
Jakie języki programowania, oprócz Go, używasz dla siebie lub w rozwoju komercyjnym?
W jakim języku programowania pracujesz? Dlaczego pojawiły się trudności ze składnią?
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 ?:
// 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, } }
Czy jesteś gotowy na zmianę na inny język programowania, jeśli zajdzie taka potrzeba lub z własnej woli?
Gdzie mieszkasz, gdzie się znajdujesz?
Jakie kryteria będziesz stosować przy wyborze pracodawcy? Co jest dla ciebie najważniejsze?