Golang
Vertel me over je ervaring en wat je deed op je vorige baan
Wat is de inline-optimisatie van de compiler? Wanneer gebeurt het en hoe beïnvloedt het de plaatsing van variabelen?
Vertel me over het geheugermodel in Go — hoe is het opgebouwd?
Welke soorten automatische tests hebt u gebruikt?
pakket opslag 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 }
Hoe comfortabel is volledig remote werken?
Kan het maxSegment-algoritme verbeterd worden?
Je hebt een batch van 500 berichten uit Kafka gehaald, maar kunt ze niet opslaan in de database. Wat gebeurt er? Hoe lang kun je deze 500 berichten verwerken?
Waarom heb je Redis gebruikt in plaats van een in-memory cache?
Ben je sinds je indiensttreding in 2022 op dit project, of ben je van projecten veranderd?
Hoeveel mensen zaten er in het team?
Schrijf een functie die controleert of een string een palindroom is. Controleer alleen op alfabetische tekens (a-zA-Za-яА-Я), zonder rekening te houden met hoofdletters of kleine letters (case-insensitive).
Hoe bepaal je bij het werken met kanalen tussen gebufferde en ongebufferde kanalen?
Wat zijn de belangrijkste onderdelen van het Transactional Outbox-systeem?
Welke leveringsgaranties kan een berichtbroker bieden? Hooguit één keer, minstens één keer, precies één keer.
Hoe zijn Swiss Tables georganiseerd in Go?
Wat is DNS en hoe werkt het?
De test op uniforme verdeling slaagt niet: backend[0] verwachtte 5 oproepen, kreeg 10, backend[1] verwachtte 5 oproepen, kreeg 0
Het is nodig om het bibliotheekmodel te beschrijven. Er zijn 3 entiteiten: "Auteur", "Boek", "Lezer". -- Fysiek is er maar één boek en kan alleen bij één lezer zijn. -- Een boek kan meerdere auteurs hebben.
Welke problemen kunnen zich voordoen bij het verzenden van gebeurtenissen naar een berichtbroker en hoe los je ze op?