Golang
Povedz mi o použití udalostí (prístup riadený udalosťami) na tvojom príklade
Prečo hľadáte novú prácu?
Osobne som testoval, že Postgres preusporadúva stĺpce a optimalizátor mu nezáleží na poradí, v akom napíšete dotaz — sám ho preusporiada tak, ako je potrebné. Čo si o tom myslíš?
Povedz mi o svojej pracovnej skúsenosti a zaujímavých úlohách
Kde momentálne bývate a aký formát práce zvažujete?
Pracoval ste s transakciami v PostgreSQL a s ktorými úrovňami izolácie?
Aké praktiky existujú na zníženie veľkosti Docker obrazu?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // pridať transakciu ak err != nil { vrátenie err } partner, err := r.find(partnerID) ak err != nil { vrátenie err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount ak err := r.save(advertiser); err != nil { vrátenie err } ak err := r.save(partner); err != nil { vrátenie err } r.totalPayouts++ vrátenie nil } funkcia (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // pridať $1 ak err != nil { ak err == sql.ErrNoRows { vrátenie p, errors.New("partner nenájdený") } vrátenie p, err } vrátenie p, nil }
Ako je odvodená súvisí s plochou?
Aký príkaz zobrazuje diskový priestor?
Prečo je lepšie odstrániť ukazovateľ zo slice v repozitári? Argumenty za a proti.
Čo je to model OSI? Čo je to aplikačná vrstva?
Čo chceš teraz — aké máš očakávania od novej práce?
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() }
Čo znamená pomenovanie v štýle RPC? V našom prípade gRPC a REST — v čom sa líšia?
Museli ste niekedy sledovať čas, viesť evidenciu úloh v nejakom systéme?
Ako určiť, či produkt s približne 1000 používateľmi potrebuje architektúru mikroservisov alebo monolitickú?
V nákupnom centre je parkovisko: autá vchádzajú a vychádzajú, a na konci parkovacej session je potrebné zaplatiť. Ako to vidíš? Navrhni systém.
Ako získať výstup 456, ak nepoužívate ukazovateľ (pointer receiver)?
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) }() } }