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