Golang
როგორ მიუდექით gRPC კონტრაქტების ვერსიების მართვას?
შეასრულეთ საუკეთესო 5 სერვისის მიღება O(N) დროს დამატებითი სტრუქტურის გამოყენებით
Փաստաթղթերի նորացումները գալիս են ծառայությանը message Document { string Url = 1; // Փաստաթղթի URL- ը, նրա եզակի նույնականացուցիչ uint64 PubDate = 2; // հայտարարած հրապարակման ժամանակը uint64 FetchTime = 3; // այս փաստաթղթի նորացման ստացման ժամանակը, կարող է դիտվել որպես տարբերակի նույնականացուցիչ։ Զույգ (Url, FetchTime) եզակի է։ string Text = 4; // փաստաթղթի տեքստը uint64 FirstFetchTime = 5; // սկզբում բացակայում է, պետք է լրացվի } Փաստաթղթերը կարող են գալ ցանկացած կարգով (ոչ այն կարգով, որով դրանք թարմացվել են), և հնարավոր է կրկնօրինակ հաղորդագրություններ: Ելքում անհրաժեշտ է ձևավորել նույն հաղորդագրությունները, բայց ուղղված հետևյալ կանոններին (այստեղ ամեն ինչ վերաբերում է նույն Url դաշտով խմբավորված փաստաթղթերին): Text և FetchTime դաշտերը, ինչպիսին եղել է մինչ այժմ ստացված ամենամեծ FetchTime-ով փաստաթղթում: PubDate դաշտը, ինչպիսին եղել է ամենափոքր FetchTime-ով հաղորդագրությունում: FirstFetchTime դաշտը, հավասար է ամենափոքր FetchTime-ով արժեքին: Յուրաքանչյուր պահի մենք վերցնում ենք PubDate և FirstFetchTime- ը առաջին տարբերակից, որը մինչ այժմ ստացվել է (եթե դրանք դասավորենք FetchTime-ով), և Text- ը վերջինից: Կոդում այս ինտերֆեյսը կարող է իրականացվել այսպես: type Processor interface { Process(doc *Document) (*Document, error) } Այս կոդը կաշխատի ծառայությունում, որը կարդում է հաղորդագրություններ հերթից (Kafka կամ նման), և նաև գրում է արդյունքը հերթին: Եթե Process վերադարձնում է Null, ոչինչ չի գրանցվում հերթում.
გაქვს გამოცდილება gRPC და GraphQL-თან? გვითხარით მათ შესახებ.
სადაგრძელებთ რა ანაზღაურების მოლოდინებს?
იცნობ თუ არა პროდუქტი Loop?
როგორ უყურებ დეჟურტებს? გქონია ასეთი გამოცდილება?
როგორ იყო ზუსტად ოპტიმისტური ბლოკირების გზა Kafka-დან შეტყობინების მიღებიდან მონაცემთა ბაზაში განახლებამდე?
როგორ იღებ დავალებებს, ვინ მოდის?
გქონდათ თუ არა გამოცდილება რელაციური მონაცემთა ბაზებში სვეტების ოპტიმიზაციაში?
როგორ გამოიყენეთ Kafka და RabbitMQ ბროკერებად? რატომ ორი?
როგორ დავპარალელიზოთ ლოგების დამუშავება worker pool-ის გამოყენებით? როგორ მივიღოთ შედეგები goroutine-ებიდან?
რა არის მასივები და slices in Go, რა განსხვავებაა მათ შორის? როგორ მუშაობს append და გაფართოება capacity?
რეპლიკაციის უპირატესობა რა არის? რა ხარჯები მოაქვს მას?
// ჩვენი მეთოდი პროდუქტების შესახებ ინფორმაციის მისაღებად, ეს მეთოდი ძალიან ხშირად იძახება // არის თუ არა პრობლემები ამ კოდში და როგორ შეიძლება მათ გამოსწორება? postgress მონაცემთა ბაზა func (r *ProductRepository) GetProductDetails(ctx context.Context, productIDs []int) []Product { products := make([]Product, 0, len(productIDs)) for _, id := range productIDs { go func(id int) { var p Product query := "SELECT name, price, description FROM products WHERE id = $1" err := r.db.QueryRowContext(ctx, query, id).Scan(&p.Name, &p.Price, &p.Desc) if err != nil { r.logger.Error("error get product", "err", err) return } products = append(products, p) }(id) } return products }
კანალის ბუფერის ზომა რაიმეზე გავლენას ახდენს worker pool-ში?
როდის იწერება გადადებული ფუნქციების არგუმენტები — განსაზღვრის დროს თუ ფუნქციის გამოძახების დროს?
როგორ ურთიერთქმედება გარეგან კონტურის სავაჭრო წარმომადგენლებთან?
რა საშუალებები არსებობს გოში მრავალმხრივობის დროს სინქრონიზაციისთვის?
რა მონაცემებს ინახავდნენ Redis-ში და როგორ ხვდებოდნენ, რომ განცხადებები ცხელი იყო?