Golang
Каржылык күтүүлөрүңүз кандай? Минимум жана ыңгайлуу деңгээлди белгилеңиз.
Кайчаганда жарамсыз билдирүүлөрдү өзүнчө темага которуп, аларды өндүрдүңүзбү же кандай? Мындай билдирүүлөр көп болдубу?
Грузияга көчүүгө даярсыңбы?
Go-дөгү rune эмне?
Redis конфигурациясы кай сакталат, эгер алдаган машинада болсо?
Иштеги танд канчалык маанилүү? Мааш талаптары?
Make аркылуу алдын ала бөлүнгөн эс менен эң жакшы slice кантип түзүү керек? Неге алдын ала капаситетти көрсөтүү керек?
Бир датасы барбы?
Өзүңүздүн кесиптик тажрыйбаңыз жана иш издөөгө эмне үчүн чечим кабыл алгандыгыңыз жөнүндө айтып бериңиз.
// Кодду туура кылуу үчүн, суроолор атаандаштыкташуулары керек жана жооп коду көрсөтүлүшү керек // жана ката болсо, аны логго жазып, иштетүүнү улантыңыз package main import "net/http" var addrs = []string{"[link]"} func main() { for _, url := range addrs { resp, err := http.Get(url) if err != nil { log.Error(err) continue } // Эгер керек болсо, resp менен иштөө } }
Элементти издөөнүн алгоритмин бинара издөөнүн дарагында мисал менен көрсөтүңүз (түйүн ачкычы менен салыштыруу, солго/оңго кыймыл).
HeadHunter webhook аркылуу жооп жөнөтө алат, ал эми Avito мындай кыла албайт — өзүңүз барып иштетишиңиз керек. Муну кантип иштетсе болот?
Жаңы жумуш ордуңуздан эмне күтөсүз?
VACUUM FULLке альтернатива катары кандай билесиз, ал дагы орун бошотот, бирок катуу бөгөттөө жок?
Резюмеңдө Golangда 3 микросервиске коштуларың жазылган. Маалыматтарды нормалдаштыруу жана текшерүүдөн тышкары дагы эмне кылдың? Бул колдоо беле же өнүктүрүүбү?
Бардык сатуучулардын тизмесин жана гана блоктогон сатууучулардын тизмесин камткан таблица болсо, бир суроо менен блоктогон эмес сатууучулардын тизмесин кантип аласыз?
Оптимисттик блоктоо деген эмне?
ClickHouse ба колонкалардын ортосундагы байланышты кантип табат?
Amazon Athenaда бөлүмдөш кандай негизде жасалды?
пакет сактагыч импорт ( "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 }