Golang
pacchetto principale importa ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Ciao Mondo!" fmt.Println("Uscita!") } errore fatale: tutte le goroutine sono addormentate - deadlock! goroutine 1 [ricezione del canale]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Programma uscito: stato 2.
Hai obblighi di lavoro o è possibile un passaggio rapido?
Come sono implementati gli operatori condizionali (if) a livello di assembler?
È vero che l'indice B-tree in PostgreSQL tende ad espandersi in larghezza?
Quale formato di lavoro stai considerando?
Cos'è un Mutex?
Puoi parlare di Go in generale — che tipo di linguaggio è, quali sono le sue caratteristiche?
Qual è il progetto o la funzionalità più cool di cui sei orgoglioso?
Come verranno scelti se più canali sono pronti contemporaneamente in select?
Parla in generale di cosa fai nella tua attuale azienda.
Quando è consigliabile preferire RabbitMQ invece di Kafka e viceversa?
Come è stato condotto il test di carico e quali metriche sono state osservate?
Puoi fare un esempio di un collo di bottiglia che sei riuscito a trovare tramite il profiling con pprof?
Il recruiter non capisce le priorità, dice semplicemente 'ho bisogno di 300 candidati' — come gestire questa situazione?
Cos'è una condizione di gara in Go? Fornisci un esempio.
Hai domande per me?
Perché hai usato Redis invece di una cache in memoria?
Cosa sono le interfacce in Go? Cos'è il duck typing?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // aggiungi una transazione 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 } func (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // aggiungi $1 if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner non trovato") } return p, err } return p, nil }
Racconta casi interessanti di lavoro con PostgreSQL