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-ից հաղորդագրության ստացումից մինչև տվյալների բազայում թարմացում:
Ինչպե՞ս ես ստանում առաջադրանքները, ովքեր են գալիս:
Ի՞նչ տվյալների բազաների հետ եք աշխատել և ինչ SQL հարցումներ եք կարող գրել։
Ինչպե՞ս եք օգտագործել Kafka և RabbitMQ որպես բրոքերներ: Ինչու երկու՞
Ինչպե՞ս կարող ենք լոգերի մշակումը պառլելել worker pool-ով: Ինչպե՞ս ստանալ արդյունքները goroutines-ներից:
Ի՞նչ են Go-ում զանգվածներն ու slices-ը, ինչո՞վ են տարբերվում: Ինչպե՞ս է աշխատում append-ը և capacity-ի ընդլայնումը։
Ի՞նչ է կրկնօրինակի առավելությունը: Ի՞նչ ծախսեր է կրում այն:
Կանալի բաֆերի չափը ինչ-որ բան է ազդում worker pool-ում?
Ինչպես շփվել արտաքին կոնտուրում գտնվող առևտրականների հետ?
Ի՞նչ միջոցներ կան սինխրոնիզացիայի համար Գոյում բազմապտույտության ժամանակ։
Ի՞նչ տվյալներ էին պահում Redis-ում և ինչպես հասկանում էին, որ հայտարարությունները տաք են։
Ինչու օգտագործել ինտերֆեյսներ?
Նայեք վերևի տվյալների բազայի սխեման — ինչ կարելի է ավելացնել, թե ամեն ինչ կարգին է?
Խնդիր՝ ինտերֆեյս error և nil: ինչ կցուցադրվի կոդը տարբեր եղանակներով nil նշանակելու դեպքում։