Sobes.tech

Golang

4 - kiiresti vastu võtta sisenevad ülesanded, 5 - tagastada ülesande tulemus päringu korral 6 - kui tulemust pole, tagasta sobiv staatus /* Protsessor - teenus, mis teostab pikka aega kestvat, ressursimahukat operatsiooni. See on juba rakendatud Tagastatavad vead on ainult seotud vale sisendandmetega, on stabiilsed ja nende korduv taotlemine on mõttetu */ type Processor interface { Process([]byte) ([]byte, error) } /* Oletame, et meil on unikaalsete identifikaatorite (näiteks UUID) generaator. Generator tagab, et kokkupõrkeid ei toimu */ type ID string // func NewID() ID /* Ajakava võtab klientidelt ülesandeid, paneb need järjekorda ja alustab töötlemist. Tagab, et samaaegselt töötab mitte rohkem kui 'threads' meetodit Võimaldab kontrollida ülesande staatust ja saada tulemust Ei blokeeri oma avalikke töötlusmeetodeid */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // algusloogika return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // teostamine return "" }

141

Rääkigem mikroteenuste arhitektuurist. Mis on viimasel ajal olnud rohkem: tugi või arendus?

140

Kuidas töödeldakse kasutajatele offline saadetud sõnumeid?

139

Kuidas kontrollida, kas aken sisaldab kõiki vajalikke märke?

139

/* Meil tuleb andmed edastada ühest allikast ühe tarbijani. Allikas tagastab andmeid väikestes osades (~kümme kirjet), samas kui tarbija töötab tõhusamalt suuremate osadega (~tuhat kirjet). Reaalne näide on andmete edastamine Kafka-tüüpi järjekordadest Clickhouse andmebaasi. Allikas: - Peaaegu lõpmatu. - Allikas ei tagasta kunagi rohkem kui MaxItems kirjet ühes Next-kutses. - Ühes "sessioonis" (ühe Pipe funktsiooni kutses) tagastab allikas iga Next-kutses uusi andmeid. - Kuid pärast taaskäivitust algab allikas eelmisest "kinnitust" saanud positsioonist, mis on määratud cookie-ga. Seetõttu, *iga* cookie väärtus, mille Next tagastab, pärast andmete salvestamist vastuvõtjasse, tuleb kinnitada Commit-kutsuga, samas järjekorras, nagu need on tagastatud Next poolt. Vastuvõtja: - Ei saa töödelda rohkem kui MaxItems korraga. Vajalik on implementeerida funktsioon func Pipe(p Producer, c Consumer) error, mis loeb andmeid allikast, rühmitab need mahuni, mis ei ületa MaxItems, ja salvestab vastuvõtjasse, pärast mida kinnitab edusamme allikas. */ const MaxItems = 9999 type Producer interface { // Next tagastab: // - partii elemente töötlemiseks // - cookie, mida tuleb kinnitada, kui töötlemine on lõppenud // - viga Next() (items []any, cookie int, err error) // Commit kasutatakse andmepartii märkimiseks töödelduks Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

139

Kas te olete kasutanud avalikke pilvemooduleid? Kui jah, millised teenusepakkujad ja teenused?

139

Rääkige meile oma viimastest projektidest ja kasutatud tehnoloogilisest virnast.

138

Kirjeldage algoritmi maxSegment ülesande lahendamiseks

136

Rääkige, mis lõpuks toimub — kuidas me kogume pufferit?

135

Kas see õige, et te praegu elate [linnas] ja teile oleks mugav töötada hübriidformaadis koos kontorisse minekuga?

135

Kuidas piirata goroutine'ide arvu nii, et samaaegselt ei tööta rohkem kui 'threads' meetodit Process? Kes tõmbab ülesandeid kanalist?

130

// kood funktsioonile best() // vigade käsitlemine, kui backend ei ole saadaval

129

Kas teil on kogemusi mitme lõimega või asünkroonsete operatsioonidega programmide kirjutamisel?

128

Vaatame näidet: first=[1,1,2], second=[1,2]. Mida peaks teie algoritm tagastama ja kas töötab õigesti duplikaatidega?

127

Milliseid anti-mustreid teate mikroteenuste arhitektuuris?

127

[nimi] küsis: säilitades elemendi positsiooni, mis on väiksem kui X, mis positsioon saab olema?

126

Kas kogu tööaja jooksul teinud juhtimisülesandeid?

126

// kood funktsioonile best() // vigade käsitlemine, kui backend ei ole saadaval

125

Kui teile pakutakse tööd ja te seda acceptite, kui kiiresti olete valmis tööle asuma?

125
/11