Jak chronić system przed atakiem powtórkowym podczas projektowania publicznego API REST?
Python
Jaka jest różnica między strategiami blokowania SELECT ... FOR UPDATE a SELECT ... FOR SHARE? Opisz praktyczny przypadek dla każdej z nich.
Jaka jest różnica między asyncio.gather a asyncio.as_completed? W jakich sytuacjach jedna metoda jest lepsza od drugiej?
Czym jest problem 'index bloat' w PostgreSQL, dlaczego występuje z powodu mechaniki MVCC i jak sobie z nim radzić?
Czym różni się wzorzec CQRS (Command Query Responsibility Segregation) od tradycyjnej architektury CRUD? Kiedy jego wdrożenie jest uzasadnione?
Jak jest zorganizowany mechanizm zmiennych kontekstowych (contextvars) i dlaczego zwykły threading.local nie działa w coroutine asyncio?
Czym jest anomalia odczytu niepowtarzalnego i na jakim minimalnym poziomie izolacji transakcji całkowicie znika w PostgreSQL?
Opisz scenariusz, w którym garbage collector Pythona nie może automatycznie usunąć obiektów z pamięci, nawet jeśli w kodzie nie ma już odwołań do nich.
Czym jest luka bezpieczeństwa typu Server-Side Request Forgery (SSRF) i jak powinien programista backend walidować dane wejściowe, aby jej zapobiec?
Jak zaprojektować rozproszony blokadę za pomocą Redis? Jakie przypadki brzegowe należy rozważyć, aby uniknąć warunków wyścigu?
Czym jest prawo Amda i jak jest stosowane w ocenie efektywności skalowania backendu?
Opisz różnicę między strategiami dostarczania wiadomości at-least-once i exactly-once w brokerach, na przykład Kafka. Jakie wymagania to stawia dla backendu Pythona?
Jaki jest wewnętrzny mechanizm słów kluczowych async i await w Pythonie? Co się dzieje na poziomie generatorów?
W jaki sposób wzorzec Outbox pomaga zapewnić, że wiadomość w brokerze wiadomości takim jak RabbitMQ jest wysyłana tylko wtedy, gdy transakcja w relacyjnej bazie danych została pomyślnie zakończona?
Jaka jest różnica między autoryzacją opartą na JWT z listami czarnymi tokenów a stateless JWT? Jakie są kompromisy w bezpieczeństwie i wydajności?
Jak napisać własną metaklasę, która automatycznie dodaje prefiks do wszystkich metod tworzonej klasy?
Jak rozwiązać architektonicznie problem nadmiarowego zapisu (write amplification) podczas korzystania z baz danych NoSQL przy dużej intensywności aktualizacji?
Wyobraź sobie sytuację: w PostgreSQL wykonywane jest ciężkie zapytanie analityczne SELECT COUNT(*) FROM large_table. Czy indeks na kluczu głównym przyspieszyłby to zapytanie? Dlaczego?