Golang
Mesélj az eseményalapú megközelítésről a példádban
Miért keres új munkát?
Személy szerint teszteltem, hogy a Postgres átrendezi az oszlopokat, és az optimalizáló nem számít, milyen sorrendben írod a lekérdezést — ő maga fogja átszerkeszteni, ahogy kell. Mit szólsz?
Mesélj a munkatapasztalatodról és érdekes feladatokról
Hol él most, és milyen munkafolyamatot fontolgat?
Dolgozott már PostgreSQL tranzakciókkal és milyen izolációs szinteken?
Milyen gyakorlatok léteznek a Docker-kép méretének csökkentésére?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // tranzakció hozzáadása 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) // $1 hozzáadása if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner nem található") } return p, err } return p, nil }
Hogyan kapcsolódik a derivált a területhez?
Melyik parancs mutatja a lemezterületet?
Miért jobb eltávolítani a mutatót a szeletből a tárolóban? Érvek mellette és ellene.
Mi az az OSI modell? Mi az az alkalmazási réteg?
Most mit szeretnél — mik az elvárásaid az új munkával kapcsolatban?
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() }
Mit jelent az RPC-stílusú névhasználat? A mi esetünkben a gRPC és a REST — miben különböznek?
Előfordult már, hogy időt kellett követned, feladatokat nyilvántartani valamilyen rendszerben?
Hogyan határozható meg, hogy egy kb. 1000 felhasználós terméknek mikroservice vagy monolit architektúrára van-e szüksége?
Van egy parkoló a bevásárlóközpontban: a gépkocsik be- és kijárnak, és a parkolási szakasz végén fizetni kell. Hogyan látod ezt? Tervezzen egy rendszert.
Hogyan lehet elérni a 456 kimenetet anélkül, hogy pointer fogadót használnánk?
1.21 func main() { var nums []*int for i := 0; i < 10; i++ { nums = append(nums, &i) } for _, v := range nums { go func() { fmt.Println(v) }() } }