Pytania rekrutacyjne System Design (Senior) z odpowiedziami
75 pytań na rozmowę rekrutacyjną z tematu System Design (Senior) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.
Rozwiąż ten test- 1.Co mówi twierdzenie CAP?
- 2.Użytkownik zaktualizował profil, odświeżył stronę i zobaczył stare dane. Która gwarancja została naruszona?
- 3.Czym grozi wybór klucza shardowania „według daty utworzenia”?
- 4.Po co consistent hashing przy dodawaniu węzłów cache?
- 5.Po co umieszczać kolejkę wiadomości między API a obsługą ciężkich zadań?
- 6.Dlaczego konsumenci kolejki z dostarczaniem „at-least-once” muszą być idempotentni?
- 7.Czym jest backpressure?
- 8.Czym fan-out on write różni się od fan-out on read w feedzie sieci społecznościowej?
- 9.Jak zapewnić poprawną kolejność wiadomości w czacie?
- 10.Jakie komponenty są zwykle potrzebne w architekturze komunikatora?
- 11.Jak skalować serwery WebSocket poziomo?
- 12.Jak zaimplementować status „online” dla milionów użytkowników?
- 13.Czym OT różni się od CRDT we wspólnej edycji?
- 14.Jak działa adaptacyjny streaming wideo (HLS/DASH)?
- 15.Jak zaprojektować serwowanie obrazków użytkowników w różnych rozmiarach?
- 16.Jak zaimplementować rate limiting, jeśli API działa na 20 serwerach?
- 17.Do czego przydaje się filtr Blooma?
- 18.Jak generować krótkie linki w serwisie skracania URL?
- 19.Jak skalować podpowiedzi wyszukiwania (typeahead) do milionów żądań na sekundę?
- 20.Jakie problemy pojawiają się przy działaniu serwisu w kilku regionach (active-active)?
- 21.Czym nagłówek
Vary: User-AgentlubVary: Cookiegrozi dla CDN? - 22.Czym jest cache stampede i jak mu zapobiec?
- 23.Czym różnią się strategie cache-aside, write-through i write-back?
- 24.Kiedy renderować na edge, a kiedy w regionie blisko bazy danych?
- 25.Jakie istnieją sposoby kompozycji mikrofrontendów?
- 26.Jak wdrożyć zmianę API, nie psując klientów starej wersji?
- 27.Dlaczego po wdrożeniu SPA użytkownicy dostają
ChunkLoadError? - 28.Jak metryki, logi i trace'y uzupełniają się nawzajem?
- 29.Czym jest budżet błędów (error budget)?
- 30.Czym jest wzorzec Bulkhead (grodzie)?
- 31.Dlaczego ważne jest patrzenie na p99 opóźnienia, a nie tylko na średnią?
- 32.Jak połączyć cache'owanie HTML na CDN z personalizacją (imię użytkownika, koszyk)?
- 33.Dlaczego udanego przekierowania ze strony płatności nie można uznać za potwierdzenie płatności?
- 34.Jak sprawdzić autentyczność przychodzącego webhooka?
- 35.Dlaczego indeks wyszukiwania często aktualizuje się asynchronicznie, a nie w tej samej transakcji?
- 36.Jak atomowo zaktualizować bazę danych i wysłać zdarzenie do kolejki?
- 37.Serwis musi obsłużyć 10 mln aktywnych użytkowników dziennie po 20 żądań. Jakie jest średnie obciążenie?
- 38.Czym projektowanie systemu read-heavy różni się od write-heavy?
- 39.Jak zbudować dashboard analityczny dla milionów zdarzeń, by otwierał się szybko?
- 40.Jak zaprojektować system powiadomień (e-mail, push, in-app)?
- 41.Jak oddawać wynik ciężkiej operacji (eksport raportu trwający 5 minut)?
- 42.Jak frontend może obliczać feature flags bez migotania interfejsu?
- 43.Co minimalizować w logach i analityce ze względu na prywatność?
- 44.Dlaczego podpisane linki do prywatnych plików robi się krótkotrwałymi?
- 45.Czym projektowanie ze ścisłą spójnością różni się dla salda bankowego i licznika polubień?
- 46.Czym są hedged requests i kiedy są przydatne?
- 47.Jak zapewnić działanie strony, jeśli padł serwis rekomendacji?
- 48.Jak określić wymagania co do przechowywania wiadomości czatu przez 5 lat dla 1 mln użytkowników?
- 49.Czym odporność na awarie active-passive różni się od active-active?
- 50.Dlaczego odpowiedź API dla klientów mobilnych warto projektować z myślą o długim życiu starych wersji?
- 51.Czy dostarczanie wiadomości „dokładnie raz” (exactly-once) jest osiągalne w systemie rozproszonym?
- 52.Jedno konto celebryty dostaje miliony zapisów, przeciążając swoją partycję. Co pomoże?
- 53.Jakie są typowe opcje izolacji najemców w wielonajemczym SaaS?
- 54.Jaka struktura danych sprawia, że wyszukiwanie pełnotekstowe jest szybkie?
- 55.Jak tanio przechowywać metryki z miliardami punktów?
- 56.Jak zaimplementować tablicę wyników gry w czasie rzeczywistym?
- 57.Co daje identyfikator w stylu Snowflake w porównaniu z losowym UUIDv4?
- 58.Dlaczego w replikowanym magazynie z N=3 wybiera się R=2 i W=2?
- 59.Dlaczego dwufazowy commit rzadko stosuje się między mikroserwisami?
- 60.Czym jest load shedding (zrzucanie obciążenia)?
- 61.Dlaczego funkcje serverless mają skoki opóźnień po okresach bezczynności?
- 62.Po awarii serwera WebSocket wszyscy klienci łączą się ponownie naraz i znów go przewracają. Jak temu zapobiec?
- 63.Dlaczego systemy płatności używają niemutowalnej księgi z podwójnym zapisem zamiast mutowalnej kolumny
balance? - 64.Jak spełnić żądanie „prawa do bycia zapomnianym”, gdy dane osobowe są w niemutowalnych logach zdarzeń i kopiach zapasowych?
- 65.Jak zmienić nazwę kolumny w bazie bez przestoju?
- 66.Co oznaczają RPO i RTO w odtwarzaniu po awarii?
- 67.Czym jest chaos engineering?
- 68.Jak wymogi rezydencji danych (np. dane z UE zostają w UE) wpływają na architekturę?
- 69.1 mln wyświetleń wideo dziennie po 50 MB - jaka mniej więcej średnia przepustowość wychodząca jest potrzebna?
- 70.Usługa obsługuje 1000 żądań/s ze średnim opóźnieniem 200 ms. Ile żądań jest średnio w trakcie obsługi?
- 71.Dlaczego rozproszona blokada potrzebuje tokenów fencing?
- 72.Do czego służy Change Data Capture (CDC)?
- 73.Dashboard wykonuje ciężką agregację przy każdym ładowaniu strony. Jakie jest typowe rozwiązanie?
- 74.Jak rozwijać schematy zdarzeń lub wiadomości bez psucia konsumentów?
- 75.Dlaczego przypisanie użytkowników WebSocket do konkretnego serwera komplikuje wdrożenia?