Golang
Өзгөрмөлөр үчүн эс тутум кайдан чыгат? Эс тутумду бөлүүчү эмне?
Кайсы маалыматтар базаларында иштедиңиз жана кайсы деңгээлде? PostgreSQL, Redis, ClickHouse тууралуу көбүрөөк маалымат.
Linux консолун билесиңби?
Күн сайын кайсы команда тизмесин колдонуп жатасың?
Таза структурасы struct{} жөнүндө айтып бер. Колдонуу учурлары, канча жаддыкты ээлейт?
PostgreSQL транзакциянын изоляция деңгээлдерин билесизби?
CAP-теоремеси жөнүндө мага айтып бер
Nil sliceке append кылса паника болот беле?
Неге кеттиңиз?
Жаңы жумушка киргенде сен үчүн кызыл желе эмне? Мурас кодго кандай карайсың?
Go'догу Garbage Collector кантип иштейт?
Кайсы маалыматтар базаларында иштедиңиз? ORM аркылуубы же нативдүү суроолор мененби? Кайсы нативдүү суроолорду жаздыңыз жана кайсы деңгээлде?
Коддоо inline-оптимизациясы эмне? Канча убакытта болот жана ал өзгөрмөлөрдүн жайгаштырылышына кандай таасир этет?
func merge(chs ...<-chan int) <-chan int { }
Маалыматтар базаларында индекстеүү деген эмне, эмне үчүн керек, анын артыкчылыктары жана кемчиликтери кандай.
Go'догу эс тутуму моделин баянда — ал кандайча түзүлгөн?
Сиз скролдун тереңдигин чектедиңизби? Сиз башлангыч маалымат жүктөө үчүн bulk колдонгондугуңузду айттыңыз, бирок баа же продукттун аты өзгөргөндө инкременталдык жаңыртууларды кантип иштеттиңиз? Elasticsearch менен синхрондоштурууну кантип камсыз кылдыңыз?
Жалдоочу приоритеттерди түшүнбөйт, жөн гана айтат '300 талапкер керек' — муну кантип иштетсе болот?
пакет сактагыч импорт ( "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 }
Goда кандай көп тапшырма түрү колдонулат? Go планировщику goroutines-ларды кантип үзөт?