Qual è la differenza tra un indice B-tree e un indice hash in PostgreSQL? Quali altri indici conosci?
Golang
// compito 2 // 1. OpenAPI + gRPC // (YAML) // info: // title: API dei Libri // version: .. // paths: // /books: // get: // responses: // "200"
Parla di Docker: principi di base, build multi-stage, comandi CLI
Parla del pattern Transactional Outbox — cos'è e a cosa serve?
// mkdir progetto // cd progetto // go mod init progetto // touch main.go // vim main.go // --crea codice-- package main import "syscall" // func main() { // msg := []byte("Ciao, Mondo!\n") // syscall.Write(1, msg) // } // --codice terminato-- // go build -o app // ./app // go test ./... // git nint // git add . // git commit -m "init"
Quali altre primitive di sincronizzazione, oltre a mutex e WaitGroup, conosci? Casi d'uso?
Cosa sai dello scheduler delle goroutine in Go?
Come implementare tecnicamente la specifica OpenAPI? Cos'è Swagger?
Cosa sai del pacchetto runtime? Quali metodi hai usato?
Parla dell'architettura del progetto attuale
Quali linters usi in Go e dove li esegui?
funzione 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) } Errore: # 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
Quali sono i principali artefatti di DDD? Di quali parti è composto?
Perché hai usato la parola chiave defer?
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("fallimento nel rtt %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 }
Come si può terminare una goroutine? Quali sono i metodi?
Cosa sai di Transactional Outbox e Saga? Racconta un caso pratico
Qual è la differenza tra /books e /books/{id}?
Raccontami il tuo flusso di profiling in Go
Quante goroutine si possono creare su una singola macchina? Come si calcola?