Golang
Papaskinkite apie savo patirtį ir ką veikėte ankstesnėje darbo vietoje
Kas yra inline-optimizacija kompiliatoriuje? Kada ji vyksta ir kaip veikia kintamųjų išdėstymą?
Papaskink apie atminties modelį Go — kaip jis sukonstruotas?
Kokius automatinio testavimo tipus naudojote?
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 }
Kiek patogu yra visiškai nuotolinis darbas?
Ar galima patobulinti maxSegment algoritmą?
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?
Kodėl naudojote Redis vietoj atminties talpyklos?
Ar esi šiame projekte nuo 2022 m. įsidarbinimo momento, ar keitėte projektus?
Kiek žmonių buvo komandoje?
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).
Kaip nusprendžiate dirbdami su kanalais, ar naudoti su buferiu ar be jo?
Kokios yra Transactional Outbox sistemos pagrindinės dalys?
Kokias pristatymo garantijas gali suteikti žinučių tarpininkas? Didžiausiu atveju kartą, mažiausiai kartą, tik vieną kartą.
Kaip organizuotos Swiss Tables Go?
Kas yra DNS ir kaip jis veikia?
Vientiso paskirstymo testas nepraeina: backend[0] tikėtasi 5 skambučių, gauta 10, backend[1] tikėtasi 5 skambučių, gauta 0
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.
Kokia problema gali iškilti siunčiant įvykius į žinučių brokerį ir kaip ją išspręsti?