Golang
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 }
Tarixiy ma'lumotlarni yuklash va qayta hisoblash uchun patch jarayonini amalga oshirishda, tarixiy ma'lumotlarni qayta hisoblash nima anglatadi? Nega har kechasi qayta hisoblash kerak?
Go'da panika nima?
Bir muammo bilan qolganda va muammoni qanday hal qilishni bilmasang, shunday vaziyatni esla
WithCancel, WithTimeout va WithDeadline ning foydalanish misollarini keltira olasizmi?
Qaysi mahsulot metrikalarini yig'ayapsiz?
Interpretatsiya qilingan til (Python) va kompilyatsiya qilingan til (Go) o'rtasidagi farq nima? Tanlovga qanday omillar ta'sir qiladi?
sync.Map da elementlar sonini (len) olish uchun nima uchun metod yo'q?
/* Mikroservis arxitekturasi bilan ilova mavjud. Mikroservis Backend interfeysi yordamida abstraktsiya qilinishi mumkin. Mikroservisning bir nusxasiga kirish uchun, allaqachon amalga oshirilgan BackendImpl turidan foydalanishingiz mumkin. Har bir mikroservisda bir necha o'nlab ishga tushirilgan nusxalar mavjud, ularning har biri o'z manzili addr bilan kirish mumkin. Biroq, mikroservisning alohida nusxalari ishonchli emas: ular yiqilishi, kirish imkoniyati bo'lmasligi yoki ortiqcha yuklangan bo'lishi mumkin. Shuning uchun, siz klient tomonidagi yukni muvozanatlash uchun Balancer turini amalga oshirishingiz kerak, u ham Backend interfeysini amalga oshiradi va har safar **eng kam yuklangan** nusxani tanlaydi. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr, muayyan nusxaning ip:port manzili func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO } var _ Backend = &Balancer{} // addrs, yuk muvozanatlashadigan barcha nusxalarning manzillarini o'z ichiga oladi func NewBalancer(addrs []string) *Balancer { // TODO }
Siz ishlagan eng katta loyihada nechta odam ishtirok etdi? Oltitadan kam, o'nlarcha, yuzlarcha?
API Gateway nima nima va nima uchun kerak?
Arxitektura bilan ishlagansizmi? Bir necha arxitektura yechimlarini aytib bering
Ko'rsatkich ham stekga, ham yong'inga ko'rsatishi mumkinmi?
Sizda tahlilchi bo'ldingizmi, ya'ni siz TЗ bo'yicha ishlayapsizmi? Bu qanday ko'rinardi?
Siz uchun ofis/hibrid ish formatining qanchalik qabul qilinadigan bo'lishi mumkin? (ofis [joylashuv] orasida)
Loyihada ma'lumotlarning mosligi qanday ta'minlanadi?
Agar 5 trillion goroutine ishga tushirilsa nima bo'ladi? Qanday optimallashtirish mumkin?
O'zingizni o'rta yoki katta dasturchi sifatida pozitsiyalaysizmi?
Xaritada ajratilgan xotira yetarli bo'lmaganda nima bo'ladi? Overflow-buket nima va qachon yaratiladi?
Go'da kontekst orqali ob'ektni o'tkazishda qanday kamchiliklar bor?