Was ist der Unterschied zwischen einem B-Tree-Index und einem Hash-Index in PostgreSQL? Welche anderen Indizes kennst du?
Golang
Erzähle über Docker: Grundprinzipien, Multistage-Builds, CLI-Befehle
Erzählen Sie mir vom Pattern Transactional Outbox — was ist das und wofür wird es verwendet?
// Aufgabe 2 // 1. OpenAPI + gRPC // (YAML) // info: // title: Buch API // version: .. // paths: // /books: // get: // responses: // "200"
Welche anderen Synchronisationsprimitive, außer Mutex und WaitGroup, kennst du? Anwendungsfälle?
// mkdir projekt // cd projekt // go mod init projekt // touch main.go // vim main.go // --Code erstellen-- package main import "syscall" // func main() { // msg := []byte("Hallo, Welt!\n") // syscall.Write(1, msg) // } // --Code beendet-- // go build -o app // ./app // go test ./... // git nint // git add . // git commit -m "init"
Was weißt du über den Scheduler für Goroutines in Go?
Was weißt du über das Runtime-Paket? Welche Methoden hast du verwendet?
Wie implementiert man die OpenAPI-Spezifikation technisch? Was ist Swagger?
Welche Linters verwendest du in Go und wo führst du sie aus?
Was sind die wichtigsten Artefakte von DDD? Aus welchen Teilen besteht es?
Erzählen Sie mir von der Architektur des aktuellen Projekts
Funktion main() { ctx := context.Background() urls := []string{ "vk.ru", "ozon.ru", "pi.zone.ru", "lamoda.ru", "adidas.com", } pingMap, err := collectRTT(ctx, urls) if err != nil { fmt.Println("ERR:", err) return } data, _ := json.Marshal(pingMap) fmt.Println("RTT:", string(data)) } func collectRTT(ctx context.Context, urls []string) (map[string]time.Duration, error) { pingMap := make(map[string]time.Duration, len(urls)) var mu sync.Mutex var wg sync.WaitGroup errCh := make(chan error, 1) for _, url := range urls { wg.Add(1) go func(u string) { // ... (rest of the function implementation) }(url) } // ... (rest of the function implementation) } Fehler: # command-line-arguments 2486763/main.go:34:9: undefined: sync 2486763/main.go:35:9: undefined: sync 2486763/main.go:45:32: undefined: fmt.Errorf
Warum hast du das Schlüsselwort defer verwendet?
func collectRTT(ctx context.Context, urls []string) (map[string]time.Duration, error) { pingMap := make(map[string]time.Duration, len(urls)) var mu sync.Mutex var wg sync.WaitGroup errCh := make(chan error, 1) for _, url := range urls { wg.Add(1) go func(u string) { defer wg.Done() dur, err := rtt(ctx, u) if err != nil { select { case errCh <- fmt.Errorf("Fehler beim RTT für %s, %w", u, err): default: } return } mu.Lock() pingMap[u] = dur mu.Unlock() }(url) } wg.Wait() close(errCh) if err := <-errCh; err != nil { return nil, err } return pingMap, nil }
Wie kann man eine Goroutine beenden? Welche Möglichkeiten gibt es?
Was ist der Unterschied zwischen /books und /books/{id}?
Was weißt du über Transactional Outbox und Saga? Erzähle einen praktischen Fall
Erzähle deinen Profilierungs-Flow in Go
Wie viele Goroutines können auf einer Maschine erstellt werden? Wie zählt man?