Golang
Ce strategie de caching să aleg — cache-aside sau write-through — ținând cont de pattern-ul de comportament al utilizatorilor în verificarea stadiului comenzii?
Care sunt regulile de lucru cu canalele pe care trebuie să le cunoști în timpul dezvoltării (închis, deschis, când ce se poate face)?
Scrieți o problemă în limbajul Go — secțiunea practică (probleme din viața dezvoltatorului, fără algoritmi): îmbunătățiți sau corectați un serviciu. Durata — 1,5 ore.
Dacă utilizatorii sunt nemulțumiți de schimbarea modelului de monetizare, dar afacerea are un plan clar — ce să facă?
Programare live: semafor — cum funcționează și implementarea pe baza unui canal cu buffer.
Ce metodologie folosiți: Scrum, Kanban sau o combinație?
Care este limitarea unui semafor și a unui canal cu buffer ca soluții pentru limitarea solicitărilor paralele?
Ați mai auzit înainte despre [companie] sau despre produsele noastre?
Ce sunt estimările?
Cu ce nu ai vrea să te confrunți deja la serviciu?
Care este nivelul tău — middle, middle+, senior?
Analiza codului în Go: ce face codul, ce probleme există?
La ce grup (mutabil/imunabil) aparține interfața în Go?
Ce sunt tokenurile de autorizare și care sunt?
Care este diferența dintre bazele de date relaționale și NoSQL?
Proiectarea unui sistem de mesagerie scalabil care suportă 150 milioane de utilizatori, 75 milioane DAU, 225 milioane MAU, 1,2 milioane QPS de citire / 300k de scriere în vârf, 5 milioane de utilizatori simultani, 60 PB de date noi pe an, creștere de 30% anual, SLA 99,95%, p99 <200 ms pentru citire, <300 ms pentru scriere. CONTEXT Este necesar să proiectăm 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 permite transferul de fișiere multimedia (poze, videoclipuri, audio). Sistemul trebuie să asigure disponibilitate ridicată și latență scăzută, să suporte un paralelism înalt și să scaleze la nivel global. CERINȚE FUNCȚIONALE - Suport pentru chat-uri personale (1:1) și de grup cu posibilitatea de a adăuga/elimina participanți - Trimiterea și primirea de mesaje text și fișiere multimedia Nu se observă o implementare clară a mecanismului de criptare end-to-end la nivel de servicii sau clienți, în afară de o notă generală. - Lipsește o descriere explicită a sharding-ului și replicării bazelor de date după chat_id sau user_id pentru scalabilitate și toleranță la defecte. - Nu există un component sau mecanism clar pentru gestionarea sincronizării offline a mesajelor și a 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:**
Enumerați stiva principală în Go
Ați fost vreodată nevoit să înregistrați orele, să urmăriți timpul într-un sistem?
""" Locurile din cinematograf sunt aranjate într-un singur rând. Un spectator care tocmai a venit alege un loc, pentru a sta cât mai departe de ceilalți spectatori din rând. Adică, distanța de la acel loc, unde va sta spectatorul, până la cel mai apropiat spectator trebuie să fie maximă. Se garantează că întotdeauna există locuri libere în rând și că cel puțin un spectator deja stă. Scrieți o funcție care, dat fiind un rând de locuri (un array de zerouri și unu), să returneze distanța (numărul de spații între scaune) de la locul ales până la cel mai apropiat spectator. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }
Ce este blocarea concurentă?