Pytania rekrutacyjne Node.js (Senior) z odpowiedziami
75 pytań na rozmowę rekrutacyjną z tematu Node.js (Senior) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.
Rozwiąż ten test- 1.Jak zorganizowana jest sterta V8 na potrzeby odśmiecania?
- 2.Kontener ma 2 GB pamięci, ale proces Node.js pada z „JavaScript heap out of memory” przy około 1,4 GB. Co sprawdzić?
- 3.Który wzorzec to klasyczna przyczyna wycieku pamięci w serwerze Node.js?
- 4.Jak znaleźć, co wycieka w procesie Node.js?
- 5.Dlaczego domknięcie może nieoczekiwanie zatrzymywać pamięć?
- 6.Czym są ukryte klasy (shapes) w V8 i dlaczego są ważne?
- 7.Co
process.memoryUsage()raportuje jakorss? - 8.Do czego
WeakRefiFinalizationRegistrysię NIE nadają? - 9.Jak znaleźć funkcje najbardziej obciążające CPU w warunkach zbliżonych do produkcji?
- 10.Opóźnienie p99 jest wysokie, ale średnie zużycie CPU niskie. Co może być przyczyną?
- 11.Co zwykle sprawia, że wolne wyrażenie regularne blokuje serwer Node.js (ReDoS)?
- 12.Dlaczego
JSON.stringifydużej odpowiedzi może być wąskim gardłem i co pomaga? - 13.Kiedy zwiększenie
UV_THREADPOOL_SIZEnaprawdę pomaga? - 14.Dlaczego
dns.lookupmoże być ukrytym wąskim gardłem dla wychodzących żądań HTTP? - 15.Jak dobrze współdzielić duże dane binarne między worker threads bez kopiowania?
- 16.Dlaczego serwer powinien używać puli worker threads zamiast tworzyć nowego workera na każde żądanie?
- 17.Za load balancerem (np. AWS ALB z idle timeout 60 s) klienci czasem dostają błąd 502. Jaka jest częsta przyczyna?
- 18.Dlaczego
server.close()może nie skończyć się podczas graceful shutdown? - 19.Jak serwer powinien ograniczać rozmiar body przychodzących żądań?
- 20.Przed czym chroni
server.requestTimeout? - 21.Co zmienia HTTP/2 dla API Node.js używanego przez przeglądarki?
- 22.Czym jest
undiciw Node.js? - 23.Co daje generator asynchroniczny w
pipeline? - 24.Co kontroluje
highWaterMark? - 25.Jak strumienie Node.js współpracują z Web Streams (
ReadableStream)? - 26.Przetwarzając strumień uploadu, wywołujesz funkcję asynchroniczną dla każdego kawałka, nie czekając na nią. Jakie jest ryzyko?
- 27.Czym jest prototype pollution?
- 28.Jak bezpiecznie zwrócić plik, o który użytkownik prosi z katalogu
uploads? - 29.Twoje API pobiera URL podany przez użytkownika (np. do podglądu linków). Przed jakim atakiem musisz się chronić?
- 30.Co robi model uprawnień Node.js (
--permission)? - 31.Który środek najbardziej pomaga przeciw złośliwym wersjom pakietów (atakom na łańcuch dostaw)?
- 32.Dlaczego
eval(lubnew Function) na danych użytkownika jest niebezpieczne nawet w „sandboksie” jakvm? - 33.Przed jakim problemem na poziomie HTTP, poza błędami aplikacji, trzeba chronić API Node.js?
- 34.Dlaczego proces Node.js w kontenerze powinien działać jako użytkownik inny niż root?
- 35.Po co dodawać losowy jitter do wykładniczego backoffu przy ponawianiu nieudanych wywołań?
- 36.Co robi circuit breaker?
- 37.Jaki problem rozwiązuje wzorzec transactional outbox?
- 38.Kolejka wiadomości dostarcza je „co najmniej raz”. Co muszą robić konsumenci?
- 39.Czym jest cache stampede i jak mu zapobiec?
- 40.Który algorytm limitowania żądań pozwala na krótkie skoki przy zachowaniu średniego tempa?
- 41.Dlaczego długą lub obciążającą CPU pracę warto wynieść poza ścieżkę żądania HTTP?
- 42.Jak nie dopuścić, żeby wolna zależność położyła cały serwis (wzorzec bulkhead)?
- 43.Dlaczego zespół może wybrać modularny monolit zamiast mikroserwisów dla nowego produktu w Node.js?
- 44.Co OpenTelemetry daje serwisom Node.js?
- 45.Jakie metryki tworzą metodę RED monitorowania serwisu?
- 46.Do czego służy
diagnostics_channel? - 47.Czym jest raport diagnostyczny (
--report-on-fatalerror,process.report.writeReport())? - 48.Proces Node.js nie kończy się po zakończeniu głównego skryptu. Jaka jest zwykle przyczyna?
- 49.Dlaczego
uncaughtException+ „zaloguj i działaj dalej” to zły wzorzec? - 50.Na co pozwalają hooki dostosowywania modułów (
module.register,registerHooks)? - 51.Czym jest „dual package hazard”?
- 52.Czym jest Node-API (N-API)?
- 53.Czym są Single Executable Applications (SEA) w Node.js?
- 54.Co daje kodowi Node.js deklaracja
using(explicit resource management)? - 55.Jak Node.js traktuje
enuminamespaceprzy uruchamianiu TypeScriptu z usuwaniem typów? - 56.Dlaczego izolacja testów ma znaczenie w
node --testi jak domyślnie działa? - 57.Do czego przydaje się start ze snapshotu (
--build-snapshot)? - 58.Uruchamiając Node.js w Kubernetes, czy używać modułu
clusterw każdym podzie? - 59.Dlaczego poziomo skalowany serwis Node.js powinien być bezstanowy?
- 60.Jaki jest główny kompromis między round-robin w
clustera rozdzielaniem połączeń przez system? - 61.Jak nie dopuścić, żeby jeden tenant lub klient wyczerpał współdzielone API Node.js?
- 62.Twój serwis przy każdym żądaniu wywołuje trzy API i może przetrwać awarię jednego. Jakie podejście pasuje?
- 63.Jak DataLoader rozwiązuje problem N+1 w serwerze GraphQL?
- 64.Kiedy gRPC pasuje lepiej niż REST/JSON?
- 65.Jak klucze idempotencji sprawiają, że żądania POST można bezpiecznie ponawiać?
- 66.Jak rozwijać publiczne API bez psucia istniejących klientów?
- 67.Dlaczego proces Node.js działający jako PID 1 w kontenerze potrzebuje strategii dla
SIGINT/SIGTERM? - 68.Jak rozsądnie uruchamiać zadania cykliczne (cron) w serwisie Node.js z kilkoma instancjami?
- 69.Dlaczego
AsyncLocalStoragemoże tracić kontekst w niektórych bibliotekach i co to naprawia? - 70.Klient rozłącza się, gdy twój handler wykonuje wolne zapytanie do bazy. Jak nie marnować pracy?
- 71.Skalujesz do 40 instancji, każda z pulą 20 połączeń, a PostgreSQL zaczyna odrzucać połączenia. Co pomoże?
- 72.Dwa żądania jednocześnie czytają rekord, zmieniają go i zapisują, a jedna zmiana ginie. Jak zapobiega temu blokowanie optymistyczne?
- 73.Co oznacza load shedding dla przeciążonego serwisu Node.js?
- 74.Jak wdrożyć nową wersję API Node.js bez gubienia żądań?
- 75.Serwis wykonuje ciężkie przetwarzanie obrazów lub wideo. Które podejście jest najrozsądniejsze w stosie Node.js?