Golang
Pastāstiet par in-memory pozīciju un bilancu glabāšanu ar sinhronisku saglabāšanu no kopsavilkuma.
Kas ir Stop the World Go?
Kas ir kanāls Go un kā tas pārsūta datus?
Kā sazināties starp pakalpojumiem — gRPC, REST vai kaut kas cits?
Vai esi strādājis ar Docker, Kubernetes? Vai runāji par pipeline būvniecību?
pakuotes glabāšana importēt ( "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 }
Kā konkurētspēja atšķiras no paralēlās?
Kā tiek nodrošināta drošība REST un Kafka? Kas ir HTTPS/TLS?
Pastāstiet par select operatoru, ko tas dara un kam tas ir nepieciešams.
Kā izdevās uzlabot medicīnas agregatora integritāti un samazināt datu zudumu no 2% līdz 0,01%? Vai tas nav pārāk daudz — 2% zaudētu datu medicīnā?
grpc-server AddItemAndOrder metodi īstenošanai: 1. Pievienojiet preces grozam 2. Ir obligāti jāinformē potenciālie patērētāji par to, ka grozs ir izveidots, izmantojot ziņojumu brokeri. 3. Mainot groza sastāvu, jāveic pārskaitījums basket.Total = summa(skaits * cena) 4. Visiem groza elementiem jābūt unikāliem pēc atslēgas ProductID 5. Lai noformētu pasūtījumu, ir jāmaina tā statuss uz ordered 6. Jau pasūtītajos grozos izmaiņas veikt nav iespējams Ir tabula, kurā visas kolonnas ir veseli skaitļi. Kodā ir vaicājums: select * from t1 where a > ? and b = ? and c != ? order by a;
Kāpēc ir labāk veidot statusu kā enum un kad ir labāk izmantot string?
Kādu problēmu kopumā risina Redis?
HeadHunter ir dienas limits – 16 tūkst. CV apskates, un plašs filtrs visu ko ēd — kā to atrisināt?
Kā dati tiek glabāti datu bāzē?
Jums ir divas tabulas: orders (pasūtījumi): order_id (unikāls pasūtījuma identifikators) customer_id (klienta identifikators) order_date (pasūtījuma datums) total_amount (kopējā pasūtījuma summa) customers (klienti): customer_id (klienta identifikators) customer_name (klienta vārds) city (klienta pilsēta) Uzdevums: Rakstiet SQL vaicājumu, kas atgriezīs šādus datus: Klientu saraksts (vārds un pilsēta), kuri ir veikuši pasūtījumus par kopējo summu vairāk nekā 1000 dolāru. Katram 1. punktā minētajam klientam parādiet visu pasūtījumu kopējo summu.
API dizaina principi
Tu teici, ka tev ir 4 gadu pieredze, bet universitāti pabeidzi 2024. gadā. Vai mācījies pēdējā kursā un strādāji tajā pašā laikā?
Vai jums ir jautājumi man?
Kāda ir atšķirība starp TCP un UDP? Kādi ir lietošanas gadījumi?