Kaip patikrinti, ar langas turi visus reikiamus simbolius?
Golang
Kaip apdorojami pranešimai, siunčiami naudotojams, kurie yra neprisijungę?
Ar naudojote viešąsias debesų paslaugas? Jei taip, kokius teikėjus ir paslaugas?
Papasakokite apie savo neseniai vykdytus projektus ir naudotą technologijų rinkinį.
/* Mums reikia perduoti duomenis iš šaltinio į vartotoją. Šaltinis pateikia duomenis mažais paketais (~dešimt įrašų), o vartotojas efektyviau dirba su didesniais paketais (~tūkstantis įrašų). Realiame pavyzdyje duomenys perduodami iš Kafka tipo eilės į Clickhouse duomenų bazę. Šaltinis: - Praktškai begalinis. - Šaltinis niekada negrąžina daugiau kaip MaxItems įrašų vienu Next iškvietimu. - Vienos "sesijos" (vieno Pipe funkcijos iškvietimo) metu šaltinis kiekvieną kartą grąžina naujus duomenis. - Tačiau, perkraunant sistemą, šaltinis pradeda nuo ankstesnės "patvirtintos" pozicijos, nustatytos cookie. Todėl, *kiekviena* cookie reikšmė, kurią grąžina Next, po duomenų išsaugojimo gavėjo, turi būti patvirtinta su Commit iškvietimu, ta pačia tvarka, kaip ir grąžinta iš Next. Gavėjas: - Negali apdoroti daugiau kaip MaxItems vienu metu. Reikia įgyvendinti funkciją func Pipe(p Producer, c Consumer) error, kuri skaito duomenis iš šaltinio, juos grupuoja į buferį, kurio dydis ne didesnis kaip MaxItems, ir saugo jį gavėjui, po to patvirtina pažangą šaltinyje. */ const MaxItems = 9999 type Producer interface { // Next grąžina: // - paketą elementų apdorojimui // - cookie, kurį reikia patvirtinti, kai apdorojimas baigtas // - klaidą Next() (items []any, cookie int, err error) // Commit naudojamas žymėti duomenų paketą kaip apdorotą Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Aprašykite algoritmą maxSegment užduočiai spręsti
4 - greitai priimti įeinančius uždavinius, 5 - grąžinti uždavinio rezultatą pagal užklausą 6 - jei nėra rezultato, grąžinti atitinkamą būseną /* Procesorius - paslauga, kuri vykdo ilgą, išteklių reikalaujančią operaciją. Ji jau įgyvendinta Klaidų, kurias jis grąžina, yra tik susijusios su neteisingais įvesties duomenimis, yra stabilios ir jų pakartotinis užklausimas yra beprasmiškas */ type Processor interface { Process([]byte) ([]byte, error) } /* Manome, kad turime unikalių identifikatorių generatorių (pvz., UUID). Generatorius garantuoja, kad nebus susidūrimų */ type ID string // func NewID() ID /* Tvarkaraštis priima užduotis iš klientų, juos įkelia į eilę ir pradeda apdorojimą. Užtikrina, kad vienu metu veikia ne daugiau kaip 'threads' metodų Suteikia galimybę patikrinti užduoties būseną ir gauti rezultatą ne blokuoja savo viešųjų metodų apdorojimo */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // inicializacijos logika return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // įgyvendinimas return "" }
Papaskinkite, kas vyksta pabaigoje — kaip mes kaupiasi buferis?
Kokios yra jūsų atlyginimo lūkesčiai?
Ar turite patirties rašant programas su daugiabriauniais ar asinchroniniais veiksmais?
Kokius anti-modelius žinote mikroservice architektūroje?
Apsvarstykime pavyzdį: first=[1,1,2], second=[1,2]. Ką turėtų grąžinti jūsų algoritmas ir ar jis teisingai veikia su dubletais?
Jei jums pasiūlys darbą ir jį priimsite, kaip greitai būsite pasiruošęs pradėti darbą?
Balanceris turi suprasti, kad backendas atsako klaidomis, ir viršijus tam tikrą slenkstį tam tikru laiku, jį išimti iš balansavimo (Circuit Breaker)
[vardas] paklausė: išsaugant elemento, mažesnio nei X, poziciją, kokia bus pozicija?
Ar viso darbo laiko metu užsiėmėte vadovavimo užduotimis?
Su kokiomis duomenų bazėmis ar kitais duomenų saugyklomis dirbote? Kiek užklausų per sekundę (RPS) rašymui ir skaitymui?
Ar teisinga, kad šiuo metu gyvenate [mieste] ir jums būtų patogu dirbti hibridiniu formatu su išėjimu į biurą?
Ar turite patirties kuriant ir palaikant paskirstytas sistemas?
Koks yra didžiausias užklausų skaičius per sekundę, kurį apdorojė labiausiai apkrautas paslauga? Ar teisinga, kad tai yra iki 5–8 tūkstančių užklausų per sekundę?