Golang
Optimista és pesszimista zárolások — mesélj
Mi volt az eredeti probléma az SQL-lekérdezésekkel, és hogyan optimalizálta őket?
fő csomag import ( "fmt" "time" ) func main() { } func printNumber(n int) { time.Sleep(time.Second) fmt.Println(n) }
Kérlek, mondd el, melyik nyelvet használod most főként? Vannak-e további nyelvek, amiken dolgozol?
Rendben, akkor pontosan mi változott magában a kérésben?
Ki foglalkozott a ellenőrző szolgáltatásokkal (csalás elleni, képek, szöveg, spam, limitek ellenőrzése)?
Mi az a tranzakció egy adatbázisban?
Mesélj a konkurens feldolgozásról — van egy külön pont erről. Hogyan korlátozták a párhuzamosságot? Hány kapcsolat volt a PostgreSQL-hez?
Mondja el a prioritási sortáról
Mesélj a terhelésekről és az optimizációval kapcsolatos érdekes esetekről.
Ismered a Linux konzolt?
Mióta írsz Go-ban? Három éve?
Érdekelne, hogy egy kis termékcégben dolgozz?
Hogyan kommunikáltak egymással a szolgáltatások? Hol helyezkedtek el?
Mesélje el általánosságban, hogyan lépett be a piacra, mi volt az álláskeresés oka?
Miért választottad a gRPC-t? Mire való?
Mi az az ACID az adatbázisokban?
Mi az az Ingress és Ingress Controller a Kubernetes-ben?
Hol kell lennie a getExternalOrderIdFromCRM metódusnak? Hogyan strukturáljuk a projektet?
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() }