Golang
Ispričajte o svom iskustvu, sve što smatrate potrebnim i relevantnim za ovu poziciju.
Da li ste čuli nešto o obrascu Transactional Outbox?
Koja je bila najveća greška?
Kako je organizovan prenos podataka između različitih servisa u infrastrukturi? Kroz brokera, direktno, gRPC?
Napišite zadatak na jeziku Go — praktični deo (problemi iz života programera, bez algoritama): poboljšajte ili ispravite servis. Trajanje — 1,5 sati.
Koja je prosečna algoritamska složenost čitanja iz hash tabele?
Koliko Postgres instanci ste imali na projektu?
Po kojim kriterijumima su deljene grupe potrošača?
Koje interfejse biste implementirali?
Kako garantovati isporuku događaja pri nestabilnoj mreži (mreža može prekinuti, događaji ne smeju biti izgubljeni)?
Da li je sakupljač smeća u Go blokirajući ili ne? Da li je njegov efekat vidljiv u produkciji?
Koja je razlika između Kafka i RabbitMQ?
Koje alate za vizualizaciju arhitektonskih šema si koristio i za koje slučajeve?
Dizajn skalabilnog sistema za razmenu poruka koji podržava 150 miliona korisnika, 75 miliona DAU, 225 miliona MAU, 1.2M peak QPS za čitanje / 300k za pisanje, 5 miliona istovremenih korisnika, 60 PB novih podataka godišnje, rast od 30% godišnje, SLA 99.95%, p99 <200 ms za čitanje, <300 ms za pisanje. KONTEKST Potrebno je dizajnirati distribuirani sistem za razmenu poruka, sličan WhatsApp-u, koji podržava 1:1 i grupne razgovore, obezbeđuje dostavu poruka, prikazuje online statuse korisnika i omogućava prenos multimedijalnih fajlova (fotografije, video, audio). Sistem mora obezbediti visoku dostupnost i nisku latenciju, podržavati visok paralelizam i skalirati na globalnom nivou. FUNKCIONALNI ZAHTEVI - Podrška za lične (1:1) i grupne razgovore sa mogućnošću dodavanja/uklanjanja učesnika - Slanje i primanje tekstualnih poruka i multimedijalnih fajlova Nije jasno implementiran mehanizam end-to-end enkripcije na nivou servisa ili klijenata, osim opšte napomene. - Nedostaje eksplicitni opis sharding-a i replikacije baza podataka po chat_id ili user_id radi skalabilnosti i otpornosti na greške. - Nema jasnog komponenta ili mehanizma za offline sinhronizaciju poruka i potvrda isporuke. - Nije jasno kako se vrši balansiranje opterećenja između baza podataka i servisa, posebno u vršnim periodima. **Kritične tačke za razmatranje:**
Да ли имаш искуства са CI/CD? Шта си радио?
Šta misliš, koji je problem sa rešenjem u memoriji? Šta će se desiti ako ponovo pokreneš servis?
Ispričaj mi o svom iskustvu sa Go — da li sam dobro shvatio da imaš 6,5 godina iskustva?
Da li ste koristili Keycloak za autorizaciju ili svoje rešenje?
Na kojim indeksima ste se oslanjali na poslu? Šta ste primenjivali u praksi? Na Wildberries?
Имате ли искуства у подршци или развоју расподељених система?