Sobes.tech

Golang

Ce este optimizarea inline a compilatorului? În ce moment are loc și cum influențează poziționarea variabilelor?

Senior
А7
35

Vorbește-mi despre modelul de memorie în Go — cum este structurat?

Senior
AltDev
35

Ce tipuri de teste automate ați folosit?

Senior
Магнит Тех
35

pachet de stocare import ( "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

Cât de confortabil este munca complet de la distanță?

Senior
Flant
35

Se poate îmbunătăți algoritmul maxSegment?

Senior
Яндекс
34

Ai luat un lot de 500 de mesaje din Kafka, dar nu poți să le salvezi în baza de date. Ce se va întâmpla? Cât timp poți procesa aceste 500 de mesaje?

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

De ce ai folosit Redis în loc de un cache în memorie?

Senior
OkkoOkko
34

Ești pe acest proiect din momentul angajării tale în 2022 sau ai schimbat proiecte?

Senior
Магнит Тех
34

Câte persoane au fost în echipă?

Senior
AndersenAndersen
34

Scrieți o funcție care verifică dacă un șir de caractere este palindrom. Verificarea trebuie să se facă doar pe caracterele alfabetului (a-zA-Za-яА-Я), fără a ține cont de majuscule/minuscule (case-insensitive).

Middle
VKVK
34

Cum decizi între canale cu buffer și fără buffer atunci când lucrezi cu canale?

Senior
AndersenAndersen
34

Care sunt părțile principale ale sistemului Transactional Outbox?

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

Ce garanții de livrare poate oferi un broker de mesaje? Cel mult o dată, cel puțin o dată, exact o dată.

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

Cum sunt organizate Swiss Tables în Go?

Senior
I-teco
34

Ce este DNS și cum funcționează?

Middle
VKVK
34

Testul de distribuție uniformă nu trece: backend[0] se aștepta 5 apeluri, s-au primit 10, backend[1] se aștepta 5 apeluri, s-au primit 0

Senior
VKVK
34

Este necesar să descriem modelul bibliotecii. Există 3 entități: "Autor", "Carte", "Cititor". -- Fizic, există doar o carte și poate fi doar la un cititor. -- O carte poate avea mai mulți autori.

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

Ce problemă poate apărea la trimiterea evenimentelor către un broker de mesaje și cum o rezolvi?

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

Există o traiectorie de carieră? Vrei să te dezvolți tehnic sau în direcția managementului/leadership-ului de echipă?

Middle+
VK CloudVK Cloud
34
/412