Sobes.tech

Golang

Antud on tähemärkide jada. Leidke indeksite i ja j paar (i <= j), mille vahel, kaasa arvatud, ei ole korduvaid tähemärke. Jada "aba" puhul on vastus 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") Jada "abcb" puhul on vastus ?: aba 3 + 2 = 5 abcb 4 (a, b, c, d) + 1 (ab) + 1 (bc) + 1 (cb) + 1 (abc) = 8

213

/* Antud on tähemärkide jada. Leidke indeksipaaride i ja j arv (i <= j), mille vahel ei ole korduvaid tähemärke. Sõne "aba" puhul on vastus 5: võivad olla mitte ainult ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

213

/* Meil on vaja edastada andmeid kindlast allikast kindlale tarbijale. Sel juhul annab allikas väikeseid partii (~ kümneid kirjeid), kuid tarbija töötab optimaalselt suuremate partiidega (~ tuhat kirjet). Tõeline näide - andmete edastamine Kafka tüüpi järjekordadest Clickhouse andmebaasi. Allikas: - Tinglikult lõpmatu. - Allikas ei tagasta kunagi rohkem kui MaxItems kirjeid ühe Next-kutse kohta. - Ühes "sessioonis" (ühe Pipe funktsiooni väljakutse jooksul) tagastab allikas iga kord uued andmed. - Kuid, taaskäivitamisel algab allikas eelmisest "kinnitust" saanud positsioonist, mis on määratletud cookie-ga. Seetõttu peab iga Next-kutse poolt tagastatud väärtus, andmete salvestamise järel vastuvõtjale, olema kinnitatud Commit-kutsega, ja see peab toimuma täpselt samas järjekorras, milles need olid Next-i poolt tagastatud. Vastuvõtja: - Ei saa töödelda rohkem kui MaxItems korraga. Põhitasand: Vajalik on rakendada funktsioon func Pipe(p Producer, c Consumer) error, mis loeb andmeid allikast, grupeerib need buferisse suurusega mitte rohkem kui MaxItems ning salvestab vastuvõtjale, ning uuendab edusamme allikas. Raskused: Next, Process ja Commit meetodid on seotud võrgupäringutega ning võivad töötada üsna kaua. Andmeedastuse kiirendamiseks tuleb lugemis-, kirjutamis- ja kinnitamisprotsessid teha paralleelselt. Nii, et Process või Commit väljakutse ajal jätkub lugemine allikast ning uue buferi koostamine. */

213

Selgitage sõltuvuste pööramise põhimõtet ja miks otse kutsumine repositooriumi meetoditele kasutusjuhtumis rikub SOLID põhimõtteid.

212

Kuidas teostasite tehtud päringute õigsuse testimise ja kinnitamise?

Junior — Middle
211

Kuidas erinevad local, dev, stage, prod keskkonnad?

211

Kuidas kontrollib JWT oma autentsust? Kuidas veenduda, et tokenit ei ole võltsitud?

210

Räägi andmebaasidest — milles oled töötanud ja milles töötad praegu?

210

/* On olemas rakendus mikroteenuste arhitektuuriga. Mikroteenust saab abstraktselt kirjeldada Backend-liidese abil. Mikroteenuse eksemplarile juurdepääsuks saab kasutada juba rakendatud BackendImpl tüüpi. Igal mikroteenusel on mitu tosinat töötavat eksemplari, millest igaüks on kättesaadav oma aadressi addr kaudu. Kuid mikroteenuse üksikud eksemplarid ei ole usaldusväärsed: need võivad kokku kukkuda, olla kättesaamatud või ülekoormatud. Seetõttu peate rakendama tüübi Balancer, mis samuti rakendab Backend-liidest ja teostab kliendi poolel koormuse jaotamist mikroteenuse eksemplarite vahel, valides iga kord **vähemkoormatud** eksemplari. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr sisaldab konkreetse eksemplari ip:port aadressi func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO } var _ Backend = &Balancer{} // addrs sisaldavad kõigi tasakaalustatud eksemplaride aadresse func NewBalancer(addrs []string) *Balancer { // TODO }

209

/* On olemas rakendus mikroteenuste arhitektuuriga. Mikroteenust saab abstraktsustada Backend-liidese kaudu. Selleks, et pääseda ühe mikroteenuse eksemplarile, saab kasutada tüüpi BackendImpl, mis on juba rakendatud. Igal mikroteenusel on mitu kümneid käivitatud eksemplari, millest igaüks on kättesaadav oma aadressi addr kaudu. Kuid, üksikud mikroteenuse eksemplarid ei ole usaldusväärsed: need võivad kokku kukkuda, olla kättesaamatud või ülekoormatud. Seetõttu peate rakendama tüüpi Balancer, mis samuti rakendab Backend-liidest ja teostab klientipoolset koormuse jaotust mikroteenuse eksemplaride vahel, valides iga kord **vähemkoormatud** eksemplari. */

208

Kas teil on meeskonna juhtimise kogemust?

208

Mida lisatakse vastusele, kui aken muutub kehtivaks?

207

Milline on semafori ja pufferkanali piirang paraleelsete päringute piiramiseks?

206

Kui suur oli kõige suurema koormusega teenuse töötlemise maksimaalne päringute arv sekundis (RPS)?

204

Töö vorm: kaugtöö, kontoris või hübriid?

203

Kuidas võrrelda elemente kaardil? Kuidas kontrollida, kas kaks kaarti kattuvad?

203

Mis on JWT token? Millest see koosneb?

203

Kirjeldage algoritmi, kuidas arvutada alamsõnesid, millel on kõik unikaalsed tähemärgid

202

Kirjutage ülesanne Go keeles — praktiline osa (arendaja elust tulenevad probleemid, ilma algoritmideta): täiustada või parandada teenust. Kestus — 1,5 tundi.

202
/11