Golang
Je standardní knihovna net/http dostačující pro napsání produkčního webového serveru v čistém Go bez frameworků?
Pověz mi, jak se rozvíjíš a učíš, co právě studuješ?
Sám jste psal nebo upravoval YAML manifesty Kubernetes pro 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) } ``` A kód hibájának javításához, amely a dbHits változóhoz való párhuzamos hozzáféréssel kapcsolatos, szinkronizálni kell a hozzáférést ehhez a változóhoz.
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() }
Proč jste se rozhodl změnit práci?
Jak jsou spojeny blockchain a CAP teorem? Je blockchain vždy dostupný?
Jaký je váš hlavní vývojový jazyk a kolik let zkušeností máte?
Vzpomenete si na všechny možné způsoby meziprocesové komunikace (IPC)?
Pracoval jste s vícesložkovými indexy?
V Go je knihovna — LRU, kam lze předat Any a nastavit TTL. Proč byla zvolena Redis místo ní?
Povězte nám o goroutines a v čem se liší od vláken operačního systému.
Jsou nějaké otázky ohledně etapů pohovoru?
Jak na úrovni transakce v databázi poslat pouze jednu skupinu, když na signál reagují najednou tři skupiny v systému rychlé reakce?
V architektuře x86 zabírá instrukce přerušení dva bajty, ale přerušení s číslem 3 má alternativní jednopalcovou variantu. Proč to bylo potřeba?
Můžeme vytvořit pole, jehož prvky jsou různých typů, například 1, "A" a false?
Máme 3 oddíly a 3 spotřebitele, zpoždění roste. Jak může KEDA pomoci v této situaci?
Máš teď nabídky nebo ještě probíhají pohovory?
S jakými databázemi jsi pracoval?
Řekl jsi, že máš službu, která poslouchá Kafka a aktualizuje cache v Redis, že?