Sobes.tech

Golang

Եկեք խոսենք միկրոսերվիսային ճարտարապետության մասին: Ի՞նչ էր վերջին ժամանակներում ավելի շատ՝ աջակցություն թե զարգացում։

140

Ինչպե՞ս են մշակվում օգտվողներին առցանց չլինելու ժամանակ ուղարկված հաղորդագրությունները։

139

Ինչպե՞ս ստուգել, որ պատուհանը պարունակում է բոլոր անհրաժեշտ նշանները։

139

/* Մեզ անհրաժեշտ է տվյալներ փոխանցել մի աղբյուրից մի սպառողի։ Աղբյուրն ապահովում է տվյալները փոքր խմբաքանակներով (~տասը գրառում), մինչդեռ սպառողը ավելի արդյունավետ է աշխատում մեծ խմբաքանակներով (~հազար գրառում): Իրական օրինակ է Kafka տիպի հերթերից տվյալների փոխանցումը Clickhouse տվյալների բազա: Աղբյուր: - Հավասարապես անսահմանափակ: - Աղբյուրը երբեք չի վերադարձնում ավելի քան MaxItems գրանցում մեկ Next կանչում: - Մի «սեսիա» (մեկ Pipe ֆունկցիայի կանչ) ընթացքում, աղբյուրը յուրաքանչյուր Next-ով վերադարձնում է նոր տվյալներ: - Սակայն, վերագործարկումից հետո, աղբյուրը սկսում է նախորդ «հաստատված» դիրքից, որը սահմանվում է cookie-ով: Այդ պատճառով, *յուրաքանչյուր* cookie արժեք, որը Next- ը վերադարձնում է, տվյալները պահելուց հետո, պետք է հաստատվի Commit կանչով, նույն հերթականությամբ, ինչպես դրանք վերադարձվել են Next-ով: Սպառող: - Չի կարող միաժամանակ ավելի քան MaxItems մշակել: Պահանջվում է իրականացնել func Pipe(p Producer, c Consumer) error ֆունկցիան, որը կարդում է տվյալները աղբյուրից, խմբավորում դրանք ոչ ավելի, քան MaxItems չափով բուֆերում և պահում է սպառողում, հետո հաստատում է առաջընթացը աղբյուրում: */ const MaxItems = 9999 type Producer interface { // Next վերադարձնում է: // - մի խմբաքանակ տարրեր, որոնք պետք է մշակվեն // - cookie, որը պետք է հաստատել, երբ աշխատանքը ավարտվի // - սխալ Next() (items []any, cookie int, err error) // Commit օգտագործվում է նշելու համար, որ տվյալների խմբաքանակը մշակված է Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

139

Դուք օգտագործե՞լ եք հանրային ամպեր: Եթե այո, ապա որ պրովայդերներ և ծառայություններ?

139

Մեկնաբանեք ձեր վերջին նախագծերը և օգտագործված տեխնոլոգիական ստեքը։

138

4 - արագ ընդունել մուտքային առաջադրանքները, 5 - հարցման դեպքում վերադարձնել առաջադրանքի արդյունքը 6 - եթե արդյունք չկա, վերադարձնել համապատասխան կարգավիճակը /* Պրոցեսոր - ծառայություն, որը իրականացնում է երկարատև, ռեսուրսայինորեն ծանր օպերացիա։ Այն արդեն իրականացված է Ներածական սխալները կապված են բացառապես սխալ մուտքային տվյալների հետ, կայուն են և կրկնակի հարցումը անիմաստ է */ type Processor interface { Process([]byte) ([]byte, error) } /* Մենք ենթադրում ենք, որ ունենք եզակի նույնականացուցիչներ (օրինակ, UUID) սերնդի գեներատոր: Գեներատորը երաշխավորում է, որ կլիշներ չեն լինի */ type ID string // func NewID() ID /* Սկեդյուլատորը ընդունում է առաջադրանքներ հաճախորդներից, դրանք հերթում դնում և սկսում է մշակել: Համոզվում է, որ միաժամանակ չի աշխատում ավելի քան 'threads' մեթոդ Ներկայացնում է, որ կարող է ստուգել առաջադրանքի կարգավիճակը և ստանալ արդյունքը չի բլոկավորում իր հանրային մեթոդները մշակման համար */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // սկզբնական տրամաբանություն return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // իրականացնել return "" }

137

Նկարագրեք maxSegment խնդիրն լուծելու ալգորիթմը

136

Պատմեք, ինչ է տեղի ունենում վերջում — ինչպես ենք մենք հավաքում բուֆերը?

135

Արդյո՞ք ճիշտ է, որ դուք ներկայումս բնակվում եք [քաղաքում] և ձեզ համար հարմար կլինի աշխատել հիբրիդային ձևաչափով՝ գրասենյակ գնալով:

135

Ի՞նչ աշխատավարձի սպասումներ ունեք:

131

Դուք ունե՞ք փորձ բազմասյունային կամ ասինխրոն գործողություններով ծրագրեր գրելիս:

128

Ի՞նչ հակասցենարներ եք գիտակցում միկրոսերվիսների ճարտարապետությունում:

127

Եկեք դիտարկենք օրինակ՝ first=[1,1,2], second=[1,2]: Ձեր ալգորիթմը ինչ պետք է վերադարձնի և արդյոք այն ճիշտ է աշխատում կրկնօրինակների հետ։

127

[անուն] հարցրեց: պահելով տարրի դիրքը, որը փոքր է X-ից, ինչ կլինի դիրքը?

126

Եթե ձեզ առաջարկեն աշխատանք և դուք ընդունեք, որքան շուտ եք պատրաստ սկսելու աշխատանքը?

125

Ինչպես սահմանափակել goroutine-ների քանակը, որպեսզի միաժամանակ չաշխատեն ավելի քան 'threads' Process մեթոդներ? Ով է դուրս բերում առաջադրանքները ալիքից?

124

Կարո՞ղ եք ամբողջ աշխատանքային ժամանակահատվածում ղեկավարական խնդիրներ կատարել։

124

Որ տվյալների բազաներով կամ այլ տվյալների պահեստներով եք աշխատել: Քանի՞ հարցում է վայրկյանում (RPS) գրելու և ընթերցելու համար։

122

Դուք ունե՞ք փորձ տարածված համակարգերի մշակում և աջակցություն ցուցաբերելու ոլորտում:

122
/11