Golang
Vai jūs ierobežojāt skrollēšanas dziļumu? Jūs minējāt, ka izmantojāt bulk sākotnējai datu ielādei, bet kā jūs pārvaldījāt inkrementālas atjaunināšanas, kad mainījās produkta cena vai nosaukums? Kā nodrošinājāt Elasticsearch sinhronizāciju?
Atlases speciālists nesaprot prioritātes, vienkārši saka 'man ir nepieciešami 300 kandidāti' — kā ar to tikt galā?
pakuotes glabāšana importēt ( "database/sql" "errors" "fmt" "time" "github.com/company/my-service/internal/event" "github.com/company/my-service/internal/metric" ) type Partner struct { ID string `db:"id" json:"id"` Balance float32 `db:"balance" json:"balance"` Hold float32 `db:"hold" json:"hold"` } type PayoutRepository struct { db sql.DB eventPublisher event.Publisher metricCollector metric.Collector totalPayouts int } func NewPayoutRepository() *PayoutRepository { db, err := sql.Open("postgres", "host=localhost user=postgres password=postgres dbname=affiliate") if err != nil { panic(err) } r := PayoutRepository{ db: db, eventPublisher: event.NewKafkaPublisher("localhost:9092"), metricCollector: metric.NewPrometheusCollector("localhost:9090"), } go func() { for range time.Tick(time.Minute) { _ = r.metricCollector.Send("TotalPayouts", r.totalPayouts) } }() return r } func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) 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) if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner not found") } return p, err } return p, nil } func (r *PayoutRepository) save(p Partner) error { _, err := r.db.Exec( fmt.Sprintf("UPDATE partners SET balance = %s, hold = %s WHERE id = %s", p.Balance, p.Hold, p.ID), ) if err != nil { return err } if err := r.eventPublisher.Publish("BalanceChanged", p); err != nil { return err } return nil }
Kāda veida daudzuzdevumu izmanto Go? Kā Go plānotājs pārtrauc goroutines?
Kāpēc jūs izmantojāt Redis, nevis atmiņas kešatmiņu?
Cik cilvēku bija komandā?
Vai esat strādājis ar transakcijām PostgreSQL un ar kādiem izolācijas līmeņiem?
Vai vēl joprojām sazinies ar citām uzņēmumiem? Vai jau ir piedāvājumi?
Pastāstiet par darbu ar Kafka: kas notiek, kad uzkrājas lag, kādi ir riski un kā tie tika risināti?
Pastāsti par gadījumu, kad tu ieteici iniciatīvu un to aizstāvēji.
Kura komanda rāda diska vietu?
galvenais pakotne func main() { c := make(chan int) 3 cikli { select { noklusējuma: println(1) gadījums <-c: println(2) gadījums c <- 1: println(3) } } }
Kādi ir starprocesu mijiedarbības veidi (IPC)?
Kā notika noteikumu pievienošana un noņemšana, ja tas bija liels switch-case?
Kā izstrādātājiem būtu jālieto AI rīki kodu ģenerēšanai vai pārskatīšanai, un kādi soļi ir nepieciešami, lai apstiprinātu to rezultātu?
Vai standarta bibliotēka net/http ir pietiekama ražošanas tīmekļa servera rakstīšanai tīrā Go bez ietvariem?
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() }
Pastāsti par sava komandas sastāvu.
Kā ir saistīti blokķēde un CAP teorema? Vai blokķēde vienmēr ir pieejama?
Vai esat strādājis ar sastāvdaļu indeksiem?