Pytania rekrutacyjne z projektowania API (Middle) z odpowiedziami
75 pytań na rozmowę rekrutacyjną z tematu Projektowanie API (Middle) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.
Rozwiąż ten test- 1.Jak zamodelować „anuluj zamówienie” w REST API?
- 2.Kiedy relacja powinna być osobnym zasobem, np.
/users/42/memberships? - 3.Jak JSON Merge Patch traktuje
null? - 4.Jak wygląda JSON Patch (RFC 6902)?
- 5.Jak REST API może pozwolić klientom wczytać powiązane zasoby w jednym żądaniu?
- 6.Co dają klientom sparse fieldsets (
?fields=id,name,email)? - 7.Dlaczego API może używać UUID lub nieprzezroczystych ID tekstowych zamiast rosnących liczb w URL-ach?
- 8.Jak API powinno reprezentować pieniądze?
- 9.Jak raportować błędy walidacji kilku pól?
- 10.Dlaczego kody błędów w body powinny być stabilne i udokumentowane?
- 11.Jaki status jest właściwy dla poprawnie zbudowanego żądania łamiącego regułę biznesową, np. „nie można wysłać nieopłaconego zamówienia”?
- 12.Czy API powinno zwrócić 403 czy 404, gdy użytkownik żąda prywatnego zasobu innego użytkownika?
- 13.Dlaczego paginacja offsetowa daje duplikaty lub luki, gdy podczas przeglądania dochodzą elementy?
- 14.Dlaczego zwracanie łącznej liczby z każdą stroną bywa problemem?
- 15.Co jest ważne dla kolejności sortowania w paginacji kursorowej?
- 16.Jak API może oferować elastyczne filtrowanie, nie stając się językiem zapytań, którego nikt nie zoptymalizuje?
- 17.Jak zwykle wyglądają parametry sortowania?
- 18.Jak działa klucz idempotencji po stronie serwera?
- 19.Dwóch klientów edytuje ten sam dokument. Jak API może zapobiec cichemu nadpisaniu jednego przez drugiego?
- 20.Co oszczędza
304 Not Modified? - 21.Dlaczego ponowienia są niebezpieczne dla operacji nieidempotentnych bez ochrony?
- 22.Co oznacza
Cache-Control: private, max-age=60? - 23.Czym różni się
no-cacheodno-store? - 24.Na co pozwala
stale-while-revalidate? - 25.Dlaczego nagłówek
Varyjest ważny przy cache'owaniu odpowiedzi API? - 26.Co jest zmianą niekompatybilną w REST API?
- 27.Czym jest prawo Hyruma (Hyrum's Law)?
- 28.Jakie są kompromisy wersjonowania w URL-u (
/v2/...) wobec wersjonowania w nagłówku? - 29.Jak zmienić format pola bez nowej wersji głównej?
- 30.Czym różni się uwierzytelnianie od autoryzacji w API?
- 31.Co opisuje OWASP API1:2023 Broken Object Level Authorization?
- 32.Czym jest Broken Object Property Level Authorization (OWASP API3:2023)?
- 33.Dlaczego tokeny dostępu powinny być krótko żyjące?
- 34.Do czego służą scope'y OAuth?
- 35.Jak uwierzytelniać wywołania między serwisami wewnątrz systemu?
- 36.Dlaczego limity żądań warto stosować per klient (klucz API lub użytkownik), a nie tylko per IP?
- 37.Co obejmuje OWASP API4:2023 Unrestricted Resource Consumption?
- 38.Jak dobrze zachowuje się klient po otrzymaniu 429 lub 503?
- 39.Jak odbiorca webhooka powinien sprawdzić, że żądanie naprawdę pochodzi od dostawcy?
- 40.Dlaczego handlery webhooków powinny być idempotentne?
- 41.Dlaczego endpoint webhooka powinien szybko odpowiadać i przetwarzać zdarzenie asynchronicznie?
- 42.Czy można zakładać, że zdarzenia webhooków przychodzą po kolei?
- 43.Dlaczego cache HTTP jest trudniejszy z GraphQL niż z REST?
- 44.Czym błędy GraphQL różnią się od błędów REST?
- 45.Jak GraphQL zwykle radzi sobie z ewolucją schematu?
- 46.Kiedy tRPC to dobry wybór?
- 47.Co opisuje AsyncAPI?
- 48.Jak API powinno obsłużyć operację zbiorczą, w której część elementów się nie udała?
- 49.Dlaczego duży eksport może być lepszy jako zadanie asynchroniczne niż pojedynczy GET?
- 50.Jak klienci mogą wysyłać duże pliki bez przepuszczania ich przez serwer API?
- 51.Co sprawia, że dokumentacja API jest naprawdę użyteczna?
- 52.Jak automatycznie wyłapywać niekompatybilne zmiany w specyfikacji OpenAPI?
- 53.Czym są testy kontraktowe między klientem a API?
- 54.Po co generować SDK lub klientów ze specyfikacji OpenAPI?
- 55.Jak API powinno obsługiwać strefy czasowe w danych wejściowych i wyjściowych?
- 56.Jakie jest rozsądne domyślne zachowanie dla nieznanych parametrów zapytania?
- 57.Dlaczego odpowiedzi z listami powinny mieć stabilną domyślną kolejność?
- 58.Co zmienia w projektowaniu API podejście „Backend for Frontend”?
- 59.Czym zwykle zajmuje się bramka API (gateway)?
- 60.Jak API powinno udostępniać akcje na wielu elementach, np. „zarchiwizuj 500 wiadomości”?
- 61.Po co dołączać correlation ID do odpowiedzi z błędem?
- 62.Jakie jest ryzyko ujawniania klientom API wewnętrznych komunikatów błędów (np. SQL)?
- 63.Kiedy
PUTz pełnym dokumentem może być lepszy niżPATCH? - 64.Dlaczego odpowiedzi API bez dokumentacji nie powinny używać null dla pól „nie dotyczy” i „nieznane”?
- 65.Czym jest wersjonowanie przez media type?
- 66.O co prosi nagłówek żądania
Prefer: return=minimal? - 67.Dlaczego API nie może odpowiadać
Access-Control-Allow-Origin: *na żądania przeglądarki z danymi uwierzytelniającymi? - 68.SPA w przeglądarce uwierzytelnia się do swojego API ciasteczkami. Jakiej dodatkowej ochrony potrzeba w porównaniu z bearer tokenami?
- 69.Jak dostawca API powinien przechowywać wydawane klucze API?
- 70.Kiedy
POST /orders/searchz body JSON jest dopuszczalny zamiast GET z parametrami zapytania? - 71.Do czego służy konwencja
/users/me(lub/me)? - 72.Kiedy API powinno zwrócić
410 Gonezamiast404? - 73.Jaki status pasuje do body żądania większego, niż pozwala API?
- 74.Dlaczego stabilne
operationIdw OpenAPI ma znaczenie? - 75.Jak wersjonować dane webhooków?