Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Testowanie
Testowaniehard

Jak testujesz kod asynchroniczny lub współbieżny?

Tagi
#async#concurrency#determinism
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Używaj deterministycznego czasu, awaituj zakończenie i asercje na rezultatach. Dla współbieżności testuj niezmienniki, używaj kontrolowanych schedulerów i unikaj sleepów.

Odpowiedź zaawansowana

Głębiej

Stabilność daje deterministyczność:

  • Używaj fake timerów lub wirtualnych zegarów.
  • Awaituj całą pracę async i opróżniaj kolejki.
  • Dla współbieżności testuj niezmienniki (brak utraty danych, duplikatów).
  • Stosuj stress testy dla większej liczby interleavings.

Przykłady

Wzorzec testu async:

await doWork();
await flushJobs();
expect(state).toEqual(...)

Typowe pułapki

  • Sleep zamiast czekania na warunek.
  • Brak await (testy przechodzą błędnie).
  • Poleganie na realnym czasie lub sieci.

Pytania uzupełniające na rozmowie

  • Jak deterministycznie testujesz race conditions?
  • Kiedy używasz stress testów zamiast unitów?
  • Jak testujesz idempotencję przy współbieżności?

Powiązane pytania

Systemy operacyjne
Co powoduje deadlocki i jak im zapobiegać?
#deadlock#locks#concurrency
Systemy operacyjne
Procesy vs wątki — jaka jest różnica i kiedy to ma znaczenie?
#processes#threads#concurrency
JavaScript
Co robi Promise.all i kiedy go użyć?
#promises#async
JavaScript
Jak działają Promise i czym różnią się od callbacków?
#promises#async
JavaScript
Czym jest event loop i czym różnią się microtaski od macrotasków?
#event-loop#async
PostgreSQL
MVCC w Postgresie: dlaczego odczyty nie blokują zapisów?
#postgres#mvcc#concurrency