Scenariusze

 0    18 schede    nowakowskilukasz12
Scarica mp3 Stampa Gioca Testa il tuo livello
 
Domanda język polski Risposta język polski
Endpoint API działa 5 sekund. Jak to diagnozujesz?
inizia ad imparare
Sprawdzam logi/APM czy problem jest w kodzie aplikacji czy w zależności (baza, zewnętrzne API), włączam profiler/query log, patrzę na EXPLAIN wolnych zapytań i liczbę zapytań (N+1), dopiero potem optymalizuję konkretne miejsce.
API nagle zaczyna zwracać 500. Co sprawdzasz najpierw?
inizia ad imparare
Logi aplikacji z ostatnich minut, czy był właśnie deploy lub zmiana configu, status zależności (baza, cache, kolejka, zewnętrzne API), i czy da się to odtworzyć na staging.
Masz N+1 w Eloquent. Jak je znajdujesz i naprawiasz?
inizia ad imparare
Włączam DB: enableQueryLog() albo Laravel Debugbar, widzę powtarzające się zapytania per wiersz, naprawiam przez eager loading with() dla konkretnej relacji, w testach zabezpieczam licznik zapytań.
Dwie osoby jednocześnie rezerwują ten sam termin. Jak zapobiegasz podwójnej rezerwacji?
inizia ad imparare
Unique constraint na kolumnie termin/slot w bazie jako ostateczna gwarancja, plus pesymistyczne blokowanie (SELECT ... FOR UPDATE) albo optymistyczne blokowanie z wersją przy samym zapisie rezerwacji.
Endpoint ma zwrócić 100 000 rekordów. Jak go projektujesz?
inizia ad imparare
Nie zwracam wszystkiego naraz - paginacja, najlepiej cursor-based przy dużych zbiorach, streaming/chunking odpowiedzi jeśli to eksport, i limit na rozmiar strony wymuszony po stronie API.
Job w kolejce wykonał się dwa razy. Jak zabezpieczasz operację?
inizia ad imparare
Projektuję job jako idempotentny - np. unique constraint w bazie, sprawdzenie stanu przed wykonaniem operacji, albo klucz idempotencji per żądanie, zamiast zakładać exactly-once delivery.
Zapytanie SQL jest wolne. Jak je optymalizujesz?
inizia ad imparare
Najpierw EXPLAIN, żeby zobaczyć czy używa indeksu (type=ALL to sygnał alarmowy), potem dodaję lub poprawiam indeks pod realny WHERE/ORDER BY, sprawdzam czy nie ma funkcji na kolumnie blokującej indeks, na końcu mierzę różnicę przed i po.
Jak zaprojektować cache dla często odczytywanych, rzadko zmienianych danych?
inizia ad imparare
Cache-aside z Redis - czytam z cache, przy miss czytam bazę i zapisuję wynik z TTL, invaliduję/nadpisuję cache przy zapisie danych źródłowych zamiast czekać na wygaśnięcie TTL.
Kiedy użyć Redis, a kiedy MySQL dla danego problemu?
inizia ad imparare
Redis gdy potrzebna jest bardzo szybka struktura w pamięci (cache, licznik, rate limiting, kolejka, leaderboard) bez twardych gwarancji trwałości, MySQL gdy potrzebna jest trwałość, relacje i transakcyjność ACID.
Kiedy w ogóle użyć kolejki zamiast wykonać coś synchronicznie?
inizia ad imparare
Gdy operacja jest wolna albo niepewna względem czasu odpowiedzi requestu (mail, webhook, generowanie raportu) albo gdy chcemy oddzielić skalowanie producenta od przetwarzania - użytkownik nie powinien czekać na coś, co nie musi być natychmiastowe.
Jak zaimplementować retry z exponential backoff przy wywołaniu zewnętrznego API?
inizia ad imparare
Ograniczona liczba prób (np. 3), rosnące opóźnienie między próbami (np. 1s/2s/4s), retry tylko dla błędów przejściowych (timeout, 5xx), nigdy dla 4xx, docelowo z jitterem żeby uniknąć thundering herd.
Jak zabezpieczyć endpoint API przed nadużyciami?
inizia ad imparare
Autentykacja i autoryzacja na poziomie konkretnego zasobu, nie tylko sprawdzenie czy zalogowany, walidacja wejścia, rate limiting per user/IP i logowanie prób bez ujawniania szczegółów w treści błędu.
Jak obsłużyć race condition przy równoległej aktualizacji tego samego rekordu?
inizia ad imparare
Pesymistyczne blokowanie gdy konflikty są częste (SELECT ... FOR UPDATE), optymistyczne blokowanie (kolumna wersji) gdy konflikty są rzadkie - w obu przypadkach unikam wzorca odczytaj-sprawdź-zapisz bez blokady.
Jak zaprojektować idempotentny endpoint, np. tworzenie płatności?
inizia ad imparare
Klient przesyła idempotency key w nagłówku, serwer sprawdza czy już przetworzył request z tym kluczem i jeśli tak, zwraca zapisany wcześniej wynik zamiast wykonywać operację ponownie.
Jak diagnozujesz problem na produkcji krok po kroku?
inizia ad imparare
Logi i monitoring żeby zlokalizować zakres problemu, sprawdzenie korelacji z deployem lub zmianą configu, próba reprodukcji na mniejszym środowisku, szybki hotfix lub rollback, dopiero potem pełna root cause analysis.
Co robisz zaraz po nieudanym deployu na produkcji?
inizia ad imparare
Szybka ocena czy szybciej naprawić do przodu czy zrobić rollback, komunikacja do zespołu o stanie, rollback jeśli błąd jest krytyczny, dopiero potem analiza przyczyny zanim spróbuję ponownie.
Jak zaprojektować transakcję obejmującą kilka operacji zapisu?
inizia ad imparare
Grupuję operacje w jedną transakcję bazodanową tak, żeby były atomowe, trzymam transakcję jak najkrótszą i unikam w niej wywołań zewnętrznych API czy długich operacji.
Redis przestaje działać. Co dzieje się z aplikacją i jak się zabezpieczyć?
inizia ad imparare
Zależy od roli - jako cache aplikacja robi fallback do bazy (cache-aside), jako session store/kolejka to twardy błąd. Warto mieć Sentinel/replikację i timeouty + połączenia zamiast wieszania requestu.

Devi essere accedere per pubblicare un commento.