← Wszystkie tematy

Pytania rekrutacyjne z Dockera i CI/CD z odpowiedziami

Kontenery i obrazy, Dockerfile i cache warstw, budowanie multi-stage, wolumeny i sieci, Docker Compose, pipeline'y CI w GitHub Actions i GitLab CI, strategie wdrożeń, podstawy Kubernetesa i bezpieczeństwo łańcucha dostaw.

225 pytań na rozmowę rekrutacyjną z tematu Docker i CI/CD z odpowiedziami i wyjaśnieniami - poziomy Junior, Middle i Senior. Przykładowe pytania, testy online i zadania z kodu.

Pytania według poziomu

Przykładowe pytania

Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.

Docker i CI/CD · Junior

  1. Czym kontener różni się od maszyny wirtualnej?

    Poprawna odpowiedź: Korzysta z jądra hosta zamiast z własnego systemu

    Kontenery to odizolowane procesy na jądrze hosta (namespaces i cgroups), więc startują w milisekundy i zużywają mało pamięci. VM uruchamia cały system gościa na wirtualnym sprzęcie.

  2. Czym obraz różni się od kontenera?

    Poprawna odpowiedź: Obraz to szablon tylko do odczytu; kontener to jego uruchomiona instancja

    Jak klasa i jej obiekty: z jednego obrazu można uruchomić wiele kontenerów. Każdy kontener dodaje na wierzchu obrazu własną cienką warstwę do zapisu.

  3. Czym jest Dockerfile?

    Poprawna odpowiedź: Plikiem tekstowym z krokami budowania obrazu

    Każda instrukcja (FROM, COPY, RUN, CMD...) opisuje krok budowania. docker build je wykonuje i tworzy obraz.

  4. Co robi FROM node:22-alpine w Dockerfile?

    Poprawna odpowiedź: Ustawia obraz bazowy, od którego zaczyna się budowanie

    Każde budowanie zaczyna się od obrazu bazowego, tu oficjalnego obrazu Node.js 22 na Alpine Linux. Twoje instrukcje dodają na nim warstwy.

Wszystkie 75 pytań z odpowiedziami →

Docker i CI/CD · Middle

  1. Jaka jest główna zaleta budowania wieloetapowego (multi-stage)?

    Poprawna odpowiedź: Narzędzia budowania zostają we wcześniejszych etapach; końcowy obraz ma tylko pliki runtime

    Etap builder instaluje zależności dev i kompiluje; etap końcowy kopiuje tylko wynik przez COPY --from=builder. Obrazy są mniejsze i bezpieczniejsze.

  2. Dlaczego ten Dockerfile przeinstalowuje wszystkie zależności przy każdej zmianie kodu? ``dockerfile COPY . . RUN npm ci

    Poprawna odpowiedź: Zmiana dowolnego pliku unieważnia COPY . . i npm ci

    Unieważnianie cache jest kaskadowe: gdy warstwa się zmieni, przebudowuje się każda kolejna. Skopiuj package.json i lockfile, uruchom npm ci, a dopiero potem skopiuj resztę.

  3. Po co łączyć apt-get update i apt-get install w jednym RUN?

    Poprawna odpowiedź: Warstwa update z cache instalowałaby pakiety ze starego indeksu

    Jeśli update jest osobną warstwą w cache, późniejsza zmiana wiersza instalacji użyje starego indeksu pakietów. Czyść też /var/lib/apt/lists w tym samym RUN.

  4. Dlaczego RUN rm -rf /tmp/build w późniejszej warstwie nie zmniejsza obrazu?

    Poprawna odpowiedź: Wcześniejsze warstwy wciąż zawierają pliki; usunięcie je tylko ukrywa

    Warstwy się sumują. Sprzątaj w tym samym RUN, który utworzył pliki, albo użyj multi-stage, by pliki tymczasowe nie trafiły do końcowego obrazu.

Wszystkie 75 pytań z odpowiedziami →

Docker i CI/CD · Senior

  1. Na jakich mechanizmach jądra opierają się kontenery przy izolacji i limitach zasobów?

    Poprawna odpowiedź: Na namespaces do izolacji i cgroups do limitów zasobów

    Namespaces PID, sieci, montowań, użytkowników i inne dają każdemu kontenerowi własny widok; cgroups ograniczają CPU, pamięć i I/O. Nie ma osobnego jądra, dlatego błędy jądra mają znaczenie.

  2. Jak mają się do siebie Docker, containerd i runc?

    Poprawna odpowiedź: Docker zarządza kontenerami przez containerd; runc je uruchamia

    runc implementuje specyfikację OCI runtime i tworzy proces z namespaces i cgroups. containerd zarządza obrazami i cyklem życia; Kubernetes rozmawia z containerd bezpośrednio, bez Dockera.

  3. Z czego składa się obraz OCI?

    Poprawna odpowiedź: Z manifestu wskazującego konfigurację i listę archiwów tar warstw

    Wszystko jest adresowane treścią przez digest. Obraz wieloplatformowy dodaje indeks wskazujący osobny manifest dla każdego systemu i architektury.

  4. Dlaczego dopisanie jednego wiersza do pliku 2 GB w kontenerze może być wolne?

    Poprawna odpowiedź: Magazyn overlay najpierw kopiuje cały plik do warstwy do zapisu

    Copy-up następuje przy pierwszym zapisie do pliku z niższej warstwy. Dane intensywnie zapisywane (bazy, logi) powinny trafiać do wolumenów, które omijają sterownik magazynu.

Wszystkie 75 pytań z odpowiedziami →

Zadania z kodu

Napisz rozwiązanie prosto w przeglądarce, a testy od razu je sprawdzą. Klasyka rozmów rekrutacyjnych z JavaScriptu (debounce, deepClone, Promise.all, cache LRU), z TypeScriptu (generyki, zawężanie i typy narzędziowe, sprawdza prawdziwy kompilator), logika backendu w Node.js (middleware, limity żądań, kolejki zadań), zapytania SQL w prawdziwym PostgreSQL i z Reacta: komponenty i hooki, takie jak lista zadań, zakładki, useDebounce i useInterval.

Otwórz zadania →