Golang
În ce limbaj de programare scrieți?
De ce ai părăsit [compania]?
Vorbește despre resp.Body.Close() — de ce este necesar și de ce ai pus un buffer de 10?
Unde și cum se măsoară latența în sistem?
Vorbește despre canalele în Go: ce sunt, ce se află în interior, ce se va întâmpla cu un canal cu buffer de 5 elemente când se scriu 5 valori?
Ai în prezent alte interviuri sau oferte?
Vrem să obținem doar utilizatori activi, dar ce e rău cu filtrul isActive?
Proiectați o aplicație de mesagerie scalabilă, suportând 150 milioane de utilizatori, cu 75 milioane DAU, 225 milioane MAU, 1.2M citiri / 300k scrieri QPS, 5 milioane de utilizatori simultani, 60 PB de date noi pe an, creștere de 30% pe an, P99 <200 ms pentru citire, <300 ms pentru scriere, SLA 99.95%. CONTEXT Este necesar să proiectați un sistem de mesagerie distribuit, similar cu WhatsApp, care suportă chat-uri 1:1 și de grup, asigură livrarea mesajelor, afișează statusurile online ale utilizatorilor și transmite fișiere multimedia (poze, video, audio). Sistemul trebuie să asigure disponibilitate ridicată și latență scăzută, să suporte paralelism ridicat și să fie scalabil la nivel global. CERINȚE FUNCȚIONALE - Suport pentru chat-uri personale (1:1) și de grup cu posibilitatea de a adăuga/remova participanți - Trimiterea și primirea de mesaje text și fișiere multimedia Cerinte non-funcționale: - Fără implementare explicită a mecanismului de criptare end-to-end la nivel de servicii sau clienți, în afară de o notare generală. - Fără descriere explicită a sharding-ului și replicării bazelor de date pe chat_id sau user_id pentru scalabilitate și toleranță la defecte. - Fără componentă sau mecanism explicit pentru sincronizarea offline a mesajelor și confirmărilor de livrare. - Nu este clar cum se face echilibrarea încărcăturii între baze de date și servicii, mai ales în perioadele de vârf. **Puncte critice de luat în considerare:** (Diagrama arată o arhitectură cu Load Balancer, API Gateway, Message Queue, Service, Cache, Database, Object Storage și CDN)
Ce este contextul în Go? Care este diferența dintre context.WithTimeout și context.WithDeadline?
Vorbește-mi despre educația ta și drumul în dezvoltare. Nu ai obținut o formare necorespunzătoare, nu-i așa?
Cum să sincronizați lucrătorii prin PostgreSQL (lock distribuit în baza de date)?
Dacă o sarcină de acest gen ar ajunge acum într-un sprint, de unde ai începe și cum ai gestiona incertitudinea?
Impresia generală a interviului, nivelul candidatului, recomandări
Ce sunt nivelurile de izolare a tranzacțiilor? Pe care le-ai folosit?
Ce instrumente și tehnologii folosiți în munca dvs.? Care este nivelul dvs. de experiență cu Docker și Kubernetes?
Care este diferența dintre servicii și microservicii?
Ce este întârzierea consumatorului și care a fost la tine?
Există PFA sau alte forme de persoane juridice?
Ce metodă HTTP, conform specificației, se folosește pentru înlocuirea completă a unei resurse și este idempotentă? PATCH POST PUT DELETE
Ce va fi important pentru tine atunci când alegi un nou loc de muncă?