Hogyan kezelik az offline felhasználóknak küldött üzeneteket?
Golang
Használta nyilvános felhőket? Ha igen, mely szolgáltatók és szolgáltatások?
/* Nekünk át kell adni adatokat egy forrásból egy fogyasztónak. A forrás kis csomagokban (~tíz rekord) adja az adatokat, míg a fogyasztó hatékonyabban működik nagyobb csomagokkal (~ezer rekord). Egy valódi példa a Kafka típusú sorokból származó adatok átadása a Clickhouse adatbázisba. Forrás: - Szinte végtelen. - A forrás soha nem ad vissza több mint MaxItems rekordot egy Next hívásban. - Egy "munkamenet" (egy Pipe függvényhívás) során a forrás minden Next hívásnál új adatokat ad vissza. - Azonban, újraindítás után a forrás a korábbi "megerősített" pozícióból indul, amit a cookie határoz meg. Ezért, minden cookie érték, amit a Next visszaad, az adatok tárolása után, a Commit hívással kell megerősíteni, ugyanabban a sorrendben, ahogyan a Next visszaadta. Fogadó: - Egyszerre nem dolgozhat több mint MaxItems-t. A feladat: implementálni a func Pipe(p Producer, c Consumer) error függvényt, ami a forrásból olvas, az adatokat MaxItems méretű bufferbe gyűjti, és a fogadóba menti, azután megerősíti a forrást a haladásról. */ const MaxItems = 9999 type Producer interface { // Next: // - egy csomag elemet ad vissza // - cookie, amit a feldolgozás befejezése után kell megerősíteni // - hiba Next() (items []any, cookie int, err error) // Commit a csomag feldolgozottságának jelölésére szolgál Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Hogyan ellenőrizhető, hogy az ablak tartalmazza az összes szükséges karaktert?
Meséljen a legutóbbi projektjeiről és az alkalmazott technológiai stackről.
4 - gyorsan fogadja a bejövő feladatokat, 5 - kérésre visszaadja a feladat eredményét 6 - ha nincs eredmény, visszaadja a megfelelő státuszt /* Processzor - egy szolgáltatás, amely hosszú ideig tartó, erőforrás-igényes műveletet végez. Már megvalósított A visszaküldött hibák kizárólag helytelen bemeneti adatokkal kapcsolatosak, stabilak, és az újra kérés értelmetlen */ type Processor interface { Process([]byte) ([]byte, error) } /* Feltételezzük, hogy van egy egyedi azonosítók (pl. UUID) generátorunk. A generátor garantálja, hogy nem lesz ütközés */ type ID string // func NewID() ID /* A ütemező fogadja a feladatokat az ügyfelektől, sorba állítja őket, és elindítja a feldolgozást. Biztosítja, hogy egyszerre legfeljebb 'threads' feldolgozási módszer fusson Lehetővé teszi a feladat státuszának ellenőrzését és az eredmény megszerzését nem blokkolja a nyilvános feldolgozó módszereit */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // inicializációs logika return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // megvalósítás return "" }
Írja le a maxSegment feladat megoldási algoritmusát
Mesélj, mi történik végül — hogyan halmozzuk a buffert?
Milyen fizetési elvárásaid vannak?
Jól értjük, hogy jelenleg [város]-ban él, és kényelmes lenne Önnek hibrid formátumban, irodába járással dolgozni?
Van tapasztalata több szálas vagy aszinkron műveletekkel írt programokat?
Milyen anti-patternokat ismer a mikroservice architektúrában?
[név] kérdezte: ha megőrzi egy elem pozícióját, ami kisebb, mint X, akkor mi lesz a pozíció?
Ha felajánlják az állást és elfogadja, mennyi idő alatt lenne készen arra, hogy elkezdjen dolgozni?
Vegyünk egy példát: first=[1,1,2], second=[1,2]. Mit kellene visszaadnia a algoritmusának, és helyesen működik duplikátumokkal?
A terheléselosztónak értenie kell, hogy a backend hibákkal válaszol, és egy bizonyos időtartam alatt meghaladva egy küszöbértéket, kizárni azt az egyensúlyozásból (Circuit Breaker)
Van tapasztalata elosztott rendszerek fejlesztésében és támogatásában?
Milyen adatbázisokkal vagy más adattárolókkal dolgozott? Hány kérés másodpercenként (RPS) írásra és olvasásra?
Végig a munkaideje alatt vezetői feladatokat láttál el?
Mi volt a legnagyobb tárolt adatmennyiség?