Golang
Mi az a csatorna a Go-ban, és hogyan továbbít adatokat?
Hogyan kommunikáljunk a szolgáltatások között — gRPC, REST vagy valami más?
Dolgoztál már Dockerrel, Kubernetes-szel? Beszéltél a pipeline-ok építéséről?
tárolási csomag 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 }
Mi a különbség a verseny és a párhuzamosság között?
Hogyan biztosított a biztonság a REST és Kafka esetében? Mi az a HTTPS/TLS?
Beszélj a select operátorról, mit csinál és mire való.
Hogyan sikerült növelni az integráció megbízhatóságát az orvosi aggregátorral, és csökkenteni az adatvesztést 2%-ról 0,01%-ra? És nem túl sok ez — 2% adatvesztés az orvostudományban?
grpc-server AddItemAndOrder módszer megvalósítása: 1. Termékek hozzáadása a kosárhoz 2. Kötelező tájékoztatni a potenciális fogyasztókat a kosár létrehozásáról üzenetközvetítőn keresztül. 3. A kosár összetételének módosításakor újraszámolandó a basket.Total = összeg(mennyiség * ár) 4. A kosár összes elemének egyedinek kell lennie a ProductID kulcs szerint 5. A kosár megrendeléséhez meg kell változtatni annak státuszát ordered-re 6. Már megrendelt kosarakban nem lehet módosításokat végrehajtani Van egy táblázat, ahol minden oszlop egész típusú. A kódban van egy lekérdezés: select * from t1 where a > ? and b = ? and c != ? order by a;
Miért jobb enum-ként csinálni az állapotot, és mikor jobb stringet használni?
Milyen problémát old meg általában a Redis?
A HeadHunter napi 16 ezer önéletrajz megtekintési korlátja van, és egy széles szűrő mindent elfogy — hogyan oldjuk meg?
Hogyan tárolódnak az adatok az adatbázisban?
Két táblád van: orders (rendelések): order_id (rendelés egyedi azonosítója) customer_id (ügyfél azonosítója) order_date (rendelés dátuma) total_amount (rendelés összértéke) customers (ügyfelek): customer_id (ügyfél azonosítója) customer_name (ügyfél neve) city (ügyfél városa) Feladat: Írjon SQL lekérdezést, amely a következő adatokat adja vissza: Az ügyfelek listája (név és város), akik összesen több mint 1000 dollár értékben adtak le rendeléseket. Minden ilyen ügyfél esetében mutassa meg az összes rendelés összegét.
API-tervezési alapelvek
Azt mondtad, hogy 4 év tapasztalatod van, de 2024-ben végeztél az egyetemen. Egyidejűleg tanultál az utolsó évben és dolgoztál?
Van kérdése hozzám?
Mi a különbség a TCP és az UDP között? Milyen használati esetek vannak?
Hogyan lehet hatékonyan összefűzni a stringeket Go-ban? Milyen lehetőségek vannak?
Készen állsz most indulni, vagy vannak terveid/pihenés?