Golang
Ce este optimizarea inline a compilatorului? În ce moment are loc și cum influențează poziționarea variabilelor?
Vorbește-mi despre modelul de memorie în Go — cum este structurat?
Ce tipuri de teste automate ați folosit?
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 }
Cât de confortabil este munca complet de la distanță?
Se poate îmbunătăți algoritmul maxSegment?
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?
De ce ai folosit Redis în loc de un cache în memorie?
Ești pe acest proiect din momentul angajării tale în 2022 sau ai schimbat proiecte?
Câte persoane au fost în echipă?
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).
Cum decizi între canale cu buffer și fără buffer atunci când lucrezi cu canale?
Care sunt părțile principale ale sistemului Transactional Outbox?
Ce garanții de livrare poate oferi un broker de mesaje? Cel mult o dată, cel puțin o dată, exact o dată.
Cum sunt organizate Swiss Tables în Go?
Ce este DNS și cum funcționează?
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
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.
Ce problemă poate apărea la trimiterea evenimentelor către un broker de mesaje și cum o rezolvi?
Există o traiectorie de carieră? Vrei să te dezvolți tehnic sau în direcția managementului/leadership-ului de echipă?