Mit welchen Datenbanken arbeitest du? Was war das maximale Volumen an gespeicherten Daten?
Golang
Kannst du kurz deine Erfahrung schildern? Welche Programmiersprache verwendest du hauptsächlich? Wie viele Jahre Erfahrung hast du in der industriellen Entwicklung?
Warum haben Sie sich entschieden, LLM zu verwenden, anstatt nur Logik im Code?
Worin liegt der Vorteil von JWT gegenüber der Speicherung von Sitzungen auf dem Server?
/* Es gibt eine Anwendung mit einer Microservice-Architektur. Ein Microservice kann durch eine Schnittstelle Backend abstrahiert werden. Um auf eine Instanz des Microservice zuzugreifen, kann man den Typ BackendImpl verwenden, der bereits implementiert ist. Jede Microservice-Instanz läuft in mehreren Dutzend Exemplaren, die jeweils unter ihrer eigenen Adresse addr zugänglich sind. Allerdings sind einzelne Instanzen des Microservice nicht zuverlässig: sie können ausfallen, nicht erreichbar sein oder überlastet sein. Daher müssen Sie einen Typ Balancer implementieren, der ebenfalls die Schnittstelle Backend implementiert und die Client-seitige Lastverteilung zwischen den Instanzen des Microservice durchführt, indem er jedes Mal die **am wenigsten belastete** Instanz auswählt.
Welche Programmiersprache verwendest du hauptsächlich? Nutzt du C++ oder Python?
func Pipe(p Produzent, c Verbraucher) 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 }
Wie viel Speicher ist ursprünglich für den Puffer reserviert?
Der Load Balancer muss verstehen, dass das Backend Fehler antwortet, und bei Überschreitung einer Schwelle für eine bestimmte Zeit, es aus dem Load Balancing ausschließen (Circuit Breaker)
Warum wurde der Aufruf von backend.Invoke außerhalb des Mutex ausgeführt?
Was passiert, wenn Consumer.Process einen Fehler zurückgibt — gehen die Daten aus dem Puffer nicht verloren?
Gegeben ist eine Zeichenkette S, es ist die Anzahl der Substrings in dieser Zeichenkette zu zählen, die alle Zeichen dieser Zeichenkette mindestens einmal enthalten. Beispiele: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg
Welche Programmiersprachen, außer Go, verwenden Sie für sich selbst oder in der kommerziellen Entwicklung?
Wie viele Anfragen pro Sekunde hast du momentan bei hoher Belastung?
In welcher Programmiersprache arbeiten Sie? Warum gab es Schwierigkeiten mit der Syntax?
Dies ist eine Zeichenkette. Finden Sie die Anzahl der Indexpaare i und j (i <= j), zwischen denen einschließlich keine wiederholten Zeichen vorhanden sind. Für die Zeichenkette "aba" ist die Antwort 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") Für die Zeichenkette "acbb" ist die Antwort ?:
Sind Sie bereit, bei Bedarf oder aus persönlichem Wunsch auf eine andere Programmiersprache umzusteigen?
// 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 enthält ip:port einer spezifischen Instanz func NewBackend(addr string) *BackendImpl // addrs enthalten die Adressen aller ausbalancierten Instanzen func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := range addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }
Wo wohnst du, wo bist du?
Welche Kriterien werden Sie bei der Auswahl eines Arbeitgebers verwenden? Was ist für Sie am wichtigsten?