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
Golang
/* 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") */
/* 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. */
Selgitage sõltuvuste pööramise põhimõtet ja miks otse kutsumine repositooriumi meetoditele kasutusjuhtumis rikub SOLID põhimõtteid.
Kas on mingi tähtaeg?
Kuidas teostasite tehtud päringute õigsuse testimise ja kinnitamise?
Kuidas erinevad local, dev, stage, prod keskkonnad?
Kuidas kontrollib JWT oma autentsust? Kuidas veenduda, et tokenit ei ole võltsitud?
Räägi andmebaasidest — milles oled töötanud ja milles töötad praegu?
/* 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 }
/* 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. */
Kas teil on meeskonna juhtimise kogemust?
Mida lisatakse vastusele, kui aken muutub kehtivaks?
Milline on semafori ja pufferkanali piirang paraleelsete päringute piiramiseks?
Kui suur oli kõige suurema koormusega teenuse töötlemise maksimaalne päringute arv sekundis (RPS)?
Töö vorm: kaugtöö, kontoris või hübriid?
Kuidas võrrelda elemente kaardil? Kuidas kontrollida, kas kaks kaarti kattuvad?
Mis on JWT token? Millest see koosneb?
Kirjeldage algoritmi, kuidas arvutada alamsõnesid, millel on kõik unikaalsed tähemärgid
Kirjutage ülesanne Go keeles — praktiline osa (arendaja elust tulenevad probleemid, ilma algoritmideta): täiustada või parandada teenust. Kestus — 1,5 tundi.