Golang
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil }
Formalizzazione dei requisiti del sistema di matchmaking: come cercare una partita, cosa fare se non si trova un avversario, come convalidare le mosse, è necessario un timer, come aggiornare la classifica, è necessaria una cronologia delle partite, cosa fare in caso di disconnessione?
Quali regole di lavoro con i canali bisogna conoscere durante lo sviluppo (chiuso, aperto, quando cosa si può fare)?
Ti è mai capitato di fare qualcosa per molto tempo e alla fine non essere implementato o essere rinviato in pila?
Ci sono pre-offerte in mano?
Quali microservizi hai sviluppato? Di che tipo di servizi si tratta?
Se crei una mappa, aggiungi un milione di valori, poi rimuovi tutti gli elementi e chiami il GC, la memoria tornerà al valore originale?
// Correggere il codice in modo che le richieste siano concorrenti e venga visualizzato il codice di risposta // e in caso di errore, visualizzare il log e continuare l'elaborazione package main import "net/http" var addrs = []string{"[link] "[link] "[link] "[link] "[link] "[link] "[link] func main() { var wg sync.WaitGroup data := make(map[string]bool) for _, url := range addrs { wg.Add(1) if !data[url] { data[url] = true go func(url string) { defer wg.Done() resp, err := http.Get(url) if err != nil { log.Println(err) return } log.Println(resp.StatusCode) }(url) } } wg.Wait() }
Cos'è la notazione O (notazione Big O)?
// Compito 3 // Descrivere quale compito risolve questo codice // Quali problemi ci sono in questa soluzione? // Come riscriveresti questo codice?
Perché in sync.Map non c'è un metodo per ottenere il numero di elementi (len)?
Un puntatore può puntare sia allo stack che all'heap?
Come vengono elaborati i messaggi inviati agli utenti offline?
Perché è necessaria la combinazione Load Balancer + API Gateway? Qual è il ruolo di ciascun componente?
L'evento arriva nel primo data center da Kafka, lo catturiamo e lo memorizziamo in Redis. Come sono arrivati questi dati in tutti e tre i data center?
O Redis era in un singolo data center, e tutti si rivolgevano a lui?
Qual è la differenza tra un array e uno slice in Go?
Hai esperienza di progettazione di sistemi — pensare all'architettura da zero, difenderla davanti al team?
Viene creato un nuovo thread del sistema operativo per ogni goroutine?
Ci sono 3 entità: utente, chat, messaggio • L'utente ha un nome e una data di registrazione • La chat ha un nome e una data di creazione • Il messaggio ha testo, autore e data di creazione • Un utente può essere in più chat contemporaneamente • Il messaggio appartiene obbligatoriamente a una chat e non può appartenere a più di una chat contemporaneamente • È necessario descrivere il dominio sotto forma di tabelle