Golang
La libreria standard net/http è sufficiente per scrivere un server web di produzione in Go puro senza framework?
Raccontami come ti sviluppi e impari, cosa stai studiando ora?
Hai scritto o modificato tu stesso i manifest YAML di Kubernetes per CI/CD?
```go type User struct { ID int Name string } var ( dbHits int ) func getUserInfoFromDB(id int) User { time.Sleep(100 * time.Millisecond) dbHits++ return User{ID: id, Name: fmt.Sprintf("User-%d", id), } } func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Println(getUserInfoFromDB(i)) }(42) } wg.Wait() fmt.Println("DB hits:", dbHits) } ``` Correggere l'errore nel codice relativo all'accesso concorrente alla variabile dbHits.
var defaultTxOptions = &sql.TxOptions{} const defaultCurrency = "RUB" func CreateUserWithDefaultCurrency(ctx context.Context, db *sql.DB, email, passwordHash string) error { tx, err := db.BeginTx(ctx, defaultTxOptions) if err != nil { return err } defer func() { if err != nil{ tx.Rollback() } }() _, err = tx.Exec("INSERT INTO users (email, password) VALUES (?, ?)", email, passwordHash) if err != nil { return err } rows, err := tx.Query("SELECT id FROM users WHERE email = ?", email) if err != nil { return err } defer rows.Close() id := 0 for rows.Next() { err = rows.Scan(&id) if err != nil { return err } } _, err = tx.Exec("INSERT INTO balances (user_id, currency, current_balance) VALUES (?, ?, 0)", id, defaultCurrency) if err != nil { return err } return tx.Commit() }
Perché hai deciso di cambiare lavoro?
Come sono collegati la blockchain e il teorema CAP? La blockchain è sempre disponibile?
Qual è il tuo linguaggio principale di sviluppo e quanti anni di esperienza hai?
Puoi ricordare tutti i possibili metodi di interazione tra processi (IPC)?
Hai lavorato con indici compositi?
C'è una libreria in Go — LRU, dove puoi passare Any e impostare TTL. Perché è stato scelto Redis invece di questa?
Parla delle goroutine e di come si differenziano dai thread del sistema operativo.
Ci sono domande sulle fasi dell'intervista?
Come si può, a livello di transazione nel database, inviare solo un gruppo quando più gruppi rispondono contemporaneamente a un segnale in un sistema di risposta rapida?
Nell'architettura x86, l'istruzione di interruzione occupa due byte, ma l'interruzione con il numero 3 ha una variante alternativa di un byte. Perché è stato necessario?
Possiamo creare un array i cui elementi sono di tipi diversi, ad esempio 1, "A" e false?
Abbiamo 3 partizioni e 3 consumatori, il ritardo sta crescendo. Come può aiutare KEDA in questa situazione?
Hai offerte al momento o stai ancora facendo colloqui?
Con quali database hai lavorato?
Hai detto che hai un servizio che ascolta Kafka e aggiorna la cache in Redis, giusto?