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.
- Docker
- Compose
- GitHub Actions
- Wdrożenia
- Kubernetes
Pytania według poziomu
Junior
Podstawowe pojęcia i składnia · 50 pytań
Middle
Praktyka, niuanse i optymalizacja · 50 pytań
Senior
Architektura, mechanizmy wewnętrzne, przypadki brzegowe · 50 pytań
Przykładowe pytania
Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.
Docker i CI/CD · Junior
- 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.
- 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.
- Czym jest Dockerfile?
Poprawna odpowiedź: Plikiem tekstowym z krokami budowania obrazu
Każda instrukcja (
FROM,COPY,RUN,CMD...) opisuje krok budowania.docker buildje wykonuje i tworzy obraz. - Co robi
FROM node:22-alpinew 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.
Docker i CI/CD · Middle
- 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
builderinstaluje zależności dev i kompiluje; etap końcowy kopiuje tylko wynik przezCOPY --from=builder. Obrazy są mniejsze i bezpieczniejsze. - Dlaczego ten Dockerfile przeinstalowuje wszystkie zależności przy każdej zmianie kodu?
``
dockerfile COPY . . RUN npm ciPoprawna odpowiedź: Zmiana dowolnego pliku unieważnia
COPY . .inpm ciUnieważnianie cache jest kaskadowe: gdy warstwa się zmieni, przebudowuje się każda kolejna. Skopiuj
package.jsoni lockfile, uruchomnpm ci, a dopiero potem skopiuj resztę. - Po co łączyć
apt-get updateiapt-get installw jednymRUN?Poprawna odpowiedź: Warstwa
updatez cache instalowałaby pakiety ze starego indeksuJeśli
updatejest osobną warstwą w cache, późniejsza zmiana wiersza instalacji użyje starego indeksu pakietów. Czyść też/var/lib/apt/listsw tym samymRUN. - Dlaczego
RUN rm -rf /tmp/buildw 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.
Docker i CI/CD · Senior
- 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.
- 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.
- 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.
- 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.
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 →