Sobes.tech

Golang

Papaskinkite apie savo patirtį ir ką veikėte ankstesnėje darbo vietoje

Middle+
X5 groupX5 group
35

Kas yra inline-optimizacija kompiliatoriuje? Kada ji vyksta ir kaip veikia kintamųjų išdėstymą?

Senior
А7
35

Papaskink apie atminties modelį Go — kaip jis sukonstruotas?

Senior
AltDev
35

Kokius automatinio testavimo tipus naudojote?

Senior
Магнит Тех
35

pakuotės saugykla importuoti ( "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
35

Kiek patogu yra visiškai nuotolinis darbas?

Senior
Flant
35

Ar galima patobulinti maxSegment algoritmą?

Senior
Яндекс
34

Jūs paėmėte 500 pranešimų partiją iš Kafka, tačiau jų negalite išsaugoti duomenų bazėje. Kas nutiks? Kiek laiko galima apdoroti šiuos 500 pranešimus?

Middle+
ВайлдберрисВайлдберрис
34

Kodėl naudojote Redis vietoj atminties talpyklos?

Senior
OkkoOkko
34

Ar esi šiame projekte nuo 2022 m. įsidarbinimo momento, ar keitėte projektus?

Senior
Магнит Тех
34

Kiek žmonių buvo komandoje?

Senior
AndersenAndersen
34

Parašykite funkciją, kuri patikrina, ar eilutė yra palindromas. Tikrinti reikia tik abėcėlės simbolius (a-z, A-Z, а-я, А-Я), neatsižvelgiant į didžiąsias ar mažąsias raides (case-insensitive).

Middle
VKVK
34

Kaip nusprendžiate dirbdami su kanalais, ar naudoti su buferiu ar be jo?

Senior
AndersenAndersen
34

Kokios yra Transactional Outbox sistemos pagrindinės dalys?

Middle+
МВидеоМВидео
34

Kokias pristatymo garantijas gali suteikti žinučių tarpininkas? Didžiausiu atveju kartą, mažiausiai kartą, tik vieną kartą.

Middle
АО Медиа Эффект
34

Kaip organizuotos Swiss Tables Go?

Senior
I-teco
34

Kas yra DNS ir kaip jis veikia?

Middle
VKVK
34

Vientiso paskirstymo testas nepraeina: backend[0] tikėtasi 5 skambučių, gauta 10, backend[1] tikėtasi 5 skambučių, gauta 0

Senior
VKVK
34

Reikia aprašyti bibliotekos modelį. Yra 3 subjektai: "Autorius", "Knyga", "Skaitovas". -- Fiziškai yra tik viena knyga ir ji gali būti tik su vienu skaitytoju. -- Knyga gali turėti kelis autorius.

Senior
Холодильник.руХолодильник.ру
34

Kokia problema gali iškilti siunčiant įvykius į žinučių brokerį ir kaip ją išspręsti?

Middle+
КуперКупер
34
/412