Sobes.tech

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?

Middle
AndersenAndersen
34

Atlases speciālists nesaprot prioritātes, vienkārši saka 'man ir nepieciešami 300 kandidāti' — kā ar to tikt galā?

Senior
OZONOZON
34

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 }

Senior
Pasul LTD
34

Kāda veida daudzuzdevumu izmanto Go? Kā Go plānotājs pārtrauc goroutines?

Middle+
VK CloudVK Cloud
34

Kāpēc jūs izmantojāt Redis, nevis atmiņas kešatmiņu?

Senior
OkkoOkko
33

Cik cilvēku bija komandā?

Senior
AndersenAndersen
33

Vai esat strādājis ar transakcijām PostgreSQL un ar kādiem izolācijas līmeņiem?

Senior
2gis2gis
33

Vai vēl joprojām sazinies ar citām uzņēmumiem? Vai jau ir piedāvājumi?

Middle+
FinFrame
33

Pastāstiet par darbu ar Kafka: kas notiek, kad uzkrājas lag, kādi ir riski un kā tie tika risināti?

Senior
А7
33

Pastāsti par gadījumu, kad tu ieteici iniciatīvu un to aizstāvēji.

Middle
WildberriesWildberries
33

Kura komanda rāda diska vietu?

Middle+
VK CloudVK Cloud
33

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) } } }

Senior
Wildberries & Russ Bank
33

Kādi ir starprocesu mijiedarbības veidi (IPC)?

Senior
AvitoAvito
33

Kā notika noteikumu pievienošana un noņemšana, ja tas bija liels switch-case?

Middle+
А7
33

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?

Senior
AndersenAndersen
33

Vai standarta bibliotēka net/http ir pietiekama ražošanas tīmekļa servera rakstīšanai tīrā Go bez ietvariem?

Senior
Spectr
33

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() }

Senior
Wildberries & Russ Bank
33

Pastāsti par sava komandas sastāvu.

Senior
РамблерРамблер
33

Kā ir saistīti blokķēde un CAP teorema? Vai blokķēde vienmēr ir pieejama?

Senior
Лига Цифровой ЭкономикиЛига Цифровой Экономики
33

Vai esat strādājis ar sastāvdaļu indeksiem?

Middle
АО Медиа Эффект
33
/411