Golang
Ի՞նչ աշխատանքային ձևաչափ եք դիտարկում՝ հեռավոր, հիբրիդ կամ գրասենյակային։
Ինչ միջոցներով կարելի է ապահովել Kafka-ի մշակումը մինչև 100 հազար հաղորդագրություն մեկ վայրկյանում?
Ինչպե՞ս է կենտրոնական պրոցեսորը կառավարում առաջադրանքների բաշխումը ներքին և գլոբալ հերթերում։
Կարող եք բացատրել sync.Pool օբյեկտի աշխատանքի սկզբունքը և օգտագործումը Go-ում?
Ի՞նչ գործողություններ կան Go-ում slices-ի վրա։
Ինչ է կոչվում տարրերի տեղափոխման գործընթացը մեկ Map-ից մյուսը:
/* Մեզ անհրաժեշտ է տվյալներ փոխանցել որոշ աղբյուրից որոշ սպառողի: Աղբյուրը տվյալները տալիս է փոքր խմբաքանակներով (~տասը գրառում), մինչդեռ սպառողը ավելի արդյունավետ է աշխատում մեծ խմբաքանակներով (~հազար գրառում): Իրական օրինակ է Kafka տիպի հերթերից տվյալների փոխանցումը Clickhouse տվյալաբազա: Աղբյուր: - Հասկանալիորեն անսահմանափակ: - Աղբյուրը երբեք չի վերադարձնի ավելի քան MaxItems գրանցում մեկ Next կանչում: - Մի «սեսիայում» (մեկ Pipe ֆունկցիայի կանչում) աղբյուրը յուրաքանչյուր Next կանչում նոր տվյալներ է վերադարձնում: - Սակայն, վերագործարկումից հետո, աղբյուրը սկսում է նախորդ «հաստատված» դիրքից, որը նշվում է cookie-ով: Այդ պատճառով, յուրաքանչյուր cookie արժեք, որը Next-ը վերադարձնում է, տվյալները պահելուց հետո, պետք է հաստատվի Commit կանչով, նույն հերթականությամբ, ինչպես դրանք վերադարձվել էին Next-ով: Սպառող: - Չի կարող միաժամանակ ավելի քան MaxItems մշակել: Հիմնական մակարդակ: Պետք է իրականացնել func Pipe(p Producer, c Consumer) error ֆունկցիան, որը կարդում է տվյալները աղբյուրից, խմբավորում դրանք ոչ մեծ, MaxItems-ից ոչ ավելի մեծ բուֆերներում և պահում է սպառողում, հետո հաստատում է առաջընթացը աղբյուրում: Ավելորդ բարդություն: Next, Process և Commit մեթոդները կապված են ցանցային կանչերի հետ և կարող են բավական երկար տևել: Արագացման համար անհրաժեշտ է հոսքերը հորիզոնականացնել՝ ընթերցում, գրառում և առաջընթացի հաստատում: Որպեսզի, Process կամ Commit կանչի ժամանակ, ընթերցումը աղբյուրից և նոր բուֆերի ձևավորումը շարունակվի: */ 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 }
Ինչպե՞ս է իրականցված select գործողությունը Go լեզվում և ինչպես է այն աշխատում ալիքների հետ։
Կարո՞ղ է գորուտինայի կատարմանը դադարեցնել այնպես, որ այն բլոկավորվի կոնկրետ համակարգային թելում:
Go լեզուն ունի ինտեգրված աջակցություն զանգվածների համար:
Որո՞նք են Go լեզվի ամփոփման մեխանիզմները, որոնք նախատեսված են նշանների կամ տոքենների ներկայացման համար։
Ի՞նչ է նշանակում զրո արժեքը կտրվածքի համար ծրագրավորման լեզվում։
Ինչ մեթոդներ կարելի է օգտագործել տվյալների բազան բաժանելու համար շարդինգի միջոցով։
Որ տվյալների տեսակները հարմար են Map տվյալների կառուցվածքում որպես բանալի:
Կարող եք բացատրել օպերացիոն համակարգում առաջադրանքների պլանավորողի գործառնական մեխանիզմը?
Կարող եք բացատրել հեշ աղյուսակի ներքին կառուցվածքը և աշխատանքը?
Դուք ունե՞ք փորձ՝ կապված ձեր նախագծերում Go Modules-ի օգտագործման հետ կապված բարդ խնդիրների լուծման հետ։
Ի՞նչ գործիքներ կամ գրադարաններ եք նախընտրում օգտագործել ավտոմատ թեստավորման համար ձեր աշխատանքի մեջ։
Ի՞նչ տվյալների փոխանցման պրոտոկոլներ եք օգտագործել ծրագրի հաճախորդային մասի հետ փոխազդեցության համար:
Մյուտեքս մեխանիզմը ապահովո՞ւմ է խիստ կարգավորում հոսքերի համար ընդհանուր ռեսուրսներին մուտք գործելիս՝ ընթերցանության և գրառման համար։